How do you validate source freshness in Gemini apps that use live web data?

I am looking at a common failure mode in Gemini applications that call tools to retrieve public web data: the tool call succeeds, but the returned content is stale, localized for the wrong region, or structurally incomplete.

For each tool result, I am considering storing:

  • source URL
  • retrieved_at timestamp
  • requested and observed language/location
  • content hash
  • parser or extractor version
  • required-field validation result
  • cache age

The application could then reject stale records or explicitly tell Gemini that a source could not be refreshed instead of silently using old context.

For people running this in production, where do you enforce freshness: inside the retrieval tool, in the orchestration layer, or before building the Gemini prompt? I would also be interested in how you test regional variants of the same source.