{"schemaVersion":"kam_public_semantic_interface.v1","firstPrinciples":["A chat request has two parts: the visible prompt and the request context the React Native screen attaches before sending.","The visible prompt should name the sport, team, date, source, saved read, or workspace scope before asking for interpretation.","The request context should lock the lane with sportFocus, dataSource, responseView, timeScope, bookmakerSelection, and useCase when the UI already knows those values.","The answer must separate active response scope from adjacent data availability. A generic sportsbook board can report Polymarket availability without rendering a full cross-market comparison.","Missing, stale, thin, or blocked data is a valid answer state. Kam should not fill source gaps from priors.","Every useful response should expose the current read, source state, caveat, and one next action."],"fields":[{"field":"surface","fromReactNative":"Quick prompt tiles and chat entry points","job":"Names where the request came from so routing can preserve product intent.","example":"summary_ask"},{"field":"analysisTier","fromReactNative":"Quick prompt requestContextOverrides","job":"Sets expected latency and depth for the turn.","example":"fast"},{"field":"serverManagedRouting","fromReactNative":"Quick prompts and odds-board detection","job":"Lets the backend choose the exact lane while preserving UI intent.","example":"true"},{"field":"answerSurface","fromReactNative":"Quick prompt requestContextOverrides","job":"Keeps the response optimized for the chat screen.","example":"chat"},{"field":"sportFocus","fromReactNative":"Controller sport selector or prompt text resolver","job":"Bounds the source query to one sport when known.","example":"baseball_mlb"},{"field":"dataSource","fromReactNative":"Controller source selector","job":"Chooses sportsbook prices, Polymarket, or a blended source path.","example":"sportsbooks | polymarket | both"},{"field":"responseView","fromReactNative":"Controller view mode or quick prompt override","job":"Selects the UI/result shape the assistant should produce.","example":"odds_board | all_games | market_alignment | quick_read"},{"field":"timeScope","fromReactNative":"Controller time selector","job":"Bounds today, tomorrow, this week, or a pinned date.","example":"today"},{"field":"bookmakerSelection","fromReactNative":"Controller sportsbook selector","job":"Controls best available, all books, or a named sportsbook.","example":"best_available | all_books | fanduel"},{"field":"preferredSportsbooks","fromReactNative":"User preference and controller state","job":"Orders sportsbook reads without hiding other requested books.","example":"[\"fanduel\"]"},{"field":"useCase","fromReactNative":"Prompt chip expectedIntent or odds-board detection","job":"Names the backend product job, such as board summary or schedule count.","example":"daily_odds_board_summary"},{"field":"pinnedDate","fromReactNative":"Pinned board/game state","job":"Freezes the date when the user is inspecting a specific slate.","example":"2026-07-12"},{"field":"dailyOddsBoardReadModelRequired","fromReactNative":"Explicit board-odds request detection","job":"Requires the materialized daily odds board instead of an ad hoc read.","example":"true"},{"field":"platformPanelContext.dataPlane","fromReactNative":"ChatScreenUtils hot-read context","job":"Tells agents which durable read path must support the answer.","example":"materialized_daily_odds_board_view"},{"field":"gameHandoff","fromReactNative":"Game details and game workspace handoff","job":"Carries selected game, matchup, book, hot-read keys, and snapshot age.","example":"selected MLB game with hotRead keys"},{"field":"workspaceId","fromReactNative":"Workspace session state","job":"Keeps saved reads, artifacts, and follow-up turns in the right workspace.","example":"saved workspace id"},{"field":"promptRouteId","fromReactNative":"attachKamPromptRouteToRequestContext","job":"Records the selected route for debugging, receipts, and retries.","example":"odds.board.daily"}],"examples":[{"id":"mlb-odds-board","request":"Show me MLB odds","expectedIntent":"daily_odds_board_summary","responseView":"odds_board","capabilityId":"kam.cap.sports.board.list.by_date.v1","typedActionId":"kam.act.sports.board.show.v1","requestContext":{"surface":"summary_ask","analysisTier":"fast","serverManagedRouting":true,"answerSurface":"chat","sportFocus":"baseball_mlb","dataSource":"sportsbooks","responseView":"odds_board","timeScope":"today","bookmakerSelection":"best_available","useCase":"daily_odds_board_summary","dailyOddsBoardReadModelRequired":true}},{"id":"schedule-count","request":"How many Yankees games are in June?","expectedIntent":"schedule_count","responseView":"all_games","capabilityId":"kam.cap.sports.schedule.list.by_week.v1","typedActionId":"kam.act.sports.schedule.navigate.by_week.v1","requestContext":{"surface":"chat","analysisTier":"fast","answerSurface":"chat","sportFocus":"baseball_mlb","responseView":"all_games","timeScope":"this_week","useCase":"schedule_count"}},{"id":"market-alignment","request":"Where do sportsbooks and Polymarket disagree?","expectedIntent":"market_shape","responseView":"market_alignment","capabilityId":"kam.cap.sports.market.compare_polymarket.v1","typedActionId":"kam.act.sports.market.compare_polymarket.v1","requestContext":{"surface":"chat","analysisTier":"deep","serverManagedRouting":true,"answerSurface":"chat","sportFocus":"baseball_mlb","dataSource":"both","responseView":"market_alignment","bookmakerSelection":"all_books","useCase":"market_shape"}},{"id":"watchlist-changes","request":"What changed on my watchlist?","expectedIntent":"market_shape","responseView":"quick_read","capabilityId":"kam.cap.workspace.view.switch_view.v1","typedActionId":"kam.act.workspace.view.open.v1","requestContext":{"surface":"chat","analysisTier":"fast","answerSurface":"chat","responseView":"quick_read","useCase":"market_shape","workspaceId":"saved workspace"}},{"id":"score-context","request":"Did the Lakers game finish?","expectedIntent":"scores_context","responseView":"quick_read","capabilityId":"kam.cap.sports.game.get.detail.v1","typedActionId":"kam.act.sports.game.open.v1","requestContext":{"surface":"chat","analysisTier":"fast","answerSurface":"chat","sportFocus":"basketball_nba","responseView":"quick_read","useCase":"scores_context"}},{"id":"futures-context","request":"Who is favored to win the NBA championship?","expectedIntent":"futures","responseView":"quick_read","capabilityId":"kam.cap.sports.board.list.by_date.v1","typedActionId":"kam.act.sports.board.show.v1","requestContext":{"surface":"chat","analysisTier":"fast","answerSurface":"chat","sportFocus":"basketball_nba","responseView":"futures","useCase":"futures"}}]}