Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Removed "get_priority_insights" and "suggest_budget_allocation"; changed the definition of "get_breakdown", "get_content_actions", "get_summary" and 1 more (12 tools before, 10 now)
⟨398 unchanged words⟩ {"items":{"enum":["get_breakdown","get_priority_insights","get_summary"],"type":"string"},"type" ⟨4 unchanged words⟩ kpi_summary","trend","ad_spend_context","breakdown","priority_insights","recommended_actions"],"type":"string"},"type" ⟨2 unchanged words⟩ :{"enum":["analytics_summary","analytics_breakdown","priority_insights","analytics_today"],"type":"string"},"show_breakdown" ⟨2 unchanged words⟩ ,"show_period_comparison":{"type":"boolean"},"show_priority_insights":{"type":"boolean"},"show_trend":{"type":"boolean"}},"required":["response_type","primary_metric","show_period_comparison","show_trend","show_breakdown","show_priority_insights","prefer_compact_visual_summary","avoid_long_prose","recommended_followup_tools","recommended_sections ⟨673 unchanged words⟩
⟨122 unchanged words⟩ caveats and limits are included in the response. A page carries `title_change` when its title was rewritten within the last 8 weeks (detected from the titles the tracker recorded): do not recommend another title rewrite for it while it is tracked, and read a rank change since the rewrite as a before/after comparison, not proof of effect. The app's home screen takes such pages off its to-do list, but this tool keeps them and their order in `pages` and only adds the mark; `title_changes.status` is 'unavailable' when the marks could not be read. Revenue values (revenue_jpy, ai_revenue_jpy, expected_revenue_gain and the ⟨26 unchanged words⟩
⟨284 unchanged words⟩ "},"striking_uplift_clicks":{"type":"number"},"title_change":{"additionalProperties":false,"properties":{"measuring":{"type":"boolean"},"new_first_date":{"type":"string"},"new_title":{"type":"string"},"old_last_date":{"type":"string"},"old_title":{"type":"string"},"tracking_week":{"maximum":8,"minimum":1,"type":"integer"}},"required":["new_first_date","old_last_date","old_title","new_title","tracking_week","measuring"],"type":"object"}},"required":["page","action","confidence","caveats"," ⟨86 unchanged words⟩ ,"site_id":{"type":"string"},"title_changes":{"additionalProperties":false,"properties":{"basis":{"type":"string"},"marked_pages":{"minimum":0,"type":"integer"},"record_days":{"type":"number"},"status":{"enum":["available","unavailable"],"type":"string"}},"required":["status","record_days","marked_pages","basis"],"type":"object"},"
⟨428 unchanged words⟩ {"items":{"enum":["get_breakdown","get_priority_insights","get_summary"],"type":"string"},"type" ⟨4 unchanged words⟩ kpi_summary","trend","ad_spend_context","breakdown","priority_insights","recommended_actions"],"type":"string"},"type" ⟨2 unchanged words⟩ :{"enum":["analytics_summary","analytics_breakdown","priority_insights","analytics_today"],"type":"string"},"show_breakdown" ⟨2 unchanged words⟩ ,"show_period_comparison":{"type":"boolean"},"show_priority_insights":{"type":"boolean"},"show_trend":{"type":"boolean"}},"required":["response_type","primary_metric","show_period_comparison","show_trend","show_breakdown","show_priority_insights","prefer_compact_visual_summary","avoid_long_prose","recommended_followup_tools","recommended_sections ⟨114 unchanged words⟩
⟨480 unchanged words⟩ {"items":{"enum":["get_breakdown","get_priority_insights","get_summary"],"type":"string"},"type" ⟨4 unchanged words⟩ kpi_summary","trend","ad_spend_context","breakdown","priority_insights","recommended_actions"],"type":"string"},"type" ⟨2 unchanged words⟩ :{"enum":["analytics_summary","analytics_breakdown","priority_insights","analytics_today"],"type":"string"},"show_breakdown" ⟨2 unchanged words⟩ ,"show_period_comparison":{"type":"boolean"},"show_priority_insights":{"type":"boolean"},"show_trend":{"type":"boolean"}},"required":["response_type","primary_metric","show_period_comparison","show_trend","show_breakdown","show_priority_insights","prefer_compact_visual_summary","avoid_long_prose","recommended_followup_tools","recommended_sections ⟨42 unchanged words⟩
Top priority insights (stopped) — STOPPED. This tool no longer returns insights: its old rules (ROAS, saturation) do not match the current RevenueScope definitions. It always returns status='stopped' with the reason and the tools to use instead (get_summary for period KPIs, get_breakdown for channel / entry-page / visitor-history changes). Do not present anything from this tool as a recommendation.
Suggest budget allocation (stopped) — STOPPED. This tool no longer returns a budget split: the old method weighted every channel by revenue ÷ ad spend, which RevenueScope no longer provides (it returns ROAS for ad-only platforms only). It always returns status='stopped' with the reason, the alternative (get_breakdown lists each channel's ad spend next to candidate paid-session revenue, with ROAS for ad-only platforms only) and the resume plan (a new method after paid-traffic classification). Do not present anything from this tool as a recommendation.
Changed the definition of "get_ai_traffic", "get_breakdown", "get_competitor_keywords" and 7 more
Return AI-assistant traffic usingdashboard_ai_referred.dashboard_ai_referred, a separate RPC from the AI channels of dashboard_channels that the search screen shows (for the screen's number, use the AI channel in get_breakdown(dimension='channel')). By default, mode='referred' uses the site's calendar month ⟨45 unchanged words⟩ omitted, the immediately preceding equal-length range is used. Or pass preset (last_4_weeks, last_12_weeks or year_to_date) instead of dates, for the same periods and comparison as the app's period picker: the period ends on the last Saturday that closes a complete week (weeks run Sunday to Saturday, judged in the site timezone), the comparison is the same number of days directly before it, and year_to_date starts on January 1 of the year of that Saturday. preset cannot be combined with start_date, end_date, compare_start_date or compare_end_date, and `period.preset` echoes it. mode='gaps' is STOPPED and returns only its stopped ⟨11 unchanged words⟩
Changed the definition of "get_breakdown"
⟨596 unchanged words⟩ ":"string"},"cvr":{"type":["number","null"]},"revenue_jpy":{"type":["number", ⟨335 unchanged words⟩ false,"properties":{"cvr":{"type":["number","null"]},"device":{"type":"string"}, ⟨61 unchanged words⟩ ,"null"]},"cvr":{"type":["number","null"]},"is_new_visitor":{"type":"boolean"}, ⟨79 unchanged words⟩
Changed the definition of "get_ai_traffic", "get_breakdown", "get_content_actions" and 6 more
Return AI-assistant(ChatGPT/Claude/Perplexity/Gemini/Copilot)traffictraffic.usingmode='referred'dashboard_ai_referred.(By default), mode='referred' uses thesame dashboard_ai_referredsite'sRPCcalendarasmonththe
Added "get_today"; changed the definition of "get_ai_traffic", "get_breakdown", "get_content_actions" and 4 more (11 tools before, 12 now)
⟨108 unchanged words⟩ is rendered in the site's time zone. mode='gaps' is STOPPED: it always returnsrankedstatus='stopped'missed-citationwithandtheunder-monetizedreasonAIandpagespoints(defaulttolimitmode='referred';
Added "get_metadata"; changed the definition of "get_ai_traffic", "get_breakdown", "get_summary" and 1 more (10 tools before, 11 now)
Return AI-assistant (ChatGPT/Claude/Perplexity/Gemini/Copilot)traffic for the given period.traffic. mode='referred' (default)listsuseslandingthepagessamethatdashboard_ai_referredreceivedRPCclickedasAIthetrafficdashboard
Changed the definition of "get_breakdown", "get_priority_insights" and "get_summary"
⟨411 unchanged words⟩ or a raw day count (1-365). To match the dashboard exactly, pass start_date and end_date (YYYY-MM-DD, calendar dates in the SITE's analysis time zone, both inclusive; end_date may be today) and optionally compare_start_date/compare_end_date (dimension='page' uses them for pageviews_change; default = the equal-length range right before); when given they replace period and period.timezone reports the site time zone. For dimension='channel' with dates, rows come from the dashboard's channel RPC and carry no spend/ROAS/ad-platform rows (see notes); path reflects whether the range has ad spend. `filter` only applies to dimension='channel'; `limit` only applies ⟨132 unchanged words⟩
⟨13 unchanged words⟩ ,"time_decay"],"type":"string"},"compare_end_date":{"$ref":"#/properties/start_date"},"compare_start_date":{"$ref":"#/properties/start_date"},"country":{"maxLength":2,"minLength":2, ⟨13 unchanged words⟩ ,"session_attribute"],"type":"string"},"
Certificate changed, valid to 2026-12-19
Certificate recorded, valid to 2026-10-16
Authorization not required
First tool surface recorded: 10 tools (server version 1.14.0)
Showing the latest 11 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨70 unchanged words⟩ ,"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type": ⟨242 unchanged words⟩
⟨61 unchanged words⟩ dates it uses the immediately preceding equal-length range. Or pass preset (last_4_weeks, last_12_weeks or year_to_date) instead of dates, for the same periods and comparison as the app's period picker: the period ends on the last Saturday that closes a complete week (weeks run Sunday to Saturday, judged in the site timezone), the comparison is the same number of days directly before it, and year_to_date starts on January 1 of the year of that Saturday. preset cannot be combined with start_date, end_date, compare_start_date or compare_end_date, and `period.preset` echoes it. Each row reports available prior values and deltas. ⟨5 unchanged words⟩ , linear and time_decay. Candidate ad revenue iscontextnot paid attribution. ad_spend_candidates returns ROAS (candidate revenue / ad spend) only for ad-only platforms (Google Ads,notYahoo!paidAds,attributionMicrosoftorAds,PaidCriteo,AttributionRTB House, MicroAd); others such as Meta include organic traffic and get roas_status=includes_organic. Monthly ad spend is prorated by overlapping days. No overall ROAS. Unattributed is the total of purchases that no session carries, shown as a separate row and not added to channel revenue. A purchaserevenueafter a device change or cookie clearing belongs to the channel of the session it was made in (often Direct) and cannot be separated. revenue_breakdown.total_event_jpy is channel-attributed revenue plus Unattributed, not aseparatetotalrow.cut by purchase-event time. Some dimensions do not support country/device filters; unsupported ⟨10 unchanged words⟩
⟨62 unchanged words⟩ "minimum":1,"type":"integer"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"site_id":{"format":"uuid","type": ⟨22 unchanged words⟩
⟨23 unchanged words⟩ "type":["number","null"]},"previous_roas":{"type":["number","null"]},"previous_spend_jpy":{"type":["number","null"]},"roas":{"type":["number","null"]},"roas_status":{"enum":["available","includes_organic","no_spend","revenue_unavailable","spend_unavailable","filtered_scope"],"type":"string"},"spend_delta_jpy":{"type":["number","null" ⟨4 unchanged words⟩ ":["ad_channel","spend_jpy","candidate_revenue_jpy","roas","roas_status","previous_roas","previous_spend_jpy","spend_delta_jpy","previous_candidate_revenue_jpy","candidate_revenue_delta_jpy"], ⟨170 unchanged words⟩ :{"type":"number"},"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"reference_bounds":{"const ⟨874 unchanged words⟩
Return the latest competitor SEO snapshot for the site(FD-041):which keywords each tracked competitor DOMAIN ranks for ⟨41 unchanged words⟩ costs money and is triggered separately from thedashboard,RevenueScope app by the competitor-research Edge Function); it only reads ⟨129 unchanged words⟩ explaining a research must be triggered from thedashboardRevenueScope app first — this tool cannot start one. site_id ⟨28 unchanged words⟩
⟨122 unchanged words⟩ caveats and limits are included in the response. Revenue values (revenue_jpy, ai_revenue_jpy, expected_revenue_gain and the bucket_summary revenue_jpy) are null when revenue_status is 'unconfirmed': null means unverified, not 0 yen. site_id is optional when OAuth-authenticated. Google Search only; data lags 1-2 days.
⟨28 unchanged words⟩ ":"number"},"revenue_jpy":{"type":["number","null"]}},"required":["count","revenue_jpy", ⟨108 unchanged words⟩ :"string"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"pages":{"items":{"additionalProperties":false," ⟨9 unchanged words⟩ ":"string"},"ai_revenue_jpy":{"type":["number","null"]},"ai_sessions":{"type":"number"}, ⟨66 unchanged words⟩ ,"null"]},"revenue_jpy":{"type":["number","null"]},"sessions":{"type":"number"}, ⟨76 unchanged words⟩ ["days"],"type":"object"},"revenue_status":{"enum":["confirmed","unconfirmed"],"type":"string"},"session_window":{"additionalProperties":false,"properties":{" ⟨90 unchanged words⟩ type":"object"}},"required":["site_id","revenue_status","period","window","session_window","basis ⟨8 unchanged words⟩
⟨17 unchanged words⟩ is the immediately preceding equal-length range. Omitting bothkeeps theusesdashboard'sa rolling now-minus-30-days window. Or pass preset (last_4_weeks, last_12_weeks or year_to_date) for the same periods as the app's period picker: the period ends on the last Saturday that closes a complete week (weeks run Sunday to Saturday, judged in the site time zone), and the comparison is the same number of days directly before it; year_to_date starts on January 1 of the year of that Saturday. preset cannot be combined with start_date or end_date, and `period.preset` echoes it. Each current and previous window uses a separate ⟨130 unchanged words⟩ ) ranks only candidates among the current top200;200, with the search screen's borders (shown rank, the average position rounded to a whole number, from 4 to 20, and at least 10 impressions); it is not the best opportunity across all queries. band='keeping' (default limit 10) returns the search screen's 上位維持 list (shown rank 1 to 3 and at least 10 impressions, most impressions first) and band='declining' (default limit 10) returns its 流入減 list (clicks fell by at least max(3, 20% of the earlier clicks), biggest loss first); both judge only within the current and previous top 200 queries by clicks, and each row has current and previous clicks, impressions and rank (shown_position is the whole-number rank the screen shows), `rise` (previous shown rank minus current, positive is up) and, for declining, click_loss and click_change_pct. Revenue values (est_revenue_jpy, rps_search_jpy, est_revenue_change, est_incremental_revenue_jpy) are null when revenue_status is 'unconfirmed': null means unverified, not 0 yen. Values may differ from the former keyword_breakdown_aggregate because ⟨20 unchanged words⟩
⟨8 unchanged words⟩ "all","enum":["all","striking","keeping","declining"],"type":"string"},"end_date":{ ⟨4 unchanged words⟩ ":1000,"minimum":1,"type":"integer"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"site_id":{"format":"uuid", ⟨15 unchanged words⟩
⟨12 unchanged words⟩ band":{"enum":["all","striking","keeping","declining"],"type":"string"},"band_criteria":{"additionalProperties":{"type":"number"},"type":"object"},"basis":{"type":"string"},"criteria" ⟨30 unchanged words⟩ :"string"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"period":{"additionalProperties":false,"properties":{" ⟨3 unchanged words⟩ ,"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"start":{"type":"string"}},"required ⟨3 unchanged words⟩ ,"type":"object"},"previous_period":{"additionalProperties":false,"properties":{"days":{"$ref":"#/properties/period#/properties/period/properties/days"},"end":{"$ref":"#/properties/period/properties/end"},"start":{"$ref":"#/properties/period/properties/start"}},"required":["start","end","days"],"type":"object"},"revenue_estimate_basis":{"type":"string"},"revenue_status":{"enum":["confirmed","unconfirmed"],"type":"string"},"rows":{"anyOf":[{"items":{" ⟨19 unchanged words⟩ ,"null"]},"est_revenue_jpy":{"type":["number","null"]},"impressions":{"type":"number"},"query":{"type":"string"},"rps_search_jpy":{"type":["number","null"]},"top_page":{"type":["string", ⟨31 unchanged words⟩
⟨16 unchanged words⟩ inclusive JST dates; comparison dates are not supported. Or pass preset (last_4_weeks, last_12_weeks or year_to_date) for the same periods as the app's period picker: the period ends on the last Saturday that closes a complete week (weeks run Sunday to Saturday, judged in the site time zone), and year_to_date starts on January 1 of the year of that Saturday; preset cannot be combined with start_date or end_date, and `period.preset` echoes it. Omittingbothall of them preserves the current now-minus-30-days rolling window, which may ⟨33 unchanged words⟩ week for longer windows; pass it to override. Weeks run Sunday to Saturday and each weekly `date` is that week's Sunday; weeks at the edge of the period hold only the days inside it. Buckets without GSC rows are omitted. Google-search only; ⟨21 unchanged words⟩
⟨16 unchanged words⟩ "minLength":1,"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"site_id":{"format":"uuid","type": ⟨16 unchanged words⟩
⟨37 unchanged words⟩ ,"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"start":{"type":"string"}},"required ⟨94 unchanged words⟩
⟨10 unchanged words⟩ (ROAS, saturation) do not match therenewedcurrent RevenueScopedashboard.definitions. It always returns status='stopped' with the reason and ⟨28 unchanged words⟩
Return headline KPIs (revenue, orders, sessions, RPS, AOV, CVR), engagement metrics ⟨51 unchanged words⟩ omitted, the preceding equal-length range is used. Or pass preset (last_4_weeks, last_12_weeks or year_to_date) instead of dates, for the same periods and comparison as the app's period picker: the period ends on the last Saturday that closes a complete week (weeks run Sunday to Saturday, judged in the site timezone), the comparison is the same number of days directly before it, and year_to_date starts on January 1 of the year of that Saturday. preset cannot be combined with start_date, end_date, compare_start_date or compare_end_date, and `period.preset` echoes it. Revenue-dependent metrics (revenue, orders, RPS, AOV, CVR) are null unless purchase measurement is confirmed; null ⟨8 unchanged words⟩ isError=true and must not be read as zero.PaidNoAttributionoverall ROAS isunavailable.returned (kpis.roas is always null); per-platform ROAS for ad-only platforms is in get_breakdown ad_spend_candidates. Optional country (ISO2) and device filters scope ⟨7 unchanged words⟩
⟨26 unchanged words⟩ ,"end_date":{"$ref":"#/properties/start_date"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"site_id":{"format":"uuid","type": ⟨14 unchanged words⟩
⟨177 unchanged words⟩ "},{"type":"null"}]},"orders":{"$ref":"#/properties/kpis/properties/revenue"},"revenue":{"additionalProperties":false,"properties":{" ⟨32 unchanged words⟩ "#/properties/kpis/properties/revenue"}},"required":["revenue","orders","sessions","rps","aov","cvr"," ⟨34 unchanged words⟩ :{"type":"number"},"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"reference_bounds":{"const ⟨321 unchanged words⟩
Return today's activity for a site, matching the RevenueScope 今日の状況 screen. Today is: the site's timezone from 00:00 tonow;now,valuesprovisionalarevalues.provisional.No screen of the RevenueScope app shows this view now. Purchase events are observed events, not confirmed orders; unverified revenue and unavailable sections are not zero. Sample-site valuesdoarenotthosematchoftheascreen'ssamplefixedstore,samplenotdata.your own site. No event-level or visitor-level rows are returned. For ⟨24 unchanged words⟩
⟨314 unchanged words⟩ ,"end":{"type":"string"},"preset":{"enum":["last_4_weeks","last_12_weeks","year_to_date"],"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type": ⟨247 unchanged words⟩
⟨5 unchanged words⟩ returns a budget split: the old methodreliedweightedonevery channel by revenue ÷ ad spend, whichtheRevenueScoperenewednoRevenueScopelongerdashboardprovidesdoes(itnotreturnstreatROASasforPaidad-onlyAttributionplatformsROAS.only). It always returns status='stopped' with the reason, ⟨6 unchanged words⟩ ad spend next to candidate paid-session revenue,not aswith ROAS for ad-only platforms only) and the resume plan (a new method ⟨14 unchanged words⟩
⟨27 unchanged words⟩ ,"gaps"],"type":"string"},"period":{"anyOf":[{"const":"today","type":"string"},{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"90d","type":"string"},{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"},"site_id":{"format":"uuid","type": ⟨14 unchanged words⟩
`get_breakdown` compares`channel`, `entry_page`channel,and `visitor_history` rows for the requested period and the preceding equal-length window (or compare_start_date/compare_end_date). Each row reports current values plus previous values and deltas where comparable. Channel attribution_model supports last_touchentry_page,first_touchvisitor_history,linear,page andtime_decay.session_attributeAdrows.spendByisdefaultgroupeditthroughuses`ad_channel_mapping`the(site-specificsite'srowscalendaroverridemonthglobaltorows),date andcandidate revenue is summedcomparesfromwithmatchingthelast_touchpriorsessionmonthchannelsthroughregardlesstheofsameattribution_model.calendarCandidatedayvalues(clampedaretocontexttheonly;priortheymonth'sarelastnotday).paidPassattributionstart_date andno Paid Attribution ROAS is calculated. Unattributed purchaseend_daterevenuetogetherappearsforasanotherainclusiveseparatecalendarrowrangeandinistheexcludedsite'sfromanalysisattributedtimezone;totals.optionally`entry_page`passusescompare_start_datedashboard_entry_page_summary_window;andcountry/devicecompare_end_date.filtersWithoutareexplicitunsupportedcomparisonthere.dates`visitor_history`it uses thedashboard's visitor-type history rule. `revenue_status='unconfirmed'` meansimmediatelyavailableprecedingsignalsequal-lengthdorange.notEachconfirmrowrevenuereportshistory:availablemonetarypriorfieldsvalues andmonetary deltas are null, while session counts remain numeric; it does not prove purchase measurement is unconfigured. Internaldeltas.retrievalChannelfailuresattribution_modelreturnsupports`isError=true`last_touch,`revenue_status='error'`first_touch,and `revenue:null`. `is_demo`linearisandindependenttime_decay.ofCandidaterevenue_status.adComparisonsrevenueareisavailablecontext onlywhen the preceding window has observed trend data,no preceding-window fetch error occurred, and the first non-bot, non-dwell-only session's site-calendar datenotispaidonattribution orbefore thePaidprecedingAttributionwindow'sROAS.startUnattributeddate.purchase`page`revenueandis`entry_page`adefaultseparatetorow.atSomemostdimensions20dorowsnotandsupportreportcountry/deviceomittedfilters;counts.unsupported`filter.channel`axesdrillsareintoidentifiedcampaigninrows.notes. site_id is optional when OAuth-authenticated.Default period is 30 days; accepted values are today, 7d, 30d, 90d, or 1-365. Explicit start_date/end_date are inclusive calendar dates in the site's analysis timezone. Spend uses inclusive JST dates from `ad_spend_daily.date`; trend and session windows use site timezone. Country (ISO2) and device filters apply where the source RPC supports them; unsupported axes are called out in notes.
⟨62 unchanged words⟩ "minimum":1,"type":"integer"},"period":{"anyOf":[{"const":"today","type":"string"},{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"90d","type":"string"},{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"},"site_id":{"format":"uuid","type": ⟨22 unchanged words⟩
Returnacontent'playbook' for the site: every content page classified into ONE of fiveaction bucketsover a weekly-style windowandcomparisonpage(currentevidence.windowByvsdefault theimmediately precedingwindowof equallength),ranked by search-opportunity × session gain so you can tell the user which page to GROW next and what to do: within the 'striking' bucket rows are ordered by expected_sessions_gain DESC (the band-CTR headroom thatisthe actionable lever there), while the other buckets keep real landing revenue DESC (largest revenue at stake first). This surfaces search intent to add sessions (grow the traffic denominator), NOT CVR — a page already winning on sessions/revenue but with zero clicks still shows up. Buckets: 'decaying' (search clicks actually fell, OR the page had real traffic (previous clicksN=7≥3)days andits rank slid ≥2 positions from within the click zone while clicks did NOT grow → refresh/rewrite; a rank slide alone with growing/negligibleGSCclicksdata isNOT decay — search clicks aredelayedthebyprimary3signal,days.positionToonlychoose aleading indicator)window,'striking' (has striking-distance queries at positions 4-20 with click upside but clicks stillpasslowstart_date→andpushend_datethosetogether:queriesend_dateup;musttopbe3today'slisteddate instriking_queries), 'rising' (clicks grew significantly → produce more of this, strengthenJapanCTA)time,'dormant' (has impressions but ~0 clicksandits main queryN isfar below the click zone → big rewrite or consolidate; zero-pageview pure-rank pages surface here), 'stable' (none of the above → watch). Each page also carries current/previous clicks·impressions·avg_position, is_new, landing sessions/engaged/revenue_jpy, AI-referredend_datesessions/revenue/sources,minusexpected_sessions_gainstart_date (the window's expected incremental sessions from2-365striking-banddays;queriese.g.—Septembera21searchthroughclickSeptemberis28~1setssessionN=7), soit is NOT re-converted via CTR; normalize to a monthly figure withthewindow length), and expected_revenue_gain (expected_sessions_gain × page RPS, returned ONLY when revenue>0 and sessions>=5 — display-only projection,pairneverdescribes asort key). The deterministic action mapping and all (provisional) thresholds come back inlength`criteria`;endingthetodaymodelratherdoesthan thenarrative interpretation (mcp-first). RowsGSCwithsourceconfidence='low'dates.carryThe`caveats`response—separates'geo_winning_suspect'`window` (AI Overview/citations likely substitute the click:actualaJSTGEOGSCwindates,don't break the page; cross-check get_ai_trafficinclusive),'zero_click_suspect' (SERP-feature occupation or intent-mismatch/polysemous query: verify the live SERP first),from'ai_cited'`session_window` (decayingsessions,butrevenuetheand AIcitation is alive) — verify before acting on low-confidence rows;metricsdefinitionsoverinN×24criteria.caveat_flags.hoursTheendingresponseatisdatabasesummary-firststatement(token-awaretime): `bucket_summary`.always`session_window`holdsgives theFULL pre-limit distributionrelative(per-bucketstart/endcount/revenue/clicks)andplusduration;`total_pages`,exactwhiletimestamps`pages`arereturnsunavailableonlybecause thetopRPCrowsdoesinnotpriorityreturnorderits `now(default limit 15, max 200); pass bucket='striking' etc. to drill into one bucket, and check `truncated` — when present it tells how many rows were cut and how to fetch them. GSC-driven and Google-search only; data lags 1-2 days so the current window's right edge sits a few days back. When narrating a bucket to the user, scope it to Google search — say 'search traffic to this`pagevalue.isSearchdeclining'classifications,NOT 'this page is declining'; the classification is a search-trend diagnosisthresholds,not overall page healthbucket_summary,so a page labeled 'decaying' can be thriving on Direct/social/AI. Before calling a negative bucket (decaying/dormant) arowproblemprioritization,cross-check the row's landing sessions/revenue_jpycaveats andai_sessions. site_id is OPTIONAL when OAuth-authenticated. Default window is the last 7 days vs the prior 7; pass period='30d'/'90d' or a raw day count (2-365). Window date boundslimits areINCLUSIVE on both ends, so period=Nd actually spans N+1 calendar dates (the real range isincluded in`window`); both windows sharethesame length, so the comparison stays symmetric.response.Thissite_id isthe cross-page action snapshot; for one page's timeoptionalserieswhenuseOAuth-authenticated.get_page_trend,GoogleandSearchforonly;AI-referreddatapageslagsuse1-2get_ai_traffic(mode='referred').days.
⟨12 unchanged words⟩ ,"stable"],"type":"string"},"limitend_date":{"maximumpattern":200,"minimum^\\d{4}-\\d{2}-\\d{2}$":1,"type":"integerstring"},"periodlimit":{"anyOfmaximum":[{200,"constminimum":"7d"1,"type":"stringinteger"},{"const":"30d","typesite_id":"string"},{"constformat
⟨315 unchanged words⟩ ["days"],"type":"object"},"session_window":{"additionalProperties":false,"properties":{"basis":{"const":"database_statement_time","type":"string"},"duration_days":{"maximum":365,"minimum":2,"type":"integer"},"duration_hours":{"maximum":8760,"minimum":48,"type":"integer"},"exact_timestamps_available":{"const":false,"type":"boolean"},"from_relative":{"type":"string"},"to_relative":{"const":"now()","type":"string"}},"required":["basis","duration_days","duration_hours","from_relative","to_relative","exact_timestamps_available"],"type":"object"},"site_id":{"type":"string"},"total_pages" ⟨47 unchanged words⟩ ,"required":["site_id","period","window","session_window","basis","assumptions","limitations","criteria ⟨5 unchanged words⟩
Returnsearch-query performance fromGoogle Search Consoleforquerythemetrics.givenPassperiod.start_dateband='all'and end_date together (defaultinclusive JST GSC dates);returnscomparisonper-queryismetricsthe—immediatelyclicks/impressions/CTR/avgprecedingposition/topequal-lengthlandingrange.pageOmittingplusbothankeepsestimatedtherevenuedashboard'sperrollingquerynow-minus-30-days(=window.検索EachorganiccurrentRPSand×previousclicks,window uses aconservativeseparateestimatedashboard_keywords RPC call,0cappeduntilatthe200sitequerieshasby検索clicks.organic`period`revenue),andranked`previous_period`byshowclicksthe(defaultactuallimitJST100).dateEachranges;row`date_basis`also/carries`timezone` identify theperiod-over-periodGSCchangecalendar.vs`source_windows` exposes thepreviousexactequal-lengthp_from/p_towindow:timestampsclicks_changeused(traffic)forandbothest_revenue_changeRPC(money)calls,bothwhether%thedeltasGSC(nulldate=boundsthearequeryinclusive,isandNEW,anyi.e.JSThaddatenosharedclicks/revenuebylasttheperiodtwo—windows.renderTheasrolling'新規',defaultnothas0%).oneComparingsharedtheboundarytwodate;surfacesexplicitRS'sdatesignaturerangesinsighthave—none.e.g.band='all'clicksreturns+74%upbuttoest_revenuelimit−21%rowsmeans(defaulttraffic100)grewwithwhileclicks,moneyimpressions,fellCTR,somethingaverageGA4/GSCposition,cannottopshowpagesideandbyestimatedside.revenueband='striking'(search-organicreturnsRPSthe×SEOGoogleactionclicks);list:query-matchedquerieschanges'strikinganddistance'`truncated`fromdisclosetheomitted/source-limitedtoprows.(rankingA~4-20querywithabsentrealfromimpressions)thewherepreviousimprovingtopa200fewmaypositionsappearyieldsnew.theExplicitbiggestdatesclick/revenueincludegainboth JST GSC dates,rankedwhilebysessionestimatedRPSrevenueusesopportunity[start,(incrementalend)clicksand×excludessearch-organictheRPS,final microsecond. band='striking' (default limit 10);ranks only candidates among themethodologycurrent top 200; it isfixednotinthecode.bestsite_idopportunityisacrossOPTIONALallwhenqueries.OAuth-authenticated.ValuesDefaultmayperioddifferisfrom thelastformer30keyword_breakdown_aggregatedays;becausepassdateperiod='today'/'7d'/'90d'boundaries,orsourcealimitrawanddayreturnedcountquery(1-365).set differ. Google-searchonly.only; data lags 1-2 days. site_id is optional when OAuth-authenticated.
⟨11 unchanged words⟩ ,"striking"],"type":"string"},"limitend_date":{"maximum":1000,"minimum":1,"type$ref":"integer#/properties/start_date"},"period":{"anyOflimit":[{"const":"today","typemaximum":"string"}1000,{"constminimum":"7d"1,"type":"stringinteger"},{"const":"30d","typesite_id":"string"},{"constformat":"90d
⟨41 unchanged words⟩ ,"target_position"],"type":"object"},"date_basis":{"const":"jst_calendar_date","type":"string"},"limitations":{"items":{"type":"string" ⟨18 unchanged words⟩ ,"days"],"type":"object"},"previous_period":{"$ref":"#/properties/period"},"revenue_estimate_basis":{"type":"string"},"rows" ⟨106 unchanged words⟩ ,"site_id":{"type":"string"},"source_windows":{"additionalProperties":false,"properties":{"current":{"additionalProperties":false,"properties":{"p_from":{"type":"string"},"p_to":{"type":"string"}},"required":["p_from","p_to"],"type":"object"},"gsc_date_bounds":{"const":"inclusive","type":"string"},"previous":{"$ref":"#/properties/source_windows/properties/current"},"shared_jst_dates":{"items":{"type":"string"},"type":"array"}},"required":["current","previous","gsc_date_bounds","shared_jst_dates"],"type":"object"},"timezone":{"const":"Asia/Tokyo","type":"string"},"truncated":{"anyOf":[{"additionalProperties":false,"properties":{"omitted_at_least":{"minimum":0,"type":"integer"},"shown":{"minimum":0,"type":"integer"},"source_limited":{"type":"boolean"}},"required":["shown","omitted_at_least","source_limited"],"type":"object"},{"type":"null"}]},"warning":{"type":"string"}},"required":["site_id","band","period","previous_period","date_basis","timezone","source_windows","rows"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{},"type":"object"}
Return how ONE page's Google Search performance changed overtime (FD-040) — the time-axis drill-down for a page surfaced by get_breakdown(dimension='page'). Given a `page` (a normalized path like '/news/rps-revenue-per-session-guide' or a full URL — both resolve), returns a `series` of day or week buckets, each withtime.clicks,Passimpressions,start_date andimpression-weighted avg_position, plus a `summary` (first/last/best/worst position, position_delta, click & impressionend_datetotals).togetheravg_positionasisinclusiveaJSTRANK:dates;smallercomparisonisdatesbetter,aresonotasupported.NEGATIVEOmittingposition_deltabothmeanspreserves thepage's ranking IMPROVEDcurrentovernow-minus-30-daystherolling window(e.g. 12.0 → 9.0 = delta −3.0). Use this to verify whether SEO work on a page paid off (rank,rosewhich/mayclickstouchgrew)31orJSTslipped.datesBucketsbecausewhereGSCthefilterspagebyneverdateappearedinclusively.inExplicitsearchdates areomitted (gaps), so theconvertedseriestocanJSTbedayshorterboundariesthanfortheGSCperiod.rows. `granularity` defaults to'day'day for windows up to~35about 35 days and'week'week for longer(weekly smooths daily noise);windows; pass it to override.site_id is OPTIONAL when OAuth-authenticated. Default period is the last 30 days; pass period='today'/'7d'/'90d' orBucketsawithoutrawGSCdayrowscountare(1-365).omitted. Google-search only; data lags 1-2 days.Thissite_id isper-page;optionalforwhentheOAuth-authenticated. For cross-pagesnapshotsnapshots use get_breakdown(dimension='page'), and; forper-query (keyword)query trends use get_keyword_performance.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"end_date":{"$ref":"#/properties/start_date"},"granularity":{"enum":["day","week" ⟨3 unchanged words⟩ "minLength":1,"type":"string"},"period":{"anyOfsite_id":[{"constformat":"todayuuid","type":"string"},{"const":"7d","typestart_date":"string"},{"const":"30d","typepattern":"string"},^\\d{"const":"90d","type":"string"4},-\\d{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"2},"site_id":-\\d{"format":"uuid
⟨4 unchanged words⟩ sessions, RPS, AOV, CVR), engagement metrics,currentandpreviousdaily trendswith cumulative revenue, bot-excluded session count (null with a note when that count cannot be retrieved, and null as not applicablefora samplethe site'stoday-only window,calendarmatchingmonthget_today),toperiod_observation_statusdate,and ad-spend availability / Path A/Bcomparedcontextwithfortheapriorsitemonthandthroughperiod.theRevenue-dependentsamemetricscalendaranddaytrend(clampedrevenuetoarethatnullmonth'sunlesslastpurchaseday).measurementPassisstart_dateconfirmed;andnullend_datemeanstogetherunverified,fornotanotherzero.inclusiveWhencalendararangeconfirmedinperiodthehassite'snoanalysistraffic,timezone;period_observation_statusoptionallyispassno_observationcompare_start_date andcurrent revenue, RPS,compare_end_date.AOV,IfandcomparisonCVRdates arenull; observed zero revenue remainsomitted,numericthezero.precedingAequal-lengthmissingrangerevenueishistoryused.aloneRevenue-dependentdoesmetricsnotareshownullthatunless purchase measurement isunconfigured. Whenconfirmed;revenuenullismeans unverified,explain that sales are unverified and guide the user to check purchase measurement; donotclaim it is not set up. On a requiredzero.current-dataRequired retrievalfailure, the toolfailuresreturnsreturn isError=true,revenue_status='error', revenue=nullanderror_code='retrieval_failed';mustnevernotreadbeitread as zero.A previous-window RPC failure keeps current data and makes comparison_status unavailable, with previous KPI/trend fields null. Trend conversions is an observed purchase-event count and is not a confirmation of revenue measurement.Paid Attribution ROAS isunavailable; kpis.roas remains null for response compatibility and must not be presented as a measured ROAS. Sessions and engagement metrics remain available independently. AOV and RPS are null when their denominator is zero. Useunavailable.optionalOptional country (ISO2, e.g. 'JP')and/orand device('mobile'/'desktop'/'tablet') tofilters scope session-derived metrics. site_id is optional when OAuth-authenticated.Default period is the last 30 days; pass period='today'/'7d'/'90d' or a raw day count (1-365). For exact calendar dates in the site's analysis time zone, pass start_date and end_date, optionally with comparison dates. Revenue/sessions/RPS/AOV/avg_duration change is percentage or null when the prior value is zero; CVR and bounce_rate change is a percentage-point delta.
⟨26 unchanged words⟩ ,"end_date":{"$ref":"#/properties/start_date"},"period":{"anyOf":[{"const":"today","type":"string"},{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"90d","type":"string"},{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"},"site_id":{"format":"uuid","type": ⟨14 unchanged words⟩
Return today's activity for a site, matching the RevenueScope 今日の状況screen: sessions, RS-observed revenue, purchase-event count, bot-excluded sessions, new/returning sessions, and reaction tables by channel, generative-AI channel and entry page (top 50) with average duration, bounce rate and pages per session.screen. Today is the site'stime zonetimezone from 00:00 to now; values are provisional.purchase_eventsPurchaseiseventsanare observedevent countevents, not confirmedorders. Revenue values are null when purchase measurement is unconfirmed; null meansorders; unverified,not zero,revenue anddoes not prove measurement is unconfigured. A table with status='error' isunavailable,not empty. Items in not_providedsections areunavailable, never 0. measurement_status='not_started' means the site has never received tracking data:notcountszero.areSample-sitenullvalues(unknown),do not0. For sample sites (is_demo=true)match the今日の状況 screen showsscreen's fixed sampledata, so these values do not match that screen.data. No event-level or visitor-level rows are returned. For comparison with yesterday at the same time, use get_summary withperiod='today'.start_date and end_date both set to today's site-local date. site_id is optional when OAuth-authenticated.
List the sites this signed-in account can analyze, in two groups.Requires a RevenueScope account (OAuth); noEach siteregistration is needed. my_sites = the sites connected to the account (display name, domain, timezone, is_demo). demo_sites = operator-curated sample sites,includeswithits timezone andthetoday'ssite'sdateis_demoinflag.thatOnlytimezone.callRequiresaOAuth;sitenoasitesampleregistrationwhenisis_demo=true.needed. Prefer my_sites; if site_id is omitted, analytics tools use theis_primary=trueprimary site. When my_sites is empty, analytics toolsdefault touse the first curated demo site andsay so; tell the user the numbers comeidentifyfromitaas samplesite, not their own. A demo site can always be viewed by passing its site_id.data.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{},"type":"object"}
⟨20 unchanged words⟩ "},"timezone":{"type":"string"},"today":{"type":"string"}},"required":["site_id","label","timezone","today","is_demo"],"type":"object"},"type" ⟨24 unchanged words⟩ "},"timezone":{"type":"string"},"today":{"type":"string"}},"required":["site_id","name","domain","is_primary","created_at","timezone","today","is_demo"],"type":"object"}, ⟨11 unchanged words⟩
⟨9 unchanged words⟩ :"string"},"type":"array"},"assumptionsalternatives":{"items":{"type":"string"},"type":"array"},"basis":{"type":"string"},"comparison_status":{"enum":["available","unavailable"],"type":"string"},"criteria":{"additionalProperties":false,"properties":{"content_namespaces":{"itemstool":{"type":"string"},"type":"array"},"min_ai_sessions":{"type":"number"},"min_pageviewsuse_for":{"type":"numberstring"}},"required":["content_namespaces","min_pageviewstool","min_ai_sessionsuse_for"],"type":"object"},"is_demo":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"missed_citation_pages":{"items":{"additionalProperties":false,"properties":{"ai_sessionsbasis":{"type":"numberstring"},"bounce_ratecomparison_status":{"typeenum":["numberavailable","nullunavailable"]},"gap_type":{"const":"missed_citation","type":"string"},"impact_score":{"type":"number"},"page":{"type":"string"},"pageviews":{"type":"number"},"reasonis_demo":{"type":"string"}},"required":["page","pageviews","bounce_rate","ai_sessions","gap_type","reason","impact_score"],"type":"object"},"type":"arrayboolean"},"mode":{"enum":["referred" ⟨129 unchanged words⟩ ,"previous_period":{"$ref":"#/properties/period/anyOf/0"},"resume_plan":{"type":["string","null"]},"revenue_status":{"enum":["confirmed","unconfirmed" ⟨84 unchanged words⟩ :"object"},"type":"array"},"site_benchmark_engaged_ratesite_id":{"type":"numberstring"},"site_idsource_rows":{"minimum":0,"type":"stringinteger"},"source_rowsstatus":{"minimumconst":0"stopped","type":"integerstring"},"total_ai_sessionsstopped_reason":{"type":"numberstring"},"truncated":{"anyOf":[{"additionalProperties ⟨20 unchanged words⟩ "object"},{"type":"null"}]},"under_monetized_ai_pages":{"items":{"additionalProperties":false,"properties":{"ai_engaged":{"type":"number"},"ai_revenue_jpy":{"type":"number"},"ai_sessions":{"type":"number"},"engaged_rate":{"type":"number"},"gap_type":{"const":"under_monetized","type":"string"},"impact_score":{"type":"number"},"page":{"type":"string"},"reason":{"type":"string"},"site_benchmark_rate":{"type":"number"}},"required":["page","ai_sessions","ai_engaged","engaged_rate","site_benchmark_rate","ai_revenue_jpy","gap_type","reason","impact_score"],"type":"object"},"type":"array"}},"required":["site_id","mode","period","basis"],"type":"object"}
⟨370 unchanged words⟩ items":{"enum":["get_breakdown","get_priority_insights","get_summary"],"type":"string"},"type":" ⟨15 unchanged words⟩ {"enum":["analytics_summary","analytics_breakdown","priority_insights","analytics_today"],"type":"string"},"show_breakdown": ⟨692 unchanged words⟩
⟨576 unchanged words⟩ page's time series use get_page_trend, and forAI-citationAI-referredgapspages use get_ai_traffic(mode='gaps'mode='referred').
Top priority insights (stopped)Return the top 3 prioritized, pre-computed DIAGNOSES for the site over the given period — 'what should I act on thisSTOPPED.week',Thisrankedtoolbynorevenuelongerimpact.returnsUnlikeinsights:get_summaryits/oldget_breakdownrules (which return data)ROAS,this applies a deterministic rule engine over KPIsaturation)period-over-perioddochanges,notper-channelmatchRPS/ROAS/saturation,theandrenewedAI-assistantRevenueScopereferraldashboard.growth,Itandalways returnsranked findings (revenue-trend swings, high-efficiency channels to scale, over-allocated low-efficiency channels, loss-making/saturated ad channels, revenue concentration risk, emerging AI traffic) — eachstatus='stopped' witha severity (risk/opportunity/watch),thenumbers,reason anda recommended action. The priority judgmenttheistoolsfixedtoinusecodeinstead (not LLM-generated). site_id is OPTIONAL when OAuth-authenticated.get_summaryDefaultfor periodis 30 days;KPIs,passget_breakdownperiod='today'/'7d'/'90d'fororchannela/rawentry-pageday/countvisitor-history(1-365changes).period and previous_period describe the KPI engine's current and previous windows; each returned insight carries source_boundaries because channel, ad-spend, and AI signals can use different source windows. ReturnsDofewernotthanpresent3anythingwhenfromfewerthisrulestoolfireas(noapadding).recommendation.
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"period":{"anyOf":[{"const":"today","type":"string"},{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"90d","type":"string"},{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"},"site_id":{"format":"uuid","type": ⟨3 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"type":"array"},"basis":{"type":"string"},"data_freshness":{"additionalProperties":false,"properties":{"bot_classification_delay_definitions":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"type":"string"},"burst_cluster_primary":{"type":"string"},"single_page_zero_dwell":{"type":"string"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"bot_classification_delay_minutes_max_by_rule":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"const":480,"type":"number"},"burst_cluster_primary":{"const":20,"type":"number"},"single_page_zero_dwell":{"const":480,"type":"number"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"delay_bounds_assume_scheduled_jobs_operational":{"const":true,"type":"boolean"},"generated_at":{"format":"date-time","type":"string"},"may_change_because":{"items":{"enum":["live_ingestion","open_window","moving_window","delayed_bot_classification"],"type":"string"},"type":"array"},"provisional":{"const":true,"type":"boolean"}},"required":["generated_at","provisional","may_change_because","bot_classification_delay_minutes_max_by_rule","bot_classification_delay_definitions","delay_bounds_assume_scheduled_jobs_operational"],"type":"object"},"insights":{"items":{"additionalProperties":false,"properties":{"change":{"type":["number","null"]},"detail":{"type":"string"},"id":{"type":"string"},"impact_score":{"type":"number"},"metric":{"type":"string"},"rank":{"type":"number"},"recommended_action":{"type":"string"},"severity":{"enum":["risk","opportunity","watch"],"type":"string"},"source_boundaries":{"items":{"$ref":"#/properties/period/properties/source_boundaries/items"},"type":"array"},"title":{"type":"string"},"value":{"type":"number"}},"required":["id","severity","title","detail","metric","value","change","recommended_action","impact_score","rank","source_boundaries"],"type":"object"},"type":"array"},"limitations":{"items":{"type":"string"},"type":"array"},"period":{"additionalProperties":false,"properties":{"calendar_dates_touched":{"minimum":0,"type":"integer"},"days":{"type":"number"},"duration_hours":{"type":"number"},"end":{"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type":"string"},"reference_end_at":{"format":"date-time","type":"string"},"reference_start_at":{"format":"date-time","type":"string"},"source_alignment":{"enum":["exact","mixed"],"type":"string"},"source_boundariesalternatives":{"items":{"additionalProperties":false,"properties":{"
{"openWorldHint":false,"readOnlyHint":true,"title":"Top priority insights (stopped)"}
⟨23 unchanged words⟩ a note when that count cannot be retrieved, and null as not applicable for a sample site's today-only window, matching get_today), period_observation_status, and ad-spend availability / Path ⟨246 unchanged words⟩
⟨417 unchanged words⟩ items":{"enum":["get_breakdown","get_priority_insights","get_summary"],"type":"string"},"type":" ⟨15 unchanged words⟩ {"enum":["analytics_summary","analytics_breakdown","priority_insights","analytics_today"],"type":"string"},"show_breakdown": ⟨136 unchanged words⟩
List the sites thiscallersigned-in account can analyze, in two groups. Requires a RevenueScope account (OAuth); no site registration is needed. my_sites = the sites connected to thesigned-inaccount (display name, domain, timezone, is_demo); empty when not signed in.. demo_sites = operator-curatedsites for tryingsampleRevenueScopesites, with timezone and the site's is_demo flag. Only call a site a sample when is_demo=true.When signed in (OAuth), prefer my_sitesPreferand,my_sites; if site_id is omitted,defaultanalytics toolstouse the is_primary=true site. WhenNOTmy_sitessignedisinempty,my_sitesanalyticsistoolsempty:defaultusetoathedemo_sitesfirstsite_iddemo site anddisclosesayitsso;is_demotellstatus.the user the numbers come from a sample site, not their own. A demo site can always be viewed by passing its site_id.
Suggest budget allocation (stopped)Return a proposed monthly budget split across paid ad channels (Google Ads / Meta / TikTok Ads / Yahoo! Ads / LINE Ads etc.). site_id is OPTIONAL when the request is OAuth-authenticated. Path B (ad spend connectedSTOPPED.—Thisanytoolchannelnowithlongerspend>0returnsinathebudgetperiod)split:weight = ROAS × (1 − saturation)thewhereoldROASmethodisreliedRS-measuredon revenue ÷spend (FD-030adA-1spend,same aswhich thedashboard — NOT platform-reported conversion_value). saturation は RSrenewed自身では推定せず、広告データとして供給された場合のみ使用するRevenueScope(推定エンジンはdashboardW17+)。値が無いチャネルはdoesROASnotのみで加重し効率投下上限をかけないtreat—aslimitationsPaidに明記する。⚠Attribution配分候補は広告プラットフォーム単位ROAS.(MetaIt/alwaysAdsstatus='stopped'…)withで、Instagramtheとreason,のようにセッション側の粒度が細かいチャネルは所属プラットフォームへ畳んで扱うalternative (FD-055)。get_breakdownPathlistsAeach(nochannel's ad spend):RPS-weighted proportional split with explicitnext±20-30%tocaveatscandidateandpaid-sessionarevenue,connect_incentive_message.notDefaultasperiodROAS)forand theunderlying ROAS/RPS data is 30 days; pass period='today' / '7d' / '90d' or a raw dayresumecountplan (1-365) to override.aLLMsnewshouldmethodpassafter`assumptions`,paid-traffic`limitations`,classification).andDo`connect_incentive_message`notthroughpresentverbatimanything—fromtheythisaretoolhardcodedashonestaaxis.recommendation.
⟨3 unchanged words⟩ additionalProperties":false,"properties":{"monthly_budget_jpy":{"maximum":100000000,"minimum":0,"type":"number"},"period":{"anyOf":[{"const":"today","type":"string"},{"const":"7d","type":"string"},{"const":"30d","type":"string"},{"const":"90d","type":"string"},{"maximum":365,"minimum":1,"type":"integer"}],"default":"30d"},"site_id":{"format":"uuid","type":"string"}},"required":["monthly_budget_jpy"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"allocationalternatives":{"items":{"additionalProperties":false,"properties":{"change_jpy":{"type":["number","null"]},"change_pct":{"type":["number","null"]},"channeltool":{"type":"string"},"current_jpy":{"type":["number","null"]},"proposed_jpy":{"type":"number"},"rationaleuse_for":{"type":"string"}},"required":["channel","current_jpy","proposed_jpy","change_jpy","change_pcttool","rationaleuse_for"],"type":"object"},"type":"array"},"assumptions":{"items":{"type":"string"},"type":"array"},"connect_incentive_messageresume_plan":{"type":["string","null"]},"expected_roas_current":{"type":["number","null"]},"expected_roas_proposed":{"type":["number","null"]},"expected_roas_uplift_pct":{"type":["number","null"]},"limitations":{"itemssite_id":{"type":"string"},"type":"array"},"monthly_budget_jpystatus":{"typeconst":"numberstopped"},"next_action":{"
{"openWorldHint":false,"readOnlyHint":true,"title":"Suggest budget allocation (stopped)"}
Today's activity — Return today's activity for a site, matching the RevenueScope 今日の状況 screen: sessions, RS-observed revenue, purchase-event count, bot-excluded sessions, new/returning sessions, and reaction tables by channel, generative-AI channel and entry page (top 50) with average duration, bounce rate and pages per session. Today is the site's time zone from 00:00 to now; values are provisional. purchase_events is an observed event count, not confirmed orders. Revenue values are null when purchase measurement is unconfirmed; null means unverified, not zero, and does not prove measurement is unconfigured. A…
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"compare_end_date":{"$ref":"#/properties/start_date"},"compare_start_date":{"$ref":"#/properties/start_date"},"end_date":{"$ref":"#/properties/start_date"},"limit":{"maximum":1000,"minimum":1, ⟨35 unchanged words⟩ "30d"},"site_id":{"format":"uuid","type":"string"},"start_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"}},"type":"object"}
⟨18 unchanged words⟩ ,"basis":{"type":"string"},"comparison_status":{"enum":["available","unavailable"],"type":"string"},"criteria":{"additionalProperties":false,"properties":{" ⟨15 unchanged words⟩ ,"min_ai_sessions"],"type":"object"},"is_demo":{"type":"boolean"},"limitations":{"items":{"type":"string" ⟨53 unchanged words⟩ ,"type":"array"},"period":{"anyOf":[{"additionalProperties":false,"properties":{"calendar_dates_touched":{"minimum":0,"type":"integer"},"days":{"type":"number"},"duration_hours":{"type":"number"},"end":{"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type":"string"},"reference_end_at":{"format":"date-time","type":"string"},"reference_start_at":{"format":"date-time","type":"string"},"source_alignment":{"enum":["exact","mixed"],"type":"string"},"source_boundaries":{"items":{"additionalProperties":false,"properties":{"applies_to":{"items":{"type":"string"},"minItems":1,"type":"array"},"boundary":{"enum":["reference_timestamp_window","database_statement_time_window","jst_calendar_dates_from_reference_start","jst_calendar_dates_from_database_window_start","jst_calendar_dates_inclusive","account_registry_not_period_scoped","derived_previous_daily_window","derived_from_current_and_previous","defined_per_output_item"],"type":"string"}},"required":["applies_to","boundary"],"type":"object"},"type":"array"},"start":{"type":"string"},"timezone":{"type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required":["start","end","days","reference_start_at","reference_end_at","window_type","reference_bounds","timezone","duration_hours","calendar_dates_touched","source_alignment","source_boundaries"],"type":"object"},{"additionalProperties":false,"properties":{"days":{"type":"number"},"end":{"type":"string"},"start":{"type":"string"}},"required":["start","end","days"],"type":"object"}]},"previous_period":{"$ref":"#/properties/period/anyOf/0"},"revenue_status":{"enum":["confirmed","unconfirmed"],"type":"string"},"rows":{"items":{"additionalProperties":false," ⟨5 unchanged words⟩ "type":["number","null"]},"comparison":{"additionalProperties":false,"properties":{"bounce_rate_delta_pp":{"type":["number","null"]},"previous_bounce_rate":{"type":["number","null"]},"previous_revenue_jpy":{"type":["number","null"]},"previous_sessions":{"type":["number","null"]},"revenue_change_pct":{"type":["number","null"]},"revenue_delta_jpy":{"type":["number","null"]},"sessions_change_pct":{"type":["number","null"]},"sessions_delta":{"type":["number","null"]}},"required":["previous_sessions","sessions_delta","sessions_change_pct","previous_revenue_jpy","revenue_delta_jpy","revenue_change_pct","previous_bounce_rate","bounce_rate_delta_pp"],"type":"object"},"last_cited_at":{"type":["string","null" ⟨2 unchanged words⟩ ":"string"},"revenue_jpy":{"type":["number","null"]},"sessions":{"type":"number"}} ⟨3 unchanged words⟩ ,"sessions","bounce_rate","revenue_jpy","last_cited_at","comparison"],"type":"object"},"type":" ⟨4 unchanged words⟩ ,"site_id":{"type":"string"},"source_rows":{"minimum":0,"type":"integer"},"total_ai_sessions":{"type":"number"},"truncated":{"anyOf":[{"additionalProperties":false,"properties":{"omitted_at_least":{"minimum":0,"type":"integer"},"shown":{"minimum":0,"type":"integer"},"source_limited":{"type":"boolean"}},"required":["shown","omitted_at_least","source_limited"],"type":"object"},{"type":"null"}]},"under_monetized_ai_pages":{"items":{"additionalProperties": ⟨52 unchanged words⟩
Consolidated breakdown tool. Pick `dimension`: 'channel' returns per-channel sessions/revenue/RPS plus`get_breakdown`engagementcompares(visitors`channel`,avg dwell seconds`entry_page`,bounce rate)andbot_excluded_count (bot sessions removed from human metrics; a channel with sessions=0 but bot_excluded_count>0 is bot-only traffic, kept so it is not`visitor_history`mistakenrows for'no traffic')theandrequested—periodwhenandadthespendprecedingisequal-lengthconnectedwindow (PathorBcompare_start_date/compare_end_date)— spend/ROAS/saturation; plus an.'Unattributed'Each row(is_unattributed=true) for purchase revenue not tied to any channel, with a revenue_breakdown summary (total_event_jpy/attributed_jpy/unattributed_jpy); pass attribution_model ('last_touch' default / 'first_touch' / 'linear' / 'time_decay')reportstocurrentswitchvalueshowpluspurchasepreviousrevenuevalues andorders are attributed across channels — same models as the dashboard's attribution selector; revenue_jpy/rps_jpy/orders/aov_jpy/cvr change,deltaswhilewheresessions/engagement/bot/spend/ROAScomparable.areChannelmodel-independentattribution_model[ad-platformsupportsrowslast_touch,is_ad_platform=truefirst_touch,are entirely model-independentlinear,revenue_jpyandrps_jpy included — they are the spend-basis view, so on them revenue_jpy ÷ spend_jpy always equals roas, up to the rounding of roas to 2 decimals; under a non-default model their revenue_jpy/rps_jpy keep the database_statement_time_window boundary shown for roas rather than the reference_timestamp_window that presentation_hints lists for rows[*].revenue_jpy], so compare models to see e.g. how much an awareness channel gains under first_touch vs last_touch.time_decay.eachAdchannelspendrowisalsogroupedcarriesthroughorders`ad_channel_mapping` (purchase orders countedsite-specificbyrowsouroverrideownglobaltrackerrows),aov_jpyandcvr derived fromcandidateitrevenue—iswithheldsummedasfromnullmatchingbelowlast_touch10sessionorders,channelsandregardlessalwaysofnullattribution_model.onCandidatead-platformvalues/areUnattributedcontextrows;only;dotheyNOTaredividenotrevenue_jpypaidbyattribution`conversions`andtonorebuildPaidAOV,Attribution`conversions`ROAS isthe ad platform's self-reported count, a different denominator. pass filter.channel to drill into that channel's campaigns (utm_campaign) with RPS/AOV/CVR — the value must becalculated.aUnattributedchannelpurchasenamerevenueexactlyappears asthis tool returns it, case included (e.g. 'Google Ads', 'Meta', 'Criteo', 'Google検索'),asinceseparatetherowmatchand isexactexcludedandfromaattributedlowercasetotals.slug`entry_page`returnsusesnothing.dashboard_entry_page_summary_window;'page'country/devicereturnsfiltersper-pagearepageviews/uniqueunsupportedvisitors/avgthere.time/bounce`visitor_history`plususes thepage `title` (whatdashboard'sthevisitor-typepagehistoryIS,rule.so`revenue_status='unconfirmed'`ameansrowavailablereadssignalsasdoannotarticleconfirmnamerevenueratherhistory:thanmonetaryafieldsslug;andnullmonetaryfordeltaspagesarewithnull,nowhilevisitsessionsincecounts2026-08-21remain—numeric; it does notbackfill) ranked byprovepageviewspurchase(limitmeasurementdefaultis20,unconfigured.maxInternal200;retrievalqueryfailuresstringsreturnstripped`isError=true`,bots excluded; each row`revenue_status='error'`,alsoandcarries`revenue:null`.GSC`is_demo`Google-searchisimpressions/clicks/ctr/avg_positionindependentmergedofbyrevenue_status.normalizedComparisonspathare—availablenullonly when thepagepreceding window hasnoobservedGSCtrendrowdata,and anoDIFFERENTpreceding-windowdenominatorfetchfromerrorpageviewsoccurred,see notes). 'session_attribute' returnsand thedevice /firsttime-of-daynon-bot,(4hnon-dwell-onlyJST)session's/site-calendarday-of-weekdate(ISO)is/onnew-vs-returningor(withbeforeAOV)the/precedingcountrywindow's(top-15startbydate.sessions`page`+and'Other',`entry_page`ISO2defaultcode,toshare_pct;atfrommostfirst-party20sessionrowsgeo,and'Unknown'reportwhenomittedIPcounts.unresolved)`filter.channel`breakdownsdrillsinintoonecampaigncall.rows. site_id isOPTIONALoptional when OAuth-authenticated. Default period isthe last30 days;pass period='today'/'7d'/'90d' or a raw day countaccepted(1-365).valuesToarematchtoday,the7d,dashboard30d,exactly90d,passorstart_date1-365.andExplicitend_datestart_date/end_date(YYYY-MM-DD,are inclusive calendar dates in theSITE'ssite's analysistime zone, both inclusive; end_date may be today) and optionally compare_start_date/compare_end_datetimezone.(dimension='page'Spend usesthem for pageviews_change; default = the equal-length range right before); when given they replace period and period.timezone reports the site time zone. For dimension='channel'inclusivewithJST dates,rows comefromthe dashboard's channel`ad_spend_daily.date`;RPCtrend andcarry no spend/ROAS/ad-platform rows (see notes); path reflects whether the range has ad spend. `filter` only applies to dimension='channel'; `limit` only appliessessiontowindowsdimension='page'.usePasssiteoptionaltimezone.countryCountry (ISO2, e.g. 'JP')and/orand device('mobile'/'desktop'/'tablet') to scope session-derived metrics across any dimension (omit = all). For dimension='channel' you can also pass visitor_type ('new'/'returning') to split the channel table by first-time vs returning visits — the split uses the DATE-based rule (no visit by the same visitor on an earlier JST day = new), the same rule the dashboard's KPI cardfiltersuses,applyNOTwhere thetracker's stored is_new_visitor flag; under it engagement fields, bot counts, ad-platformsourceaggregateRPCrows,supportsUnattributed,them;andunsupportedrevenue_breakdownaxes areomitted because their sources have no visitor_type dimension. Session rows keep ad_platform mapping metadata. Combining visitor_type with filter.channel is rejected with InvalidParams because campaign drill-down has no visitor-type axis. dimension='page' rows include pageviews_change (period-over-period % vs the previous equal-length window, nullcalled=outnewinpage).notes.
⟨36 unchanged words⟩ ,"dimension":{"enum":["channel","entry_page","visitor_history","page","session_attribute"],"type":"string"} ⟨73 unchanged words⟩
before
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"assumptions":{"items":{"type":"string"},"type":"array"},"attribution_model":{"enum":["last_touch","first_touch","linear","time_decay"],"type":"string"},"basis":{"type":"string"},"data_freshness":{"additionalProperties":false,"properties":{"bot_classification_delay_definitions":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"type":"string"},"burst_cluster_primary":{"type":"string"},"single_page_zero_dwell":{"type":"string"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"bot_classification_delay_minutes_max_by_rule":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"const":480,"type":"number"},"burst_cluster_primary":{"const":20,"type":"number"},"single_page_zero_dwell":{"const":480,"type":"number"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"delay_bounds_assume_scheduled_jobs_operational":{"const":true,"type":"boolean"},"generated_at":{"format":"date-time","type":"string"},"may_change_because":{"items":{"enum":["live_ingestion","open_window","moving_window","delayed_bot_classification"],"type":"string"},"type":"array"},"provisional":{"const":true,"type":"boolean"}},"required":["generated_at","provisional","may_change_because","bot_classification_delay_minutes_max_by_rule","bot_classification_delay_definitions","delay_bounds_assume_scheduled_jobs_operational"],"type":"object"},"dimension":{"enum":["channel","page","session_attribute"],"type":"string"},"filter":{"additionalProperties":false,"properties":{"channel":{"type":"string"}},"required":["channel"],"type":"object"},"limitations":{"items":{"type":"string"},"type":"array"},"notes":{"items":{"type":"string"},"type":"array"},"path":{"enum":["A","B"],"type":"string"},"period":{"additionalProperties":false,"properties":{"calendar_dates_touched":{"minimum":0,"type":"integer"},"days":{"type":"number"},"duration_hours":{"type":"number"},"end":{"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type":"string"},"reference_end_at":{"format":"date-time","type":"string"},"reference_start_at":{"format":"date-time","type":"string"},"source_alignment":{"enum":["exact","mixed"],"type":"string"},"source_boundaries":{"items":{"additionalProperties":false,"properties":{"applies_to":{"items":{"type":"string"},"minItems":1,"type":"array"},"boundary":{"enum":["reference_timestamp_window","database_statement_time_window","jst_calendar_dates_from_reference_start","jst_calendar_dates_from_database_window_start","jst_calendar_dates_inclusive","account_registry_not_period_scoped","derived_previous_daily_window","derived_from_current_and_previous","defined_per_output_item"],"type":"string"}},"required":["applies_to","boundary"],"type":"object"},"type":"array"},"start":{"type":"string"},"timezone":{"type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required":["start","end","days","reference_start_at","reference_end_at","window_type","reference_bounds","timezone","duration_hours","calendar_dates_touched","source_alignment","source_boundaries"],"type":"object"},"period_boundary_definitions":{"additionalProperties":false,"properties":{"account_registry_not_period_scoped":{"type":"string"},"database_statement_time_window":{"type":"string"},"defined_per_output_item":{"type":"string"},"derived_from_current_and_previous":{"type":"string"},"derived_previous_daily_window":{"type":"string"},"jst_calendar_dates_from_database_window_start":{"type":"string"},"jst_calendar_dates_from_reference_start":{"type":"string"},"jst_calendar_dates_inclusive":{"type":"string"},"path_syntax":{"const":"dot_path_with_array_wildcard","type":"string"},"reference_timestamp_window":{"type":"string"}},"required":["path_syntax","reference_timestamp_window","database_statement_time_window","jst_calendar_dates_from_reference_start","jst_calendar_dates_from_database_window_start","jst_calendar_dates_inclusive","account_registry_not_period_scoped","derived_previous_daily_window","derived_from_current_and_previous","defined_per_output_item"],"type":"object"},"presentation_hints":{"additionalProperties":false,"properties":{"avoid_long_prose":{"const":true,"type":"boolean"},"prefer_compact_visual_summary":{"const":true,"type":"boolean"},"primary_metric":{"type":"string"},"recommended_followup_tools":{"items":{"enum":["get_breakdown","get_priority_insights"],"type":"string"},"type":"array"},"recommended_sections":{"items":{"enum":["kpi_summary","trend","ad_spend_context","breakdown","priority_insights","recommended_actions"],"type":"string"},"type":"array"},"response_type":{"enum":["analytics_summary","analytics_breakdown","priority_insights"],"type":"string"},"show_breakdown":{"type":"boolean"},"show_period_comparison":{"type":"boolean"},"show_priority_insights":{"type":"boolean"},"show_trend":{"type":"boolean"}},"required":["response_type","primary_metric","show_period_comparison","show_trend","show_breakdown","show_priority_insights","prefer_compact_visual_summary","avoid_long_prose","recommended_followup_tools","recommended_sections"],"type":"object"},"previous_period":{"$ref":"#/properties/period"},"revenue_breakdown":{"additionalProperties":false,"properties":{"attributed_jpy":{"type":"number"},"total_event_jpy":{"type":"number"},"unattributed_jpy":{"type":"number"}},"required":["total_event_jpy","attributed_jpy","unattributed_jpy"],"type":"object"},"rows":{"anyOf":[{"items":{"additionalProperties":false,"properties":{"aov_jpy":{"type":["number","null"]},"avg_dwell_seconds":{"type":["number","null"]},"bot_excluded_count":{"type":["number","null"]},"bounce_rate_pct":{"type":["number","null"]},"channel":{"type":"string"},"clicks":{"type":["number","null"]},"conversion_value_jpy":{"type":["number","null"]},"conversions":{"type":["number","null"]},"cvr":{"type":["number","null"]},"impressions":{"type":["number","null"]},"is_unattributed":{"type":"boolean"},"orders":{"type":["number","null"]},"revenue_jpy":{"type":"number"},"roas":{"type":["number","null"]},"rps_jpy":{"type":["number","null"]},"saturation_pct":{"type":["number","null"]},"sessions":{"type":"number"},"spend_jpy":{"type":["number","null"]},"visitors":{"type":["number","null"]}},"required":["channel","sessions","revenue_jpy","rps_jpy","visitors","avg_dwell_seconds","bounce_rate_pct","bot_excluded_count","orders","aov_jpy","cvr","spend_jpy","impressions","clicks","conversions","conversion_value_jpy","roas","saturation_pct"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"aov_jpy":{"type":"number"},"campaign":{"type":"string"},"cvr":{"type":"number"},"revenue_jpy":{"type":"number"},"rps_jpy":{"type":"number"},"sessions":{"type":"number"}},"required":["campaign","sessions","revenue_jpy","rps_jpy","aov_jpy","cvr"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"avg_position":{"type":["number","null"]},"avg_time_on_page_seconds":{"type":["number","null"]},"bounce_rate":{"type":["number","null"]},"clicks":{"type":["number","null"]},"ctr":{"type":["number","null"]},"impressions":{"type":["number","null"]},"page":{"type":"string"},"pageviews":{"type":"number"},"pageviews_change":{"type":["number","null"]},"title":{"type":["string","null"]},"unique_visitors":{"type":"number"}},"required":["page","pageviews","unique_visitors","avg_time_on_page_seconds","bounce_rate","pageviews_change","title","impressions","clicks","ctr","avg_position"],"type":"object"},"type":"array"}]},"session_attributes":{"additionalProperties":false,"properties":{"countries":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"name":{"type":"string"},"revenue":{"type":"number"},"rps":{"type":"number"},"sessions":{"type":"number"},"share_pct":{"type":"number"}},"required":["country","name","sessions","revenue","rps","share_pct"],"type":"object"},"type":"array"},"dayofweek":{"items":{"additionalProperties":false,"properties":{"day":{"type":"string"},"iso_dow":{"type":"number"},"revenue":{"type":"number"},"rps":{"type":"number"},"sessions":{"type":"number"}},"required":["day","iso_dow","sessions","revenue","rps"],"type":"object"},"type":"array"},"devices":{"items":{"additionalProperties":false,"properties":{"cvr":{"type":"number"},"device":{"type":"string"},"revenue":{"type":"number"},"rps":{"type":"number"},"sessions":{"type":"number"}},"required":["device","sessions","revenue","rps","cvr"],"type":"object"},"type":"array"},"timeslots":{"items":{"additionalProperties":false,"properties":{"hour_start":{"type":"number"},"revenue":{"type":"number"},"rps":{"type":"number"},"sessions":{"type":"number"},"slot":{"type":"string"}},"required":["slot","hour_start","sessions","revenue","rps"],"type":"object"},"type":"array"},"visitor_types":{"items":{"additionalProperties":false,"properties":{"aov":{"type":["number","null"]},"cvr":{"type":"number"},"is_new_visitor":{"type":"boolean"},"revenue":{"type":"number"},"rps":{"type":"number"},"sessions":{"type":"number"},"type":{"type":"string"}},"required":["type","is_new_visitor","sessions","revenue","rps","cvr","aov"],"type":"object"},"type":"array"}},"required":["devices","timeslots","dayofweek","visitor_types","countries"],"type":"object"},"site_id":{"type":"string"},"total_pages":{"type":"number"},"total_pageviews":{"type":"number"},"truncated":{"anyOf":[{"additionalProperties":false,"properties":{"omitted_pages":{"type":"number"},"omitted_pageviews":{"type":"number"}},"required":["omitted_pages","omitted_pageviews"],"type":"object"},{"type":"null"}]}},"required":["site_id","dimension","period","data_freshness","period_boundary_definitions","presentation_hints"],"type":"object"}Returnthe fullheadlinesummary for a site and period in ONE call: the 5KPIs (revenue, sessions, RPS, AOV, CVR)PLUS two, engagementKPIs (avg_durationmetrics,=currentaverageanddwellprevioustimedailyintrendsseconds,withbounce_ratecumulative=revenue,%bot-excludedsingle-page-exitsessionsessions)counteach(null withvalue AND theaperiod-over-periodnotechangewhenvsthatthecountpreviouscannotequal-lengthbewindowretrieved),PLUS a daily revenue/sessions/conversions trendperiod_observation_status,PLUSand ad-spend availability(connected_channels, ad_spend_data_status, ad_spend_channels_in_period) and the/ Path A/Brecommendation. avg_duration/bounce_rate are usefulcontext forsites with no revenue yet (engagement view). scroll_depth is the average scroll depth (%), taken per session as its deepest point then averaged; its change isapercentage-point delta. IMPORTANT: its denominator differs from avg_duration/bounce_rate — depth only covers sessionssitewhoseandexitperiod.beaconRevenue-dependentlanded,metrics andsessions withouttrendonerevenue areexcluded rather than counted as 0. scroll_depth isnullwhenunlessthepurchasewindowmeasurementholdsisnoconfirmed;depthnullsignalmeansatunverified,allnot(0%zero.wouldWhenreadaasconfirmed'readperiodshallowly'haswhennothetraffic,truthperiod_observation_status is'not measured'); depth has onlyno_observationbeenandcollectedcurrentsincerevenue,2026-06-15RPS,soAOV,longerandwindowsCVR arepartial. Pass optional countrynull;(ISO2,observede.g.zero'JP')revenueand/orremainsdevicenumeric('mobile'/'desktop'/'tablet')zero.toAscopemissingtherevenuesession-derivedhistoryKPIsaloneanddoestrendnottoshow thatsegment (omit = all); ROAS stays site-wide (ad spend has no country/device dimension).purchaseThismeasurement iswhat the dashboard's KPI cardsunconfigured.+Whenrevenue-trendrevenuechartisshowunverified,merged with the site'sexplainad-spendthatcontext.salesCallarethisunverifiedfirstandwhenguideathe userasks 'how is my site doing?'. site_id is OPTIONAL when OAuth-authenticated (server falls backtothe primarychecksite).purchaseDefaultmeasurement;perioddoisnottheclaimlastit30isdays;notpasssetperiod='today'/'7d'/'90d'up.orOn araw day count (1-365). To match the dashboard exactly, pass start_daterequiredandcurrent-dataend_dateretrieval(YYYY-MM-DDfailure,calendar dates intheSITE's analysistooltimereturnszoneisError=true,both inclusive; end_date may berevenue_status='error',today)revenue=null andoptionally compare_start_date/compare_end_date (default: the equal-length range right beforeerror_code='retrieval_failed';start_date);neverwhenreadgivenittheyasreplacezero.period,Aperiod.timezoneprevious-windowreportsRPCthefailuresitekeepstimecurrentzone,data andkpis.roas is null (see notes)makesbecausecomparison_statustheunavailable,dashboardwithdoespreviousnotKPI/trendprovidefieldsad-attributednull.ROAS.Trendchangeconversions isa percentage for revenue/sessions/RPS/AOV/avg_duration andanabsolute percentage-point deltaobservedforpurchase-eventCVRcount andbounce_rate. For period='today' the comparisonistoday-so-far vs the SAME elapsednotwindowayesterdayconfirmation(e.g.ofmidnight→nowrevenuevsmeasurement.midnight→same-time-yesterday),PaidsoAttribution'previous'ROAScanisreadunavailable;belowkpis.roasyesterday'sremainsfull-daynulltotalfor—responsethatcompatibilityisandexpected,must nota discrepancy. EXCEPTION:bekpis.roas.previouspresentedusesastheafullmeasuredpriorROAS.JSTSessionscalendaranddayengagementbecausemetricsspendremainisavailabledaily-grained;independently.previous_period.source_boundariesAOV andperiod_boundary_definitions disclose that different window. ad_spend_data_statusRPS/aread_spend_channels_in_periodnullreflectwhenspendtheirdatadenominatorACTUALLYispresentzero.inUsetheoptionalperiodcountry (consistentISO2,withe.g.get_channel_breakdown'JP');path_recommendation reflects whether the requested period holds any channel withand/orspend>0device (Path B ='mobile'/'desktop'/'tablet')adtospendscopeconnected),session-derivedthemetrics.samesite_iddefinitionistheoptionalotherwhentoolsOAuth-authenticated.use.Defaultkpis.roasperiod is theSITE-WIDE ROAS (RS-measured revenue ÷lastad30spenddays;overpasschannelsperiod='today'/'7d'/'90d'thatorhaveaspendraw—dayΣrevenuecount÷(1-365).Σspend,Fortheexactsamecalendardefinitiondatesasin thedashboard's overallsite'sROAS;analysisthetimespend-weightedzone,aggregatepassofstart_dateget_breakdown'sandper-channelend_date,ROAS)optionally withvalue/previous/change (前期比 from a current + previouscomparison2-windowdates.computation);Revenue/sessions/RPS/AOV/avg_durationitchange isnull on PathpercentageAor/null when theperiod has no ad spendprior(ROASvalue isundefined with zero spend), so render it only when present. When the PREVIOUS window has no spend,zero;roas.previousCVR androas.change are null (unknown baseline, not 0.00x) — treat that as 'no prior-period comparison',bounce_rateneverchangeasis adrop frompercentage-pointzero.delta.
⟨22 unchanged words⟩ ,"basis":{"type":"string"},"bot_excluded_count":{"type":["number","null"]},"comparison_status":{"enum":["available","unavailable"],"type":"string"},"connected_channels":{"items":{"type":"string" ⟨82 unchanged words⟩ ,"delay_bounds_assume_scheduled_jobs_operational"],"type":"object"},"is_demo":{"type":"boolean"},"kpis":{"additionalProperties":false,"properties":{" ⟨50 unchanged words⟩ false,"properties":{"change":{"type":"number"},"previous":{"type":"number"},"value":{"type":"number"}},"required":["value","previousnumber","changenull"],"type":"object"},"roas":{"anyOf":[{"additionalProperties":false,"properties":{"changeprevious":{"type":["number","null"]},"previousvalue":{"type":["number","null"]},"value":{"type":"number"}},"required":["value","previous","change"],"type":"object"},"roas":{"type":"null"}]},"rps":{"$ref":"#/properties/kpis/properties/revenue"}," ⟨183 unchanged words⟩ ,"defined_per_output_item"],"type":"object"},"period_observation_status":{"enum":["observed","no_observation"],"type":"string"},"
⟨12 unchanged words⟩ the sites connected to the signed-in account (each with itsdisplay name+, domain,so you can match phrases like "the production site" or "revenuescope.jp" without the user pasting atimezone,UUIDis_demo); empty whenthe caller isnot signed in. demo_sites =ready-made sampleoperator-curated sites for trying RevenueScope,beforewithconnectingtimezoneyourandownthe—site'seachis_demoisflag.aOnlyfictionalcall a sitewitha sampledata, not a realwhencustomer.is_demo=true. When signed in (OAuth), prefer my_sites ⟨17 unchanged words⟩ is empty: use a demo_sites site_id andtell the user the numbers come from a sample site,disclosenotitstheiris_demoown.status.
⟨7 unchanged words⟩ items":{"additionalProperties":false,"properties":{"is_demo":{"type":"boolean"},"label":{"type":"string"},"site_id":{"type":"string"},"timezone":{"type":"string"}},"required":["site_id","label","timezone","is_demo"],"type":"object"},"type":" ⟨9 unchanged words⟩ ,"domain":{"type":"string"},"is_demo":{"type":"boolean"},"is_primary":{"type":"boolean"},"name":{"type":"string"},"site_id":{"type":"string"},"timezone":{"type":"string"}},"required":["site_id","name","domain","is_primary","created_at","timezone","is_demo"],"type":"object"},"type": ⟨10 unchanged words⟩
RevenueScope metric definitions — Return RevenueScope metric definitions, measurement boundaries, and the meaning of confirmed, unconfirmed, zero, sample, comparison-unavailable and retrieval-error states. This is generic metadata; use a site-scoped analytics tool for values. A missing purchase history does not prove purchase tracking is unconfigured.
⟨215 unchanged words⟩ {"type":"string"},"timezone":{"const":"Asia/Tokyo","type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required" ⟨562 unchanged words⟩
⟨239 unchanged words⟩ {"type":"string"},"timezone":{"const":"Asia/Tokyo","type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required" ⟨157 unchanged words⟩
⟨246 unchanged words⟩ or a raw day count (1-365). To match the dashboard exactly, pass start_date and end_date (YYYY-MM-DD, calendar dates in the SITE's analysis time zone, both inclusive; end_date may be today) and optionally compare_start_date/compare_end_date (default: the equal-length range right before start_date); when given they replace period, period.timezone reports the site time zone, and kpis.roas is null (see notes) because the dashboard does not provide ad-attributed ROAS. change is a percentage for revenue/sessions/RPS/AOV/avg_duration and an ⟨197 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"compare_end_date":{"$ref":"#/properties/start_date"},"compare_start_date":{"$ref":"#/properties/start_date"},"country":{"maxLength":2,"minLength":2, ⟨6 unchanged words⟩ ,"tablet"],"type":"string"},"end_date":{"$ref":"#/properties/start_date"},"period":{"anyOf":[{"const":"today ⟨21 unchanged words⟩ "30d"},"site_id":{"format":"uuid","type":"string"},"start_date":{"pattern":"^\\d{4}-\\d{2}-\\d{2}$","type":"string"}},"type":"object"}
⟨233 unchanged words⟩ ,"roas"],"type":"object"},"notes":{"items":{"type":"string"},"type":"array"},"path_recommendation":{"enum":["A","B" ⟨75 unchanged words⟩ {"type":"string"},"timezone":{"const":"Asia/Tokyo","type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required" ⟨187 unchanged words⟩
after
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"ad_spend_candidates":{"items":{"additionalProperties":false,"properties":{"ad_channel":{"type":"string"},"candidate_revenue_delta_jpy":{"type":["number","null"]},"candidate_revenue_jpy":{"type":["number","null"]},"previous_candidate_revenue_jpy":{"type":["number","null"]},"previous_spend_jpy":{"type":["number","null"]},"spend_delta_jpy":{"type":["number","null"]},"spend_jpy":{"type":"number"}},"required":["ad_channel","spend_jpy","candidate_revenue_jpy","previous_spend_jpy","spend_delta_jpy","previous_candidate_revenue_jpy","candidate_revenue_delta_jpy"],"type":"object"},"type":"array"},"assumptions":{"items":{"type":"string"},"type":"array"},"attribution_model":{"enum":["last_touch","first_touch","linear","time_decay"],"type":"string"},"basis":{"type":"string"},"comparison_status":{"enum":["available","unavailable"],"type":"string"},"data_freshness":{"additionalProperties":false,"properties":{"bot_classification_delay_definitions":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"type":"string"},"burst_cluster_primary":{"type":"string"},"single_page_zero_dwell":{"type":"string"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"bot_classification_delay_minutes_max_by_rule":{"additionalProperties":false,"properties":{"burst_cluster_fallback":{"const":480,"type":"number"},"burst_cluster_primary":{"const":20,"type":"number"},"single_page_zero_dwell":{"const":480,"type":"number"}},"required":["burst_cluster_primary","burst_cluster_fallback","single_page_zero_dwell"],"type":"object"},"delay_bounds_assume_scheduled_jobs_operational":{"const":true,"type":"boolean"},"generated_at":{"format":"date-time","type":"string"},"may_change_because":{"items":{"enum":["live_ingestion","open_window","moving_window","delayed_bot_classification"],"type":"string"},"type":"array"},"provisional":{"const":true,"type":"boolean"}},"required":["generated_at","provisional","may_change_because","bot_classification_delay_minutes_max_by_rule","bot_classification_delay_definitions","delay_bounds_assume_scheduled_jobs_operational"],"type":"object"},"dimension":{"enum":["channel","entry_page","visitor_history","page","session_attribute"],"type":"string"},"error_code":{"type":"string"},"filter":{"additionalProperties":false,"properties":{"channel":{"type":"string"}},"required":["channel"],"type":"object"},"is_demo":{"type":"boolean"},"limitations":{"items":{"type":"string"},"type":"array"},"message":{"type":"string"},"notes":{"items":{"type":"string"},"type":"array"},"path":{"enum":["A","B"],"type":"string"},"period":{"additionalProperties":false,"properties":{"calendar_dates_touched":{"minimum":0,"type":"integer"},"days":{"type":"number"},"duration_hours":{"type":"number"},"end":{"type":"string"},"reference_bounds":{"const":"start_inclusive_end_exclusive","type":"string"},"reference_end_at":{"format":"date-time","type":"string"},"reference_start_at":{"format":"date-time","type":"string"},"source_alignment":{"enum":["exact","mixed"],"type":"string"},"source_boundaries":{"items":{"additionalProperties":false,"properties":{"applies_to":{"items":{"type":"string"},"minItems":1,"type":"array"},"boundary":{"enum":["reference_timestamp_window","database_statement_time_window","jst_calendar_dates_from_reference_start","jst_calendar_dates_from_database_window_start","jst_calendar_dates_inclusive","account_registry_not_period_scoped","derived_previous_daily_window","derived_from_current_and_previous","defined_per_output_item"],"type":"string"}},"required":["applies_to","boundary"],"type":"object"},"type":"array"},"start":{"type":"string"},"timezone":{"type":"string"},"window_type":{"enum":["rolling","calendar_to_date","comparison","calendar_range"],"type":"string"}},"required":["start","end","days","reference_start_at","reference_end_at","window_type","reference_bounds","timezone","duration_hours","calendar_dates_touched","source_alignment","source_boundaries"],"type":"object"},"period_boundary_definitions":{"additionalProperties":false,"properties":{"account_registry_not_period_scoped":{"type":"string"},"database_statement_time_window":{"type":"string"},"defined_per_output_item":{"type":"string"},"derived_from_current_and_previous":{"type":"string"},"derived_previous_daily_window":{"type":"string"},"jst_calendar_dates_from_database_window_start":{"type":"string"},"jst_calendar_dates_from_reference_start":{"type":"string"},"jst_calendar_dates_inclusive":{"type":"string"},"path_syntax":{"const":"dot_path_with_array_wildcard","type":"string"},"reference_timestamp_window":{"type":"string"}},"required":["path_syntax","reference_timestamp_window","database_statement_time_window","jst_calendar_dates_from_reference_start","jst_calendar_dates_from_database_window_start","jst_calendar_dates_inclusive","account_registry_not_period_scoped","derived_previous_daily_window","derived_from_current_and_previous","defined_per_output_item"],"type":"object"},"presentation_hints":{"additionalProperties":false,"properties":{"avoid_long_prose":{"const":true,"type":"boolean"},"prefer_compact_visual_summary":{"const":true,"type":"boolean"},"primary_metric":{"type":"string"},"recommended_followup_tools":{"items":{"enum":["get_breakdown","get_priority_insights"],"type":"string"},"type":"array"},"recommended_sections":{"items":{"enum":["kpi_summary","trend","ad_spend_context","breakdown","priority_insights","recommended_actions"],"type":"string"},"type":"array"},"response_type":{"enum":["analytics_summary","analytics_breakdown","priority_insights"],"type":"string"},"show_breakdown":{"type":"boolean"},"show_period_comparison":{"type":"boolean"},"show_priority_insights":{"type":"boolean"},"show_trend":{"type":"boolean"}},"required":["response_type","primary_metric","show_period_comparison","show_trend","show_breakdown","show_priority_insights","prefer_compact_visual_summary","avoid_long_prose","recommended_followup_tools","recommended_sections"],"type":"object"},"previous_period":{"$ref":"#/properties/period"},"revenue":{"type":["number","null"]},"revenue_breakdown":{"additionalProperties":false,"properties":{"attributed_jpy":{"type":"number"},"total_event_jpy":{"type":"number"},"unattributed_jpy":{"type":"number"}},"required":["total_event_jpy","attributed_jpy","unattributed_jpy"],"type":"object"},"revenue_status":{"enum":["confirmed","unconfirmed","error"],"type":"string"},"rows":{"anyOf":[{"items":{"additionalProperties":false,"properties":{"ad_platform":{"type":["string","null"]},"aov_jpy":{"type":["number","null"]},"avg_dwell_seconds":{"type":["number","null"]},"bot_excluded_count":{"type":["number","null"]},"bounce_rate_pct":{"type":["number","null"]},"channel":{"type":"string"},"clicks":{"type":["number","null"]},"conversion_value_jpy":{"type":["number","null"]},"conversions":{"type":["number","null"]},"cvr":{"type":["number","null"]},"impressions":{"type":["number","null"]},"is_ad_platform":{"type":"boolean"},"is_unattributed":{"type":"boolean"},"mapped_channels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}]},"orders":{"type":["number","null"]},"previous_revenue_jpy":{"type":["number","null"]},"previous_sessions":{"type":["number","null"]},"revenue_change_pct":{"type":["number","null"]},"revenue_delta_jpy":{"type":["number","null"]},"revenue_jpy":{"type":["number","null"]},"roas":{"type":["number","null"]},"rps_jpy":{"type":["number","null"]},"saturation_pct":{"type":["number","null"]},"sessions":{"type":["number","null"]},"sessions_change_pct":{"type":["number","null"]},"sessions_delta":{"type":["number","null"]},"spend_jpy":{"type":["number","null"]},"visitors":{"type":["number","null"]}},"required":["channel","sessions","revenue_jpy"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"aov_jpy":{"type":["number","null"]},"campaign":{"type":"string"},"cvr":{"type":"number"},"revenue_jpy":{"type":["number","null"]},"rps_jpy":{"type":["number","null"]},"sessions":{"type":"number"}},"required":["campaign","sessions","revenue_jpy","rps_jpy","aov_jpy","cvr"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"avg_position":{"type":["number","null"]},"avg_time_on_page_seconds":{"type":["number","null"]},"bounce_rate":{"type":["number","null"]},"clicks":{"type":["number","null"]},"ctr":{"type":["number","null"]},"impressions":{"type":["number","null"]},"page":{"type":"string"},"pageviews":{"type":"number"},"pageviews_change":{"type":["number","null"]},"title":{"type":["string","null"]},"unique_visitors":{"type":"number"}},"required":["page","pageviews","unique_visitors","avg_time_on_page_seconds","bounce_rate","pageviews_change","title","impressions","clicks","ctr","avg_position"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"avg_session_duration_seconds":{"type":["number","null"]},"bounce_rate":{"type":["number","null"]},"page":{"type":"string"},"previous_revenue_jpy":{"type":["number","null"]},"previous_sessions":{"type":["number","null"]},"revenue_change_pct":{"type":["number","null"]},"revenue_delta_jpy":{"type":["number","null"]},"revenue_jpy":{"type":["number","null"]},"sessions":{"type":"number"},"sessions_change_pct":{"type":["number","null"]},"sessions_delta":{"type":["number","null"]}},"required":["page","sessions","revenue_jpy","avg_session_duration_seconds","bounce_rate","previous_sessions","sessions_delta","sessions_change_pct","previous_revenue_jpy","revenue_delta_jpy","revenue_change_pct"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"is_new_visitor":{"type":"boolean"},"previous_revenue_jpy":{"type":["number","null"]},"previous_sessions":{"type":["number","null"]},"revenue_change_pct":{"type":["number","null"]},"revenue_delta_jpy":{"type":["number","null"]},"revenue_jpy":{"type":["number","null"]},"sessions":{"type":"number"},"sessions_change_pct":{"type":["number","null"]},"sessions_delta":{"type":["number","null"]},"type":{"type":"string"}},"required":["type","is_new_visitor","sessions","revenue_jpy","previous_sessions","sessions_delta","sessions_change_pct","previous_revenue_jpy","revenue_delta_jpy","revenue_change_pct"],"type":"object"},"type":"array"},{"items":{"additionalProperties":false,"properties":{"avg_session_duration_seconds":{"type":["number","null"]},"bounce_rate":{"type":["number","null"]},"page":{"type":"string"},"previous_revenue_jpy":{"type":["number","null"]},"previous_sessions":{"type":["number","null"]},"revenue_change_pct":{"type":["number","null"]},"revenue_delta_jpy":{"type":["number","null"]},"revenue_jpy":{"type":["number","null"]},"sessions":{"type":"number"},"sessions_change_pct":{"type":["number","null"]},"sessions_delta":{"type":["number","null"]}},"required":["page","sessions","revenue_jpy","avg_session_duration_seconds","bounce_rate","previous_sessions","sessions_delta","sessions_change_pct","previous_revenue_jpy","revenue_delta_jpy","revenue_change_pct"],"type":"object"},"type":"array"}]},"session_attributes":{"additionalProperties":false,"properties":{"countries":{"items":{"additionalProperties":false,"properties":{"country":{"type":"string"},"name":{"type":"string"},"revenue":{"type":["number","null"]},"rps":{"type":["number","null"]},"sessions":{"type":"number"},"share_pct":{"type":"number"}},"required":["country","name","sessions","revenue","rps","share_pct"],"type":"object"},"type":"array"},"dayofweek":{"items":{"additionalProperties":false,"properties":{"day":{"type":"string"},"iso_dow":{"type":"number"},"revenue":{"type":["number","null"]},"rps":{"type":["number","null"]},"sessions":{"type":"number"}},"required":["day","iso_dow","sessions","revenue","rps"],"type":"object"},"type":"array"},"devices":{"items":{"additionalProperties":false,"properties":{"cvr":{"type":"number"},"device":{"type":"string"},"revenue":{"type":["number","null"]},"rps":{"type":["number","null"]},"sessions":{"type":"number"}},"required":["device","sessions","revenue","rps","cvr"],"type":"object"},"type":"array"},"timeslots":{"items":{"additionalProperties":false,"properties":{"hour_start":{"type":"number"},"revenue":{"type":["number","null"]},"rps":{"type":["number","null"]},"sessions":{"type":"number"},"slot":{"type":"string"}},"required":["slot","hour_start","sessions","revenue","rps"],"type":"object"},"type":"array"},"visitor_types":{"items":{"additionalProperties":false,"properties":{"aov":{"type":["number","null"]},"cvr":{"type":"number"},"is_new_visitor":{"type":"boolean"},"revenue":{"type":["number","null"]},"rps":{"type":["number","null"]},"sessions":{"type":"number"},"type":{"type":"string"}},"required":["type","is_new_visitor","sessions","revenue","rps","cvr","aov"],"type":"object"},"type":"array"}},"required":["devices","timeslots","dayofweek","visitor_types","countries"],"type":"object"},"site_id":{"type":"string"},"total_entries":{"type":"number"},"total_pages":{"type":"number"},"total_pageviews":{"type":"number"},"truncated":{"anyOf":[{"additionalProperties":false,"properties":{"omitted_entries":{"type":"number"},"omitted_pages":{"type":"number"},"omitted_pageviews":{"type":"number"},"omitted_sessions":{"type":"number"},"total_sessions":{"type":"number"}},"type":"object"},{"type":"null"}]}},"required":["site_id","dimension","period","data_freshness","period_boundary_definitions","presentation_hints"],"type":"object"}