Part 3 of #2185. A user with several imported years concluded the assistant
"only reads the period I am standing in". Nothing restricted it: the report
tools defaulted to the most recent fiscal period when no period_id was given
and then rejected any from_date/to_date/as_of_date outside it, and neither
the snapshot nor the chat identity block told the model which years existed
or how to address them.
- extensions/general/mcp-server/server.ts: resolveReportPeriod takes a date
hint; without period_id, a date in the call resolves the fiscal period that
contains it (findFiscalPeriodContaining, company-scoped), and a date no
period covers fails with the company's span instead of the latest year's
bounds. Income statement (from_date or to_date), balance sheet (as_of_date)
and dimension P&L (to_date) use it. The range guard is unchanged. No schema
change: tools/list sits at its token ceiling.
- lib/agent/fiscal-years.ts: one query and one line, "Räkenskapsår (senaste
först): ... period_id=<uuid> (senaste|avslutat)", plus the rule on
addressing an earlier year, shared by the single-call snapshot and the
streaming chat's always-on identity block.
- lib/agent/intents/shared-rules.ts and TOOL_RULES: pass that year's
period_id, one call per year, and say which räkenskapsår the answer covers.
Claude-Session: https://claude.ai/code/session_0179bdetHyofL6ATfQxB5wP5
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>