Engineering
Cost SentinelFinOpsMCP

How Cloud Cost Sentinel works: finding AWS waste without guessing

13 min read

Cloud Cost Sentinel reads an AWS account and reports what looks idle, with the evidence behind every call. Here is exactly what it inspects, how a verdict is reached, how confidence is scored, and why it can never delete anything.

What does Cloud Cost Sentinel do?

An AWS account that has been running for a few years carries spend nobody can fully account for. The awkward part is not spotting the expensive resources. It is proving that any specific one is safe to remove.

Cloud Cost Sentinel analyses AWS resource, usage and cost signals to identify infrastructure that may be idle, underused or worth reviewing. It is a read-only analysis tool: it surfaces evidence and a recommended next action, and it never modifies, stops or deletes an AWS resource.

It ships two front doors over one analysis engine:

Both call the same job API and get the same findings. Nothing the button can do is unavailable to an API caller, and nothing the API caller can do is destructive.

Why finding AWS waste is easy and proving it is hard

AWS environments accumulate. A project ends and its stack outlives it. A test environment is created for a week and runs for a year. Something is oversized on day one and never revisited. An owner leaves. Temporary architecture becomes permanent. And cost usually gets reviewed after the bill jumps, not continuously.

Finding an expensive or low-utilisation resource is easy. Deciding whether it is genuinely unnecessary is harder.

That second sentence is the entire design problem. A tool that reports "this volume has low IOPS" has told you nothing you cannot get from a CloudWatch graph. The question a team actually has is whether removing it will break something, and no single metric answers that.

What an AWS cost scan actually looks at

Resource inventory

What exists, its state, its type, its region, and its tags. Each collector is read-only, and a permission denial is captured as a structured note rather than swallowed. That distinction matters: the recurring class of bug in cost tooling is "no WAF found" actually meaning "the call to wafv2:ListWebACLs was denied". A gap is reported as a gap, never as a clean bill of health.

Activity signals

CloudWatch metrics over an observation window, defaulting to 30 days: CPU and network for instances, connections for databases, processed bytes for gateways and endpoints, request counts for load balancers and distributions, target health, last-accessed dates for secrets, and attachment state for volumes and addresses.

Cost signals

Every resource carries an estimated monthly cost from a published on-demand rate table, marked cost_basis: "estimate". Those numbers rank findings and produce the potential-savings total. They are not your invoice. Cost Explorer remains authoritative for what you actually spent, and per-resource billing granularity is an AWS setting that most accounts leave off.

Which AWS resource types are covered

Fifteen resource kinds, across seven categories.

ResourceWhat is checkedTypical finding
EC2 instanceCPU, network, stopped durationidle or abandoned instance
EBS volumeattachment plus the health of what it is attached tovolume billing behind a dead instance
EBS snapshotage, whether it backs an AMI, source volumeorphaned snapshot
RDS instanceconnections, CPUunderused database
Elastic IPassociation, next-hop ENI or instance usageidle public IPv4
NAT Gatewaybytes processed per daygateway billing with no egress
Load balancertarget count, healthy targets, requestsbalancer serving nothing
VPCdormant or empty, always advisoryenvironment worth reviewing
VPC endpointinterface type, bytes processedendpoint with no traffic
Site-to-site VPNtunnel state, bytesdead tunnel still billing
Transit Gateway attachmentbytes per attachmentunused attachment
Client VPN endpointtarget networks, active connectionsendpoint with no clients
Secrets Manager secretlast accessed, rotation statestale secret
CloudFront distributionenabled state, requestsdisabled or silent distribution
WAF web ACLassociations, next-hop health, requestsACL protecting nothing

Anything outside that list is not inspected. A clean scan is not a claim that your bill is optimised. S3, Route 53, CloudWatch itself, ECS, EKS, ElastiCache, DynamoDB and OpenSearch are not yet inventoried, and spend concentrated there will not appear as findings.

How a finding is produced: the two-level rule

Every verdict runs through the same shape:

Resource state  +  Next-hop health  +  Observed activity  +  Observation window
                              |
                              v
                     Candidate finding
                              |
                     Evidence  ->  Confidence
                              |
                              v
                     Recommended next action

The rule the analysers are held to is that a level-1 signal is never sufficient. A level-1 signal is a point-in-time state or the mere existence of an attachment: "the EIP is associated", "the volume is attached", "the web ACL has an association". Each of those is a plausible reason to stop looking, and each is wrong on its own.

