Try it now: scamshield-alexa.onrender.com (website and installable phone app) · "Alexa, open Scam Shield" (live in the Alexa Skills Store) · MCP endpoint https://scamshield-alexa.onrender.com/mcp

Inspiration

The people scammers target most, like older adults, busy parents and non-native speakers, are the least likely to open a laptop and research a link. But many already have a voice assistant in the kitchen. We wanted asking "Alexa, is this a scam?" to be as natural as asking a trusted friend, and the answer to be one or two sentences anyone can understand in one listen.

What it does

ScamShield is a free, private scam checker that people can use four ways, all powered by one self-hosted MCP server (spec 2025-11-25, Streamable HTTP):

How people use it
🌐 Website Paste a message → a clear verdict, the evidence quoted from the message, what the real company's official website says, what to do, where to report, and a warning to send your family. Plus check a screenshot or QR code (read on your own device, never uploaded; a QR code's link is checked without opening it), a "Someone is calling me now" helper, "Already paid or clicked?" recovery steps, and live official scam alerts.
📱 Phone app "Add to Home Screen" installs it; on Android you can share a suspicious text or screenshot straight to ScamShield.
🔊 Alexa "Alexa, open Scam Shield" / "Alexa, abre escudo antiestafas", with a verdict card on Echo Show.
🤖 AI assistants Alexa+, Claude or any MCP client gets the same tools. The website itself is an MCP client.

The MCP server gives assistants 11 read-only tools for the moments people actually face:

  • "Is this text a scam?" check_message spots 20+ scam tactics (disguised links, gift-card/crypto requests, code requests, pressure, threats, "Hi Mum, new number", overpayment, fake tech support, safe-account and fake-renewal scams) and answers in the listener's language. It understands links read aloud ("usps dot com dash track dot top slash pkg") and never opens a suspicious link. check_link and check_phone_number catch look-alike addresses and mismatched numbers.
  • "What does the real company say?" verify_with_official_source reads only the impersonated company's official website, so Alexa can add: "USPS's official website says: USPS does not charge a fee for redelivery."
  • "Someone's on the phone right now." check_phone_call asks the most relevant yes/no question first and says "Hang up now" the moment it hears a decisive sign, like a request for a texted code.
  • "What scams are going around?" scam_briefing reads recent warnings from official sources only (FTC, FBI IC3, USPIS, Social Security…).
  • "I already paid / clicked / shared a code." scam_recovery gives the steps for what actually happened (gift card, wire, Zelle/Venmo, card, crypto, a shared code or password, remote access, a Social Security number, or just a click), most urgent first, in English and Spanish.
  • warn_family, how_to_report_scam, search_scam_reports and a voice practice_quiz ("scam or real?").

