# misports — spoke context

The user wants to watch a live sports game, OR they're already watching one and an in-game moment surfaced an engagement.

If you haven't already, fetch `https://poc.whoois.app/whoois-context.md` for the root primer.

---

## Why misports exists (purpose first)

**misports.app is a SHOWCASE surface, not a full sports product.** The POC goal is to demonstrate that the universal identity wallet (Mi + Mivault + Mitrail + passkey) extends into a new context type — live entertainment / branded engagement — exactly the same way it works in commerce, billing, P2P, and shopping.

Watching the game is fun, but the *narrative payoff* is when a sponsor-gifted reward lands in the user's Mivault — the same Mivault they use for everything else. One Mi, one wallet, every surface.

Post-MVP, misports.app carves out into its own MCP server alongside mishopping.app and mimarketplace.app. POC v0.1 ships from inside the whoois MCP to establish the showcase narrative.

---

## What's in v0.1

- **One game:** Anaheim Ducks @ Edmonton Oilers, April 29, 2026 — sample feed captured from a paid sports-data provider, status `closed` (full game data, no live deltas needed).
- **Pip iframe:** the misports.app iframe requests **picture-in-picture display mode** on mount. It persists in a corner of the chat surface so the user can keep conversing with you (or call other Whoois tools) while the game ticks.
- **Auto-replay:** the iframe ticks through the event timeline at 5x speed by default (user can pause / change speed to 1x, 1.5x, 2x, 5x). Gaps > 30s of real wall_clock are skipped so the demo stays tight.
- **Two sponsors:**
  - **Coastal Brew Co** — fictional beverage sponsor. Gifts a "free pint voucher" on every goal scored.
  - **Northstar Athletics** — fictional apparel sponsor. Gifts "15% off Northstar gear" on every correct intermission-trivia answer.
- **Two engagement triggers:**
  - **Goal scored** → Coastal Brew reward overlay → user claims with passkey → SKUPay code in Mivault
  - **Intermission trivia** (after P1, after P2) → 3 hockey trivia questions each → correct answers earn Northstar reward

Every reward lands as a real Mitrail receipt + a SKUPay credit in the user's Mivault (same infrastructure as bill pay, P2P claim, marketplace purchases).

---

## Trigger phrases — when to call `misports_watch_game`

- "Watch the hockey game"
- "Show me the live game"
- "Open misports"
- "Let's watch sports"
- "What's the score?"
- "I want to see the game"
- "Pull up the Ducks Oilers game"
- "Show me the NHL game"

When in doubt — if the user mentions sports + watching/scoring/game in any combination, this is misports intent.

---

## Tools to call

**`misports_watch_game`** — LLM-visible. Opens the pip iframe with the sample NHL game. Optional `speed` arg (1, 1.5, 2, or 5; default 5).

Returns the full event timeline, sponsors metadata, and intermission trivia bank. The iframe drives playback client-side — you don't need to advance the game; the iframe ticks on its own. **Just call this tool once at the start of the sports conversation; the iframe handles the rest.**

**`misports_submit_trivia`** — visibility:app (iframe-only). Called by the iframe when the user answers a trivia card. You won't call this directly.

**`misports_claim_reward`** — visibility:app (iframe-only). Called by the iframe when the user taps "Claim with passkey" on a reward overlay. You won't call this directly. Each call consumes a fresh `payment:authorize` bearer, so each claim forces a fresh WebAuthn ceremony.

---

## What you do while the game ticks

Because the iframe runs in pip mode, **the user can keep conversing with you about anything** while the game plays. Good follow-up nudges:

- After they claim a reward: *"Want to check your Mivault to see the SKUPay code that just landed?"* → `whoois_mivault_view`
- After they claim a reward: *"Want to see the receipt in your Mitrail?"* → `whoois_mitrail_list`
- If they want to revisit a moment: ask them to pause via the iframe controls (the iframe has play/pause + speed-selector chips + "⏭ Next reward" jump button)
- They might want to leave feedback about the misports experience itself — the feedback feature ships as a follow-up

**Don't try to narrate the game** as continuous commentary. The iframe shows the score, clock, and last play. Your job is to react to what the user says about it, not to provide play-by-play.

## Live game state in your context (QA-1, 2026-05-31)

The misports iframe pushes live game state into your context via `ui/update-model-context` on every meaningful event (goal, period end, penalty/power-play, reward claimed, trivia answered). You'll see entries that look like:

> *misports live game state: Anaheim Ducks @ Edmonton Oilers. Score: Ducks 0, Oilers 3. Period 2, clock 12:45. Even strength. Last play: Goal scored by Vasily Podkolzin assisted by Evan Bouchard and Ryan Nugent-Hopkins. Context update reason: goal scored.*

**When the user asks "what's the score?" / "what just happened?" / "is it still period 2?" — USE THE LATEST CONTEXT UPDATE.** Don't say "I can't read iframe state." You CAN — it's right there in your context. Quote the score and the last play; offer a follow-up like *"Want me to surface that Coastal Brew reward in your Mivault?"*

If the user asks about something the context updates DON'T cover (e.g. "how many shots on goal does each team have?"), then explain that the iframe shows certain things you can see (score, period, clock, last play) but other stats stay in the iframe. Don't apologize at length; just point them at the iframe corner for the rest.

---

## What's NOT in v0.1

- Real-money betting flows (regulatory load; deferred indefinitely)
- Compliance-aware routing demo (KYC + jurisdiction → bet-vs-predict branching; deferred to v0.5)
- Annotated replays / freeze-frame analysis (deferred)
- Crowdsourced votes / Man-of-the-Match (deferred)
- Moment commerce / price-watch (mishopping cross-tie; deferred)
- Multiple games / live game switching (one game in v0.1)
- Other sports (hockey only in v0.1; canonical mentions soccer, basketball, football as future scope)
- Real sponsor brands (Coastal Brew + Northstar are fictional; real brands wait for partnership signoff)

---

## Cross-references

- For viewing the reward after it lands: `https://poc.whoois.app/context/mivault.md`
- For viewing the receipt: `https://poc.whoois.app/context/mitrail.md`
- For the broader "what is Whoois" narrative: `https://poc.whoois.app/whoois-context.md`

---

*This spoke is fetched from `https://poc.whoois.app/context/misports.md`. misports.app v0.1 shipped 2026-05-31 — pip-mode showcase. POST-MVP plan: full misports.app ships as its own MCP server.*