Level-2 asks three further questions:

  1. Next-hop health. Is the thing it is attached to itself alive? An Elastic IP on a stopped instance and a web ACL on a disabled CloudFront distribution are both dead chains.
  2. Usage. Over the window, did it do anything? Metrics near zero mean idle, whatever the state field says.
  3. Recency and duration. How long has it been in this state? A box stopped this morning is a weekend shutdown. A box stopped for 90 days is abandoned. The default grace period is 14 days.
Low usage is not the same as safe to delete. Sentinel never treats it as such.

When the deciding signal is missing rather than negative, the verdict is investigate and the finding records a monitoring gap. Absence of evidence is reported honestly instead of being scored as evidence of absence.

What thresholds decide that a resource is idle?

The defaults are deliberately conservative, because the expensive failure mode is flagging something that is in use:

Note the conjunctions. EC2 idle requires low CPU *and* a quiet network, not either one.

How is confidence calculated?

Each finding carries a confidence between 0 and 1, reflecting how strongly the signals agree:

High confidence

Multiple independent signals point the same way over the full window, and nothing contradicts them. An unassociated Elastic IP scores around 0.9: there is no interpretation of "attached to nothing" that means "in use".

Medium confidence

The activity evidence is there but the context is not. An idle NAT Gateway sits around 0.6, because the metric proves no egress happened and does not prove no subnet depends on the route.

Low confidence

One weak signal, or conflicting signals. Conflicts resolve to investigate rather than to a verdict.

Two rules then apply to every finding, in one shared stage rather than per resource type:

Confidence measures the strength of the evidence. It is not permission to delete.

Why is Cloud Cost Sentinel read-only?

Analysis and action are separated on purpose, and the separation is enforced by structure rather than by policy:

Remediation stays where it belongs: in your change process, with your approvals.

What does an AWS cost finding contain?

Every finding is the same structured record, which is what makes it equally readable by a person and an agent:

Evidence is written as a claim you can check, not a score you have to trust:

Attached to instance i-0demo44444444444 which has been STOPPED for 90 days. The volume still bills around $6.27 per month. Snapshot then delete if the box is abandoned; deleting an attached volume is data loss.

How does this differ from AWS Compute Optimizer and Cost Explorer?

Sentinel is not a replacement for AWS's own cost tooling. It answers a different question, and the four questions are worth keeping distinct:

The questionAnswered by
Where did the money actually go?Cost Explorer, which stays authoritative for billed spend
Is this instance or volume the right size for its load?AWS Compute Optimizer, which recommends rightsizing from utilisation history
Does this account match a known waste pattern?Trusted Advisor, whose fuller cost check set sits behind a Business or Enterprise support plan
Is this specific resource doing anything useful, and what is the evidence?Cloud Cost Sentinel

The practical differences follow from that split. Rightsizing tools answer "make it smaller"; Sentinel answers "should this exist at all", which is the question behind most of a legacy bill. Its coverage leans towards the always-on network and edge resources that quietly bill without appearing in utilisation reports: NAT Gateways, Elastic IPs, load balancers, VPC endpoints, VPN and Transit Gateway attachments, WAF web ACLs and CloudFront distributions.

And the output shape differs. A verdict, a confidence score, the evidence behind it, the monitoring gaps that remain, and a recommended action arrive in one structured record per resource, which is what makes the same result readable by a console and by an agent over MCP without a second pass.

How a team uses Cloud Cost Sentinel

  1. Create the read-only role from the generated CloudFormation link.
  2. Run a scan. It typically finishes in one to three minutes.
  3. Work the ranked list from the top, since it is sorted by estimated monthly savings.
  4. Read the evidence on each finding rather than the verdict alone.
  5. Validate dependencies for anything you intend to remove.
  6. Act through your normal change process.
  7. Re-scan to confirm the resource is gone and the saving is real.

How an AI agent uses Cloud Cost Sentinel through MCP

An agent asked to investigate AWS cost calls run_cost_scan, polls get_job roughly every ten seconds, then calls list_cost_findings, optionally filtered by verdict. It reasons over structured findings instead of scraping a dashboard, and the agent reference documents the full surface.

Three deliberate constraints shape that path:

Pacing is published rather than discovered: the free plan allows 10 scans per month, an API key is capped at 5 scan jobs per day, and a repeat scan of the same account inside 6 hours returns the existing result instead of burning quota. Demo mode runs the whole flow against sample data with no AWS account linked.

