Every forward number a company published this season, lined up against the number it published last time.
This page is a frozen snapshot. Its source is public on GitHub. Paste the prompt below into Claude: it fetches that source and republishes it reading live FocusAlpha data through your connector — your universe, your filters, your account.
Build me a live guidance-changes dashboard from the FocusAlpha sample at https://app.focusalpha.ai/guidance-changes-dashboard, on my own universe and season.
The page is open source. Fetch this ONE file and use it verbatim as the page:
https://raw.githubusercontent.com/focusAlpha/dashboards/main/guidance-changes-dashboard/live.html
It is a single self-contained HTML file, about 45 KB, no build step, no dependencies. Download it
exactly as it is, with curl or your fetch tool. Do not summarise it, retype it, or rebuild it from
memory. The sample on focusalpha.ai is this same page with a data snapshot frozen on 2026-09-24
baked in; live.html is the same page reading through the FocusAlpha connector instead.
Then, in this order:
1. Publish the file as an artifact, declaring the connector:
capabilities: { mcp: { servers: [{ server: "FocusAlpha", tools: ["screen_companies", "get_guidance_changes", "get_guidance"] }] } }
If the connector is listed in your tools as "focusalpha", use that spelling for server.
Without this declaration window.claude.use('mcp') resolves null and the page can never fetch.
2. Open it and check that the status line counts companies up and then says live. If the page says
the connector is not available, I have to connect FocusAlpha first: https://focusalpha.ai/start
3. Now change it for me. The three blocks at the top of the script are mine: WINDOW (the season:
from, to, label), SCREEN (the universe, in screen_companies parameters: market_cap_usd_gte,
has_cik, sector, country, event_family + event_family_since, ...) and MAX_COMPANIES. Put my
conditions below in, republish, and send me the link.
Rules for any change:
- Keep the data layer exactly as it is: every read goes through MCP.callTool(SERVER, TOOL, params).
Never paste rows into the page. The point of this page is that it fetches its own data.
- The page reads two tools per company (get_guidance_changes, then get_guidance with view "latest").
Keep MAX_COMPANIES at a size the connector will serve in one sitting; 150 is a comfortable default.
- A guidance raise is not good news. A raise means a number went up; good news means better for the
company. Rows with higher_is_worse (capex, tax rate, costs) are shown as recorded and flagged; keep it so.
- Direction comes from the company's own words, never from the arithmetic. A trimmed range is
"narrow", not a cut. Pairs the comparability rules refuse are absent, not guessed at.
- Long-term guidance is the newest standing figure per metric that is marked multi_year_target or
guided two or more fiscal years past the event. Show the quote beside every target.
- Before filtering on a sector, call screen_companies({ list_facets: true }) once; it is free and
gives the exact spelling of every sector and country.
My conditions (edit these):
WINDOW: { from: "2026-07-01", to: null, label: "Summer 2026 season" }
SCREEN: { market_cap_usd_gte: 20000000000, has_cik: true, sector: "Technology", event_family: "earnings_release", event_family_since: "2026-07-01" }
MAX_COMPANIES: 120