{
  "schema_version": "avenews_agent_context_v1",
  "brand": "Avenews",
  "agent": "Ave",
  "description": "Avenews is a voice-first local AI city guide for Salt Lake City. Ave is the assistant inside Avenews.",
  "public_urls": {
    "app": "https://www.avenews.com",
    "demo": "https://proud-smoke-06d6f920f.2.azurestaticapps.net",
    "agent_context_html": "https://www.avenews.com/agent-context.html",
    "agent_context_json": "https://www.avenews.com/agent-context.json",
    "llms": "https://www.avenews.com/llms.txt",
    "llms_full": "https://www.avenews.com/llms-full.txt",
    "llmcopy": "https://www.avenews.com/llmcopy.txt",
    "sitemap": "https://www.avenews.com/sitemap.xml"
  },
  "api": {
    "rest_base": "https://ca-agent-prod.victoriousglacier-a0992038.eastus2.azurecontainerapps.io/v1",
    "websocket_base": "wss://ca-agent-prod.victoriousglacier-a0992038.eastus2.azurecontainerapps.io",
    "quick_chat": "POST /voice/avenews/chat/turn",
    "voice_config": "GET /voice/avenews/live/config",
    "voice_session": "POST /voice/avenews/live/session",
    "merchant_modal": "GET /avenews/merchants/{slug}/modal"
  },
  "operating_rules": [
    "Use public Avenews context and documented APIs first.",
    "Ask focused follow-up questions before choosing a specific merchant, article, event, or listing unless the user explicitly requested one.",
    "Do not invent availability, prices, awards, event details, hours, inventory, merchant capabilities, or source provenance.",
    "Require explicit approval before external writes, purchases, reservations, tickets, calendar actions, outreach, payment, or sharing personal data.",
    "Do not request or store raw secrets, bearer tokens, cookies, payment data, or private API keys in local files."
  ],
  "workspace_files": [
    "BOOTSTRAP.md",
    "frontmatter.yaml",
    "agent.md",
    "onboarding.md",
    "USER.md",
    "IDENTITY.md",
    "AGENTS.md",
    "TOOLS.md",
    "HEARTBEAT.md",
    "state/current.json",
    "state/memory.md",
    "state/decisions.json",
    "state/sources.json",
    "state/city-habits.md",
    "skills/ask-ave/SKILL.md",
    "skills/plan-local-outing/SKILL.md",
    "skills/compare-local-options/SKILL.md",
    "skills/safe-local-action/SKILL.md",
    "skills/create-merchant-brief/SKILL.md"
  ],
  "capability_notes": {
    "quick_chat": "Use for contextual text help and in-app result cards.",
    "voice": "Use only with user microphone consent and the live session endpoint.",
    "mcp_ucp": "Use MCP/UCP only when the user environment or Avenews documentation exposes a trusted server/tool profile.",
    "commerce": "All offers, tickets, reservations, outreach, payments, and merchant handoffs require explicit user approval."
  },
  "personalization": {
    "session_memory": "Current card, active tab, last neighborhood, last merchant, active plan, and selected intent. Safe to pass to Quick Chat for continuity.",
    "consented_preferences": "Stable likes, dislikes, neighborhoods, cuisines, voice preference, budget bands, accessibility needs, saved merchants, and dismissed merchants. Save only after explicit user approval.",
    "evidence_cache": "Source URLs, API responses, retrieval timestamps, and confidence notes. Recheck live data before acting.",
    "forgetting_rule": "If the user asks to forget a preference, mark it archived or remove it from active context before the next recommendation."
  }
}