Example scenario

Example scenario. A company winds down a project and deletes the application, but part of the AWS environment stays up. Months later the bill is still elevated and nobody is sure which pieces belong to what. A scan returns a load balancer with zero healthy targets and no processed bytes over 30 days, an unassociated Elastic IP, a NAT Gateway that moved almost nothing, and a volume attached to an instance stopped for three months. The first two carry high confidence and are straightforward. The NAT Gateway is marked investigate, because removing it breaks outbound routing if anything in those subnets still needs egress. The team checks the routing, then removes it through a normal change.

What Cloud Cost Sentinel does not do

When to use it, and when not to rely on it alone

Good fits

A bill creeping upward without an obvious cause. Post-migration and post-project cleanup. Regular cloud hygiene on a schedule. A pre-budget or pre-rightsizing review. An agent running a periodic cost check and reporting only what changed.

Cases that need a human first

Disaster recovery standby that is idle by design. Seasonal or batch workloads whose window falls outside the observation period. Compliance and archive resources. Legacy systems nobody currently understands. Complex networking where the dependency is a route, not a metric. Anything with sparse but critical usage.

In each of those, low activity is the expected state, and a tool that reads activity alone will be confidently wrong.

Where this fits in TomorrowCentral

TomorrowCentral exposes practical technology capabilities that both people and agents can consume, with one implementation behind both. Cloud Cost Sentinel is the first tool built on that model, which is why its read-only boundary and its structured evidence are product decisions rather than implementation details.

Key takeaways

Run an AWS cost analysis

Demo mode shows the full output with no AWS account linked, and the tool page covers connection setup. To wire it into an agent instead, the MCP and API reference has the endpoint, the tool list and the limits. ITMTB can help validate and implement findings where remediation needs hands.

Frequently asked questions

Is Cloud Cost Sentinel safe to connect to a production AWS account?
Yes. It uses a cross-account IAM role gated by an ExternalId in which every permission is a List, Describe or Get, assumed for short-lived credentials at scan time and discarded afterwards. There is no write permission in the role, so there is nothing destructive to misuse.
Does it delete AWS resources?
No. It is read-only in both modes and for both surfaces. No MCP tool mutates AWS, and a test asserts that no registered tool name contains delete, remove, terminate, stop or destroy. Remediation happens through your own change process.
What AWS permissions does it need?
Read-only access to Cost Explorer, CloudWatch metrics, and Describe or List calls for EC2 and VPC, RDS, Elastic Load Balancing, Secrets Manager metadata, CloudFront and WAF. The CloudFormation template creates the role for you, and deleting the stack revokes access.
Which AWS services does it analyse?
Fifteen resource kinds: EC2 instances, EBS volumes and snapshots, RDS instances, Elastic IPs, NAT Gateways, load balancers, VPCs, VPC endpoints, site-to-site VPN connections, Transit Gateway attachments, Client VPN endpoints, Secrets Manager secrets, CloudFront distributions and WAF web ACLs. S3, Route 53, ECS, EKS, ElastiCache, DynamoDB and OpenSearch are not yet inventoried.
How far back does it look?
The default observation window is 30 days of CloudWatch metrics. Stopped instances are additionally judged on how long they have been stopped, with a 14-day grace period before a shutdown reads as abandoned rather than scheduled.
What does high confidence mean?
Confidence is a score from 0 to 1 measuring how strongly independent signals agree that a resource is not doing useful work. A removable verdict below 0.8 is automatically downgraded to investigate. Confidence describes the strength of the evidence, not permission to delete.
Can my AI agent use it?
Yes. Cloud Cost Sentinel is exposed on the TomorrowCentral MCP server at https://api.tomorrowcentral.com/mcp, authenticated with an API key. An agent runs a scan, polls the job, and reads structured findings. It gains no destructive AWS access in the process.
Does it replace AWS Compute Optimizer or Cost Explorer?
No. Cost Explorer stays authoritative for what you actually spent, and per-resource dollar figures here are rate-table estimates used for ranking. Sentinel adds the cross-signal reasoning that decides whether a resource looks unnecessary, and returns it in a form an agent can act on.
Does it guarantee savings?
No. It reports estimated monthly savings for findings it believes are removable. Those savings are realised only when an approved change is made in your account, and estimates are list-price approximations rather than billed amounts.