The Alexa custom skill ("Alexa, open Scam Shield") passed Amazon certification and is live in the Alexa Skills Store (Oct 7, 2026). It was also tested end to end in Amazon's Alexa simulator against the live server:

  • Every request's Amazon signature is verified (certificate chain, RSA-SHA256, timestamp).
  • SSML voice that stresses the warning and slows down slightly for older listeners.
  • "One moment…" progressive responses while the official website is checked.
  • An Echo Show card (APL): SCAM / BE CAREFUL / LOOKS OK in big letters, with the evidence quoted.
  • A Spanish skill ("Alexa, abre escudo antiestafas").
  • Remembers across sessions, only with permission (certified by Amazon in the skill's Oct 21, 2026 update): who to warn ("warn my family" just works next time), your bank ("Call Chase yourself, using the number on your card"), and a check-in on an open case: "Welcome back. Last time, we talked about this: paid with a gift card. Did you reach the company that issued the card?" "Forget me" erases it all; keys are salted hashes, entries expire in 90 days.

How we built it

  • MCP TypeScript SDK, Streamable HTTP, spec 2025-11-25: stateless JSON mode for simple clients, and session/SSE mode when the client supports MCP sampling. Tools carry readOnlyHint annotations; check_message has an outputSchema; plus a prompt, a resource and server instructions.
  • Voice-first answers: each tool's first content block is one or two spoken sentences (verdict, the two strongest reasons, one action); structured details come second.
  • MCP sampling second opinion: when the rules don't call something a scam, check_message asks the assistant's own model to take a look (no API key needed). It can only raise caution, never lower it.
  • Tavily for official-source checks and alerts. We re-check every result against the official domains ourselves, and cache results so Alexa answers within its time limit.
  • Alexa custom skill endpoint on the same server (Express), with English and Spanish interaction models and an APL document.
  • Website and phone app: plain HTML/CSS/JS with a browser MCP client, on-device screenshot reading (Tesseract.js) and QR decoding (BarcodeDetector / jsQR), installable as a PWA with a Web Share Target, privacy and terms pages, and no accounts, cookies or trackers. Built for older eyes and slow phones: Lighthouse 100 in performance, accessibility, best practices and SEO on every page.
  • Agent Skill (skills/scam-check) and a simulated Alexa+ web app at /demo/ (Web Speech API plus the same browser MCP client).
  • Hosted on Render, with a GitHub Actions keep-alive ping.
  • Ready for MCP 2026-07-28. The newest spec makes MCP stateless and deprecates sampling. ScamShield is already stateless by default, and its multi-step tools pass state as ordinary tool arguments, the model the new spec uses. The one piece to migrate is the sampling second opinion, which will move to a direct, optional model call.

Results (honest numbers)

Set Rules only Rules + MCP sampling second opinion Claude + tools (agent)
Held-out test (37 messages written after the rules) 86% · 17/22 scams · 0/15 false alarms 97% · 22/22 · 1/15 95% · 22/22 · 2/15
Real SMS from a research dataset (60, CC BY 4.0) 62% · 7/30 scams · 0/30 92% · 29/30 · 4/30 93% · 29/30 · 3/30

The rules alone are precise but miss scams they weren't written for. With the assistant's own model taking a second look, nearly every scam is caught. That's the case for building this as MCP tools for an assistant. We publish every miss (eval/).

Rules update (Sept 27), measured honestly. We split all 5,971 real messages with a fixed hash: we studied only the tune half's misses and never looked at the held-out half (which contains the 60 above). Five general tactics later (prize claims, premium-rate numbers, "your card is blocked", login links, inheritance windfalls), the held-out half went from 26.7% to 70.1% of scams caught with the rules alone, with false alarms unchanged at 1.7%. On the 60-message sample, rules alone now catch 25/30, still with 0 false alarms.

Second opinion re-run (Sept 29). With the new rules, the model behind the same setting had become more cautious, flagging short personal texts ("Wife.") as possible scams. We rewrote the second-opinion prompt with explicit levels, calibrated it only on the tune half, and scored both held-out sets once: 52/52 scams caught, 8/45 false alarms (the old prompt on the same model: 51/52 and 15/45). On the real-world sample that's 30/30 with 2/30 false alarms. It isn't better everywhere: on the 37-message test it gives three more "be careful" answers on genuine notices than the old prompt. All runs are in eval/.

Challenges we ran into

  • Spoken answers differ from screen answers. We rank red flags by strength so Alexa says the two strongest reasons, not a list of ten.
  • Not crying wolf. Genuine 2FA codes and bank alerts look scary, so "reassurance" patterns ("don't share this code", "no lo comparta") lower the score.
  • Voice has a time limit. A live web search can take 4 to 8 seconds, longer than Alexa can wait. We added progressive responses, caching and a warm-up at startup.
  • Search results drift. Domain filters weren't always honored, and fixed query wording stopped finding the right page, so we verify domains ourselves, check known official scam pages first, and search with the scam's own topic.
  • Being honest about accuracy. Once we learn from a test set, it becomes a development set, and we write a new one. When a later fix also caught a held-out miss, we kept quoting the original held-out score.

Accomplishments that we're proud of

  • It never opens a suspicious link, yet catches look-alike addresses, even ones read aloud.
  • A real product people can use today: a website and phone app, plus a certified, live Alexa skill with a screen card, Spanish, and verified Amazon signatures, all on one standards-compliant MCP server.
  • Transparent evaluation, including real-world SMS and published misses.

What we learned

  • Designing for the ear is its own craft: short sentences, the verdict first, one action.
  • MCP sampling is a powerful way to combine fast, explainable rules with a model's judgment without holding an API key, but it needs sessions and SSE, and the 2026-07-28 spec deprecates it. Designing tools to return their evidence (red_flags) means any assistant's model can take that second look itself.
  • Every external call on a voice path needs a time budget, a cache and a graceful fallback.
  • Recording the demo was also our best test: it surfaced real bugs (Spanish code requests, a fake-order pattern, and unofficial pages in briefings), all fixed before submission.

What's next

  • Certified and live in the Alexa Skills Store since Oct 7; next, invite older-adult beta testers.
  • Publish as an Alexa+ integration once available to developers.
  • "Alexa, I think I got scammed": the recovery steps by voice. Done: the updated voice model shipped in the skill's Oct 21, 2026 certified update.
  • More languages, and live call-transcript checks.

Built With

Share this project:

Updates

Submission history