Proof Before Pay
Provides an Alexa+ add-on and Alexa Skills Kit endpoint, enabling voice-driven hiring of licensed pros, job booking, invoice review, checkout preparation, warranty callbacks, and cancellation through Amazon Alexa+.
Accepts Ring Partner API v1.1 camera/doorbell webhook events, using HMAC-signed payloads over raw bytes to log front-door visits and support consent-based visit logging.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Proof Before PayI need a licensed electrician to replace the outlets and smoke detectors in my master bath"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Proof Before Pay
Hire a licensed pro by voice, and pay only for the work that is proven. An Alexa+ add-on (MCP server with MCP Apps cards) for the Amazon "Build, Ship, Shape" hackathon, Alexa+ track.
Live demo: https://proofpay.retailbox-automation.com/ — press Play demo. Every visitor gets their own simulated
household and their own sandbox, so several people can play it at the same time. The MCP endpoint of the same deployment
is https://proofpay.retailbox-automation.com/mcp (see "Try the MCP server directly").
The add-on leaves out pros whose license is not in Florida's license registry, writes the scope item by item with what proves each item, logs the visit at the front door with both sides' consent, checks the invoice with fixed rules (no model), and prepares a checkout for the proven part only. Alexa+ takes the payment; the rest waits for the homeowner.
All businesses, people and places in the demo are fictional. The Alexa+ experience is simulated in our web host: Alexa+ MCP add-ons are open to select partners only, so we run the add-on in our own Echo Show 8 simulator (a generic 1280×800 frame, no logos) with the official MCP client and MCP Apps bridge. The host maps utterances to tools with fixed patterns (no LLM); in the real product Alexa+ supplies the language understanding.
Run it (2 commands, offline)
npm ci
npm run demo # open http://127.0.0.1:5178/ and press "Play demo"Node 24 or newer (tested on Node 26.10.0). npm run verify runs all 75 checks and every beat in headless Chromium
(first time: npx playwright install chromium); exit code 1 on any failure. No credentials needed.
Related MCP server: oficio
Where the track technology is used
Technology | Import | Call on the demo path |
MCP TypeScript SDK v2, server ( |
|
|
Streamable HTTP transport, 2025-11-25 sessions with |
|
|
2026-07-28 on the same endpoint (SDK era routing, no hand-written protocol code) |
|
|
MCP Apps, server side ( |
|
|
MCP client in the Echo Show simulator ( |
|
|
MCP Apps host bridge ( |
|
|
Alexa Skills Kit ( |
|
|
Florida license registry (live, with recorded pages) |
|
|
Front door camera events (Ring Partner API webhook v1.1 format, HMAC over raw bytes) |
|
|
Deterministic invoice check ( |
|
|
Independent check with the official MCP Inspector CLI (@modelcontextprotocol/inspector@2.8.0, 2026-10-18), both
eras: tools/list --strict → 8 tools, 0 schema problems; --app-info → 7 of the 8 tools link a ui://proofpay/*.html
card (prepare_checkout has none on purpose: the checkout screen belongs to Alexa+). Outputs: docs/inspector-2026-10-18/.
Beats → MCP tools → cards
Beat | User says | What runs | What the customer sees |
1 | "Alexa, I need a licensed electrician to replace outlets and smoke detectors in the master bath." |
| pros card: the unlicensed pro struck "not found in Florida license registry" |
2 | "Book Bright Current." → "Yes." |
| scope card: 3 items + "+3 more", "to be paid after the work is proven", visit-log consent, simulated door code, cancellation policy |
— | button "Simulated time → Thu 2:15 PM" | sandbox clock → signed camera webhooks → | "simulated time" badge |
3 | "He sent the invoice. Pay him." |
| pre-checkout card: "Pay now $1,050.00 · Waits $370.00", evidence rows with sources, button "Pay $1,050.00" |
4 | tap "Pay $1,050.00" (MCP Apps |
| platform layer over the dimmed card: seller, 5 proven items, totals, "Visa ending 4242" (sandbox), refund policy, voice code shown as ••••, "Order confirmed" |
5 | New session → "What's left with the electrician?" → "Yes, draft it." |
| status card (paid through Alexa+ checkout, two open items); a draft note the homeowner sends |
6 | "Simulated time → Nov 12", New session → "The master bath outlet stopped working again." → "Yes, book it." |
| warranty card: 90-day labor warranty; $0.00 return visit; scope, 2 photos and the visit log attached |
any | "Cancel the booking." → "Yes." |
| booking and cancellation policy read back before cancelling |
Screens of every beat: docs/screens/beat-1.png … beat-6.png.
What is live, fixture, sandbox, simulated
The developer view next to the device shows a badge on every step of every tool call.
Mode | What | Code |
LIVE | Florida license registry (public DBPR search). In the hosted demo, the unlicensed pro's number ( |
|
FIXTURE | Recorded registry pages for the two fictional licensed pros ( |
|
SANDBOX | Marketplace in Home Services SPI shapes, invoice and photos, checkout sessions, saved card "Visa ending 4242", warranty claims, saved job state. No real money moves. |
|
SIMULATED | Alexa+ checkout (the host plays the platform), front door camera events and webhooks (Partner API v1.1 format, HMAC-signed), clock jumps, the door code (the camera API has no lock control). |
|
Payment belongs to Alexa+
The add-on never takes a voice code, a card or any payment data. prepare_checkout stages a checkout session whose line
items are only the proven items ($1,050.00); the $370 that waits is not in it. The host then plays Alexa+: it calls the
partner's UCP-shaped checkout endpoints, reads back the order, checks the 4-digit voice code (sandbox code 4719) and
completes the session. The partner side enforces Idempotency-Key, returns a decline as incomplete +
payment_failed, accepts only the proven items at their prepared prices, and refuses a session whose total no longer
matches the plan it was prepared from. The add-on learns that the order was paid by reading the session.
Try the MCP server directly
curl -s -X POST https://proofpay.retailbox-automation.com/mcp \
-H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-H 'Authorization: Bearer pbp-sandbox-your-name' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'Account linking is simulated: any Bearer pbp-sandbox-<name> is an account with its own state and its own sandbox.
The Alexa skill endpoint of the deployment is https://proofpay.retailbox-automation.com/alexa; it verifies Amazon's
request signature and timestamp and refuses anything else.
Hosted deployment
npm run public (scripts/public.ts) runs the same servers behind one port: / simulator, /mcp MCP server,
/sandbox/t/<account>/… that account's sandbox tenant, /alexa skill endpoint, /healthz. The cards are served from a
second origin (CARDS_ORIGIN), as MCP Apps requires for web hosts. Dockerfile builds it. There are no secrets in the
deployment; the camera webhook signing key is generated at start. The echo-* accounts belong to the real Echo Show
(the skill reaches the MCP server inside the container), so the public side refuses them; the operator resets or moves
that demo's clock from inside the container with node scripts/sandbox-admin.ts reset|demo|warranty.
How AI was used
In the product: no model anywhere in the demo path. The invoice check is fixed rules (
reconcile-v1), the license check reads the state registry, and the simulator maps utterances to tools with fixed patterns. In the real product, Alexa+ supplies the language understanding.In the build: the code, tests and documents were written with an AI coding assistant, directed and reviewed by the author; every claim in the docs is checked by a command (
npm run verify,docs/EVIDENCE.md). The card and simulator designs were first drawn as reference images with an image model, then built in HTML and compared with the references.
Why it matters
Author's history: "Since we closed on our house in July, I've contacted 119 contractors and home-service companies and booked 13 jobs. Five went wrong." — docs/BACKTEST.md (anonymized ledger, 141 engagements; all 5 caught by at least one gate).
"Florida received 4,847 unlicensed-activity complaints in one year." — Florida DBPR, ULA Report FY 2024-25, p.13.
"Florida paid $4.35 million in 2025 to homeowners harmed by licensed contractors." — Florida DBPR, 2025 Accomplishments (posted 2026-01-07).
"Americans filed 81,925 home-repair reports with the FTC in 2024." — FTC Consumer Sentinel Network Data Book 2024.
More
Build spec:
docs/SPEC.md(§7 supersedes §1/§4/§5 where they conflict) · evidence for every claim:docs/EVIDENCE.mdFriction log (15 entries):
docs/FRICTION-LOG.md· product feedback:docs/PRODUCT-FEEDBACK.md· feature requests:docs/FEATURE-REQUESTS.mdAlexa skill on a real Echo Show:
skill/README.mdThe license check as a standalone open-source package: fl-license-check
Font: Inter from
@fontsource/inter5.2.8, SIL Open Font License 1.1, served locally (no Google Fonts request).
Port / env | Default | What |
| 8787 | proofpay MCP server ( |
| 5178 | Echo Show 8 simulator |
| 5179 | card sandbox proxy (second origin) |
| 8791 | sandbox services ( |
|
|
|
| — | numbers that always go to the live registry, with fallback to their recorded page |
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Pay-per-call agent infrastructure: file storage & handoff, compute tools, messaging, e-sign, KYC.
Book local tradespeople — plumber, electrician, HVAC, and 7 more — via your AI agent. All US.
Find and book local service businesses (plumbers, HVAC, detailers) at real prices, with approval.
Agent-first booking of home-service contractors in Canada and the US: quotes, availability, booking.
Related MCP Servers
AlicenseNot gradedqualityBmaintenanceEnables AI clients to manage field service operations through natural language, including call handling, job dispatch, estimates, invoicing, and reporting via the AutoRev platform.1 npmMIT- AlicenseNot gradedqualityBmaintenanceEnables agents to turn customer conversations into provably correct remodeling quotes by extracting catalog-bounded line items with evidence and calculating prices deterministically.MIT
- AlicenseNot gradedqualityCmaintenanceGives Alexa+ voice access to track household insurance claims, refunds, repairs, and disputes, and to chase them via disclosed AI phone calls while keeping money and legal decisions with the human.MIT
- AlicenseNot gradedqualityBmaintenanceEnables turning spoken household issues into evidence-linked maintenance cases, deterministic diagnostic plans, quote comparisons, and owner-approved but unexecuted action proposals.Apache 2.0