Data freshness
Infrawise answers from a snapshot. infrawise analyze reads your cloud account, databases, and IaC files once and caches the result; every MCP tool answers from that cache, and no tool call re-reads AWS. This page is the field reference for how that snapshot’s age is reported.
For how to think about it — where age misleads, and what to do about it — see How Infrawise handles staleness.
The dataHealth block
Section titled “The dataHealth block”Every tool response carries a dataHealth object with a fixed shape. Every key is always present; state lives in values, never in whether a key exists. error and reason are null rather than omitted, so nothing has to be inferred from absence.
| Field | Meaning |
|---|---|
analyzedAt |
ISO timestamp of when the infrastructure was read. null when no analysis is loaded |
ageSeconds |
How long ago that was. null when no analysis is loaded |
suggestRefresh |
true past the configured threshold (6h by default). Also true when no analysis is loaded — never a claim of freshness that cannot be vouched for |
refreshWith |
The command that refreshes: infrawise analyze. Always present; states how, never whether |
requestedMaxAgeSeconds |
Echoes the maxAgeSeconds you passed. null when you passed none |
withinRequestedAge |
Whether the data meets it. null when no tolerance was requested |
region / profile |
Which account context produced the snapshot. null when unknown |
sources |
One entry per source the answer rests on: service, status (ok/failed/partial/disabled), error |
iac |
Whether cdk.out has been synthed since the analysis: status (changed/unchanged/unknown), synthedAt, analyzedAt, reason |
ageSeconds is the fact; suggestRefresh is one coarse verdict offered on top of it.
get_infra_overview lists every source in dataHealth.sources rather than one tool’s. get_graph_summary additionally marks each node with source and sourceStatus.
Reading sources and iac
Section titled “Reading sources and iac”A source whose status is not ok means an empty result is “not read”, not “none exist”. Do not conclude from such a response that a queue has no DLQ, that a secret has no rotation, or that a table does not exist. get_table_schema is the sharpest case: with a database listed as failed or disabled, found: false means “not looked for”.
An iac.status of changed means cdk synth ran after the analysis, so IaC-derived answers are behind. unknown means the check could not run, and says nothing either way.
The three clocks
Section titled “The three clocks”| Clock | Default | Configurable | What it governs |
|---|---|---|---|
| Cache TTL | 24h | no | Whether a cached analysis is loaded at boot. Past it, serve / start run a fresh analysis instead |
| Refresh hint | 6h | yes | The value of suggestRefresh on every response. Changes nothing about the data returned |
maxAgeSeconds |
none | per call | A caller-supplied tolerance. Sets requestedMaxAgeSeconds and withinRequestedAge |
maxAgeSeconds is advisory: exceeding it does not withhold data or fail the call. The result still comes back, marked. No tool call re-reads AWS — refreshing is infrawise analyze.
Reloading a running server
Section titled “Reloading a running server”infrawise analyze writes its result to the cache, and a running MCP server rechecks that cache on every tool call — one stat of a local file, cheaper than the response it guards. A new analysis is therefore visible to the next call, with no restart and no editor reconnect. Running analyze in a second terminal while your editor session stays open is the intended refresh loop.
Configuration
Section titled “Configuration”freshness: suggestRefreshAfterHours: 6 # defaultApplies to infrawise serve, infrawise stdio, and editor-launched MCP servers. Accepts fractional values (0.5 for 30 minutes). The 24h cache TTL is fixed and unaffected.
