Worker Endpoints — the full API surface
There is one Worker —
fcr-dashboard-api(a monolith). It exposes 131 routes, all registered inworker/src/handlers/**viaregister(path, fn)and dispatched byworker/src/router.js. Every route is…workers.dev/<path>and (except the public ones) requires thex-api-keyheader.Live route list:
GET /health. Grouped below by domain. Verified 2026-05-20.
Naming: dashboard-* is the current convention; copysheet-* and a few bare
names are older routes kept for compatibility. Composite endpoints fan out to
several others internally.
Account, CRM & enrichment
| Route | Purpose |
|---|---|
dashboard-check-account |
CRM + active lines + tickets for a subscriber (the most-called tool) |
dashboard-check-enrichment |
Composite: CRM + GBP + keywords + ads + GSC + Ahrefs |
dashboard-check-keywords |
Keyword intelligence + gaps |
dashboard-check-tickets |
Flexible ticket search |
dashboard-hubspot / -hubspot-deal-live / -hubspot-deals-search |
HubSpot deal lookups (live API; BQ is open-only) |
dashboard-hubspot-deal-context |
Prior emails/notes/calls for a deal |
dashboard-hubspot-properties / -hubspot-engagements-sync |
HubSpot property metadata / engagement ingest |
dashboard-suspensions, dashboard-reconciliation, dashboard-data-freshness |
billing/ops state + freshness checks |
dashboard-roam-users / -roam-users-backfill |
person ↔ Roam ↔ HubSpot identity |
dashboard-usage-log, dashboard-track-engagement |
telemetry |
Deal brief (precompute pipeline)
| Route | Purpose |
|---|---|
dashboard-compose-deal-brief |
Fan-out composer → writes KV deal-brief:<id> + BQ audit |
dashboard-get-deal-brief |
Hot KV read (lazy-compose + self-heal on miss) |
dashboard-brief-refresh-cron |
Chunked staleness sweep → enqueues to BRIEF_QUEUE |
dashboard-crawl-website |
Fetch + extract a site's services/CTA/CMS (shared by advisor + brief) |
HubSpot card chat
| Route | Purpose |
|---|---|
dashboard-hubspot-chat-start / -status / -complete |
async job: kick off / poll / finish a card turn |
dashboard-hubspot-chat-prewarm |
seed session-facts + brief on card mount |
dashboard-hubspot-chat-history / dashboard-chat-history |
restore visible chat |
AI advisor & vector indexes
| Route | Purpose |
|---|---|
dashboard-ai-advisor |
The advisor (Claude + ~40 tools). Roam + card both call this. |
dashboard-vector-search / -vector-reindex |
fcr-site-portfolio (similar sites) |
dashboard-deals-vector-search / -deals-vector-reindex |
fcr-deal-history (similar deals) |
dashboard-company-knowledge-search / -reindex, dashboard-case-studies-reindex |
fcr-company-knowledge |
dashboard-deal-patterns |
Mine recurring win/loss themes across a deal cohort |
Ads & Merchant Centre
copysheet-ads-stats, dashboard-ads-spend, dashboard-ads-spend-all,
dashboard-ads-quality, dashboard-ads-no-conversions, ads-performance-report,
ads-aimax-audit (AI Max migration audit), dashboard-gmc-stats.
Ads spend is retail (what the client pays FCR) — never call it media spend.
GBP & reviews
copysheet-dashboard-gbp (cached GBP from BQ), dashboard-gbp-live (live
SerpAPI+Pleper), dashboard-gbp-services, dashboard-reviews,
dashboard-competitor-enrich.
Analytics (GA4 / GSC)
copysheet-ga4-stats, copysheet-ga4-traffic-sources, copysheet-gsc-stats.
Keywords & category intelligence
dashboard-keyword-intelligence, dashboard-keyword-gap,
dashboard-keyword-planner, dashboard-category-keywords,
dashboard-category-gaps, dashboard-prospect-categories,
dashboard-saymore-keyword-matrix.
Prospecting, discovery & InSites
| Route | Purpose |
|---|---|
dashboard-prospect-intel |
All-in-one category/prospect intelligence (similar clients, keywords, area) |
dashboard-prospect-search |
Google Maps search (place_id, lat/lng) via SerpAPI |
dashboard-prospect-audit / -listings / -categories |
prospect data lookups |
dashboard-prospect-enrich / -pleper-refresh / -engagement / -engagements-refresh |
enrichment + steady-state refresh drains |
dashboard-discovery-suggest / -insights / -df-compare |
Discovery (Alpha) map flow |
dashboard-insites-bq-lookup / -poll / -report-summary / -settings / -share / -suggest |
InSites audits (DF / LRC) |
SERP, grid maps & reports
dashboard-serp-grid, dashboard-serp-local (+-batch),
dashboard-serp-screenshot (+-batch), dashboard-grid-map-build (+ the
/r/:id shareable viewer), dashboard-area-map, dashboard-map-advisor,
dashboard-lrc-methodology, dashboard-proposal-localities / -publish /
-retest, dashboard-report-get / -list / -save / -resolve / -annotate,
dashboard-meeting-brief-render.
Area, demographics & reach
dashboard-circle-demographics, dashboard-bbox-demographics,
dashboard-meta-reach (+-batch).
Ahrefs / SEO
dashboard-ahrefs-seo, dashboard-ahrefs-by-url.
Portfolio, revenue & reporting
dashboard-am-portfolio, dashboard-am-bridge, dashboard-am-attributes,
dashboard-am-email-templates, dashboard-am-team-email-templates,
dashboard-solution-portfolio, dashboard-revenue-bridge,
dashboard-sales-rep-bridge, dashboard-built-websites.
Call tracking (iovox)
dashboard-iovox, dashboard-iovox-all, dashboard-iovox-counts.
Teamwork (projects + tickets)
dashboard-tickets, dashboard-twd-deep-dive, dashboard-teamwork-desk-ticket
(+-tickets), dashboard-teamwork-project (+-projects).
SitePro / Yext / build pipeline
dashboard-sitepro, dashboard-yext-listings, dashboard-yext-sync,
dashboard-build-pipeline, dashboard-build-detail.
Voice (speech-to-text)
dashboard-stt, dashboard-stt-fetch (Whisper-backed dictation for the card).
Pre-warm & scheduled (also HTTP-exposed for manual runs)
dashboard-prewarm-am-portfolios, dashboard-prewarm-open-deal-subscribers,
dashboard-brief-refresh-cron.
Admin / infrastructure
| Route | Purpose |
|---|---|
dashboard-bq-execute |
Ad-hoc read-only BigQuery |
dashboard-bq-admin |
DDL / writes — requires x-admin-key on top of x-api-key |
dashboard-bq-create-table |
table creation helper |
/health |
route list + status (no auth) |
/voice-stt |
public HTML iframe for dictation |
How a route is added
- Create
worker/src/handlers/<name>.jswithregister("dashboard-<name>", async (params, env, ctx, request) => {…}). import "./handlers/<name>.js";inworker/src/index.js.- Deploy via
scripts/deploy-worker.sh(seecommit-and-deploy.md). The route is then live at…workers.dev/dashboard-<name>and appears in/health.
FCR Dashboard documentation · generated from docs/ · keep counts verified, not guessed.