AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
A? Live Representative: every local business on A?, for Alexa+ through one MCP server, demonstrated in a web simulator. MCP Apps + real-time video avatar. Amazon Alexa+ hackathon 2026.
Translation pending
Developer toolsTypeScript · HTMLGitHub @RemiEtienOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Every local business on A³, live on Alexa+, through one MCP server.
Big brands build their own MCP servers for Alexa+. Millions of local businesses (clinics, salons, studios) never will, so for them Alexa can only read out a list. A³ (Triple A) already lets a business set up its own live video representative: a real-time talking avatar with the business's face and voice, prices, answers, rules and calendar.Read the full README ↗Every local business on A³, live on Alexa+, through one MCP server.
Big brands build their own MCP servers for Alexa+. Millions of local businesses (clinics, salons, studios) never will, so for them Alexa can only read out a list. A³ (Triple A) already lets a business set up its own live video representative: a real-time talking avatar with the business's face and voice, prices, answers, rules and calendar. This project connects A³ to Alexa+ with one MCP server, built so that every business on A³ can go live on Alexa without its own integration: a real face on the Echo Show screen, and questions that turn into bookings without leaving Alexa.
Demo scope: the catalog behind
find_providersis three fictional Austin clinics (data/providers.json), each mapped to a representative set up on the A³ platform. Reading the A³ business directory instead of a file is the next step; the tools and views do not change.
https://alexa.triplea.studio/mcpAlexa+ add-ons are partner-only today, so this repository ships a web simulator of an Echo Show with Alexa+. Every business action in the simulator (search, opening the representative, passing the user's words, reading the booking) is a real MCP tool call to this server, the way an Alexa+ add-on is called; the representative's video and voice then stream over WebRTC. The live conversation window was also tested as an MCP App in Claude and ChatGPT (October 1).
Alexa, find a place nearby for laser hair removal.Yes, please. Hannah, the live representative of a (fictional) Austin clinic, appears on screen and greets you in voice.How much is a full leg session? And does it hurt?, then Can you book me for Saturday at ten?. She books you herself; the simulated Alexa passes the name and phone of its signed-in (demo) user, so you are not asked.Thanks, goodbye, then Alexa, add it to my calendar. Alexa fetches the booking over MCP and shows it in the simulator's stand-in for Alexa's calendar.The green lines in the corner show each MCP tool call and its latency (Alexa's built-in calendar is marked as such; it is not an MCP call).
Demo limits: one live conversation at a time (each one uses a real GPU avatar slot), up to 5 minutes. If you see "All representatives are busy", try again in a minute. The three clinics are fictional; no real appointment is created.
flowchart LR
U((User)) -- voice --> AX["Alexa+ (simulated):<br/>speech to text, LLM, Alexa voice"]
AX -- "MCP tools/call<br/>(Streamable HTTP)" --> S["A³ MCP server<br/>(this repo)"]
S -- "find_providers<br/>catalog" --> AX
AX -- "MCP Apps view<br/>ui://a3/talk.html" --> W["Representative window<br/>(sandboxed iframe on the Echo Show screen)"]
W -- "WebSocket /avatar" --> S
S -- "relay, server-side session params" --> A3["A³ platform:<br/>business's representative<br/>(knowledge, rules, calendar)"]
A3 -- "WebRTC video + voice" --> W
AX -- "ask_representative<br/>(user's words, + profile once)" --> S
S -- "chat message into the live session" --> A3
A3 -- "booking_confirmation" --> S
AX -- "get_representative_booking" --> S
AX -- "add_to_calendar (Alexa built-in)" --> CAL[(Alexa calendar)]
Who listens. On a real Echo Show, third-party web pages in the built-in browser get NotAllowedError for the microphone instantly, with no prompt (see the friction log). We could not test an Alexa+ add-on view itself, but we expect the same, and Alexa already listens. So Alexa stays the ears: it recognizes speech and passes the user's words to the representative with ask_representative; the representative answers on screen in video and voice. In hosts that grant the microphone (we tested Claude and ChatGPT), the same window talks to the user directly.
Who books. The business's representative books, not Alexa: it knows the business's rules, services and calendar. Alexa already knows the signed-in user, so ask_representative can carry the user's name and phone once, and the representative never asks for them. In a real deployment this needs the user's consent; the simulator passes a fixed demo profile. Afterwards Alexa reads the confirmed booking with get_representative_booking and adds it to its calendar (in the simulator, a stand-in card).
| Tool | What it does | UI (MCP Apps) |
|---|---|---|
find_providers(service, location?) | Nearby businesses for a service, with prices and whether a live representative is available | ui://a3/providers.html |
talk_to_representative(provider_id, language?) | Opens a live video conversation with the business's A³ representative | ui://a3/talk.html |
ask_representative(provider_id, question, customer?) | For voice hosts that listen themselves: passes the user's words into the open conversation | — |
get_representative_booking(provider_id) | The appointment the representative confirmed in the last conversation | — |
book_appointment(provider_id, service_id, when, customer_name) | Fallback booking for businesses without a representative (demo, no real appointment) | ui://a3/booking.html |
All five tools declare outputSchema and return structuredContent. Views follow the Alexa+ MCP Apps rules: each is one self-contained HTML document (libraries inlined, no external fonts), rendered in a sandboxed iframe, with its network declared in _meta.ui.csp (connectDomains, resourceDomains) and host communication only through the MCP Apps postMessage bridge.
| Path | |
|---|---|
src/server.ts | MCP server (tools, MCP Apps resources), WebSocket relay to the A³ platform, demo limits |
src/sim.ts | Alexa+ simulator, server side: LLM turn loop that calls the MCP server over a real MCP client; Alexa voice; Alexa's built-in add_to_calendar |
sim/client.ts | Simulator page logic: speech recognition, follow-up mode, MCP Apps host bridge (AppBridge) |
ui/talk.html | Representative window: LiveKit WebRTC video and voice, subtitles, microphone where the host allows it |
ui/providers.html, ui/booking.html | Result and confirmation views |
ui/probe.html | Diagnostic window: what a host allows inside an MCP Apps view (video, sound, WebSocket, mic, WebRTC, nested frames) |
data/providers.json | Three fictional Austin clinics used in the demo |
Requires Node 22+.
npm ci
cp .env.example .env # fill in GEMINI_API_KEY; ELEVENLABS_API_KEY is optional
set -a; . ./.env; set +a
npm start # http://localhost:3401/sim, MCP at http://localhost:3401/mcp
The simulator's "Alexa" is played by Gemini Flash with function calling; Alexa's voice is ElevenLabs (falls back to the browser's voice). The live representatives run on the A³ platform, a hosted service: the relay connects to the demo businesses set up there, so no GPU is needed locally.
Add https://alexa.triplea.studio/mcp as a custom connector (Claude: Settings → Connectors; ChatGPT: Developer mode → Create app, no auth). Ask: "Find a laser hair removal clinic in Austin and let me talk to their representative."
alexa.triplea.studio): Amazon EC2 Graviton (t4g) with an Elastic IP, Caddy for TLS in front of the Node server (systemd service), keys in an environment file outside the repository; the security group opens only HTTP/HTTPS publicly (HTTP redirects to HTTPS). Demo limits are set by environment (PUBLIC_MODE, MAX_LIVE_SESSIONS, MAX_LIVE_SECONDS, SIM_*, see .env.example).talk_to_representative opens one such session.A³ (the avatar platform: real-time talking avatars, per-business setup, knowledge and booking) existed before the hackathon and is used here as a hosted service. Everything in this repository was built from October 1, 2026 for the Alexa+ track:
ask_representative, because Echo Show web pages get no microphone;MIT, see LICENSE. The A³ platform the relay connects to is a separate hosted service and is not covered by this license.