Stoop
Integrates with Amazon's Alexa+ add-on surface (MCP server + MCP Apps cards and the UCP checkout contract) and can route agent reasoning and item vision to Amazon Bedrock via LLM_MODE=bedrock, so sales are listed, negotiated and completed inside the Alexa+ ecosystem.
Integrates with the Ring Partner API to use a Ring doorbell as proof of handoff: snapshots, clips and WHEP live view are pulled through the ring-bridge, and simulator-signed Ring webhooks (button/doorbell events, replays) are ingested over HMAC to confirm the buyer checked in and the item left the porch before money is released.
Uses Stripe manual-capture payment semantics for checkout: the buyer's payment is authorized and held rather than charged, and funds are captured/released only after the Ring doorbell verifies the handoff (offline SandboxPSP emulates the Stripe-style test processor).
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., "@StoopSell the stroller and the bike. Don't go below $90 on the stroller."
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.
Stoop
Sell anything without meeting anyone. Money moves only when your porch camera sees it go.
Try it: https://d29kyjvj1jibpu.cloudfront.net Open a shop, photograph something you'd sell, send the link to a friend, and use an old phone or a laptop as the porch camera. No sign-up; test payments only, nothing is ever charged.
Judges: the same app plus the Alexa+ device demo (seller and buyer side by side) at https://d2h8mmod981k0j.cloudfront.net/demo
Watch a whole sale in under 100 seconds: the walkthrough video plays on the home page (apps/web/public/demo.mp4, recorded by services/stack/e2e/record-walkthrough.ts).
Stoop is an Alexa+ add-on (MCP server + MCP Apps cards) and a Ring Appstore app.
You tell your assistant "Sell the stroller and the bike. Don't go below $90 on the stroller."
Stoop prices and lists them, then negotiates with buyers, including buyers' own AI assistants. It never knows or reveals your minimum.
The buyer pays through an Alexa+-style checkout. The money is held, not charged.
The buyer picks the item up off your porch. Your porch camera provides the proof of handoff: check-in, someone at the door, item there before and gone after. In the live app the camera is any old phone or laptop; the Ring integration (Partner API client, signed webhooks, simulator) does the same with a Ring doorbell. Only then is the money released, with a signed receipt anyone can verify.
The AI never holds the keys. Money, your address and receipts are controlled by a separate Settlement service under deterministic rules. In a 300-attack red team on Amazon Bedrock (Nova 2 Lite), a naive agent with the address in its prompt leaked it 57 times (19%); Stoop's agent leaked it 0 times, because it never had it (evals/REPORT.md).

Run it (Windows, macOS or Linux; Node 22)
git clone https://github.com/hash066/stoop.git
cd stoop
corepack enable # provides the pinned pnpm (11.0.8)
pnpm install
pnpm demoOpen | What |
Simulated Alexa+ device, seller's kitchen | |
Simulated Alexa+ device, buyer's living room | |
Mission control: events, Policy Kernel decisions, scenarios, Ring live view | |
pickup pass | opened by the buyer device ("send my pickup pass"); one-time code in the Ops email outbox |
The submission video's shot list is docs/DEMO_SCRIPT.md. Everything runs offline by default. LLM_MODE=bedrock switches agents and vision to Amazon Bedrock (see .env.example).
Hosted mode: what testers and judges get
The Stoop web app (apps/web) is the product with no simulation in the flow:
Seller: opens a shop with their real pickup address (encrypted; buyers see it only on their pass, during their window) and uploads photos. Bedrock names and prices each one; an AI estimate is labelled as one. They list with a private lowest price and share the link.
Buyer: on another device, asks and haggles with the seller's assistant (typed or spoken, through the same MCP tools and planner an Alexa+ device uses). They pay (held, not charged) and open the pickup pass on their phone.
Porch camera: any phone or laptop running the camera page. It takes the before and after photos, and during a pickup its motion detector asks Bedrock vision whether a person is at the door (counted, never identified).
Handoff: the buyer taps I'm Here, the camera sees someone and then the item gone, and the money moves with a signed receipt. If the camera can't tell, both people confirm.
Each shop is its own private world. The Alexa+ device tour (seeded demo household, labelled simulator) lives at /demo.
pnpm build:web
PORT=8080 ADMIN_KEY=local pnpm serve # http://localhost:8080 (web app), /demo (device tour)
pnpm --filter @stoop/stack e2e # seller, buyer phone and camera phone in three Chrome profiles, end to end
pnpm tour http://localhost:8080 local # drives the device tour in ChromeDocker image: Dockerfile. AWS deployment (CloudFront + one instance running both sites on Amazon Bedrock, plus the negotiator on AgentCore Runtime): docs/DEPLOY.md.
Related MCP server: glongus-mcp
Amazon SDKs and protocols, and where they are used
SDK or protocol | Where | Status |
MCP ( | Server: | Live on both sites |
MCP Apps ( | Cards in | Live (judges' |
Alexa+ add-on checkout contract (UCP 2026-04-08) |
| Live |
Alexa Skills Kit SDK ( |
| Deployed (development stage) and checked through Amazon's Alexa simulator against the live site |
Agent Skills |
| Live |
Strands Agents SDK ( | The negotiating agent, | Live on Bedrock |
Amazon Bedrock (Nova 2 Lite via | Planner, negotiator, photo identification and pricing, porch-camera vision | Live, under daily call caps |
AWS SDK v3: KMS, DynamoDB, Step Functions, SQS, Lambda |
| Deployed and verified end to end; the hosted sites keep their shops on the instance's disk (they survive redeploys), not on this stack yet |
AWS CDK |
| Deployed |
Ring Partner API |
| Checked with a Playground token; no Ring hardware here, so shops use a phone or laptop as the porch camera |
Kiro |
| Done |
Bedrock AgentCore Runtime ( | The negotiating agent runs on AgentCore ( | Live on both sites |
Connect your own MCP client
The live servers speak MCP 2025-11-25 over Streamable HTTP, so any client can use them. With the official MCP Inspector:
# open a shop (no sign-up); the reply has the shop id and the seller's token
curl -s -X POST https://d29kyjvj1jibpu.cloudfront.net/api/shops -H 'Content-Type: application/json' -H 'Origin: https://d29kyjvj1jibpu.cloudfront.net' \
-d '{"displayName":"Judge","address":"1 Test Way, Springfield, IL","zip":"62704","porchInstructions":"On the bench"}'
npx @modelcontextprotocol/inspector --cli https://d29kyjvj1jibpu.cloudfront.net/s/<id>/mcp/seller --transport http \
--header 'Authorization: Bearer <sellerToken>' --method tools/listThe buyer server is /s/<id>/mcp/buyer, with the buyerToken from POST /s/<id>/web/buyer (body {"displayName":"Ben","purchaseCode":"2580"}, same headers). Approvals arrive as elicitation requests (form, or URL mode for the pickup pass); clients without elicitation get approval_required and answer with confirm_action.
What's real and what's simulated
Real | Simulated (by hackathon rule or necessity), always labelled |
MCP servers (spec 2025-11-25, Streamable HTTP, sessions, form + URL elicitation, structured output, MCP Apps) | The Alexa+ client: add-on tooling is partner-only, so we built a device simulator that is a real MCP client and MCP Apps host |
UCP checkout endpoints matching the Alexa+ add-on contract (2026-04-08) | Payment processor: |
The web app's porch camera: a real phone or laptop camera, Bedrock vision for item-there/item-gone and person counts (origin | |
Ring Partner API client (snapshots, clips, WHEP live view), HMAC webhook ingest. Checked against the Ring API with a Developer Playground token (Oct 18): auth and device listing work; image download needs a device that has recordings | Ring events from our signed simulator (the Playground doesn't deliver webhooks; a judge confirmed own simulators are fine), plus our own labelled porch footage |
Strands agents on Amazon Bedrock (Nova 2 Lite), the negotiator on AgentCore Runtime, the Policy Kernel, KMS-style tokens and ES256 receipts | Offline |
Tests and evals
pnpm test # 236 tests: policy (property-based), receipts, settlement, UCP, Ring, ring-sim, verifier, agents, MCP end-to-end (incl. Tasks + my_items), the Alexa skill, hosted shops, Stoop Street, AgentCore
pnpm eval:redteam # 300 adversarial conversations + 200 benign buyers -> evals/REPORT.md
pnpm eval:poh # proof-of-handoff confusion matrix -> evals/POH_REPORT.mdEnd-to-end:
The golden path runs through two real MCP clients: sweep → appraise → list → mandate → haggle → approve → UCP checkout → pass → doorbell → VERIFIED → paid.
The scrutiny path covers:
401/403/404 protocol hardening
an Alexa-style session-less client
the > $100 voice code
scam blocking and the two-buyer race
piracy, no-show, item still there, camera offline, and webhook replay
offer flooding (rate limited before any model call)
MCP Tasks:
watch_handofffollows a sale to CLOSED, stays private to its owner, and can be cancelled
Alexa+ design rules as a test (
services/stack/test/design-rules.test.ts): every spoken line and approval prompt in a full sale (33 lines) is under 30 seconds (longest: 56 words), offers at most 5 options, and never speaks an id, JSON or a URL.
Browser QA and demo recording (needs pnpm demo running and Google Chrome; uses playwright-core, which never downloads a browser):
pnpm qa # every judged surface at 1280x800 and 390 px: console/HTTP errors + screenshots
pnpm record # the golden path as one .webm clip per surface, for the videoSimulated Ring events from the command line (local or deployed; always labelled simulator-signed):
pnpm ring-sim event button
pnpm ring-sim replay
pnpm ring-sim scenario goldenFire TV (Garage Mode)
apps/firetv is Garage Mode: the household's sellable things on the big screen. Pick items with
the remote's D-pad, press List selected, approve on screen, and Stoop lists them — the footer
shows the live sale line through to "Sold". It's built on Amazon's
react-native-multi-tv-app-sample
(MIT-0) and is a real stateless MCP client to the same stack (it holds no money or address keys;
it only proposes). It is a separate Yarn 4 workspace, so use corepack yarn:
pnpm --filter @stoop/stack start # the stack on :8787
cd apps/firetv && corepack yarn install && corepack yarn dev:web # open http://localhost:8082See apps/firetv/README.md for details and the Android TV build.
Docs
docs/ARCHITECTURE.md: components, protocols, truth table, local-vs-AWS mappingdocs/AGENTS.md: agents, rules R1–R13, guidance for coding agentsskills/stoop/SKILL.md: the Agent Skill for assistants using Stoopdocs/AWS_BUILDER.md: AWS services, honest status per rowdocs/RING_CERT_NOTES.md·docs/AI_DISCLOSURE.md·docs/PLAN.mdOpen source:
packages/proof-of-handoff, published on npm asproof-of-handoff: verify any receipt withnpx proof-of-handoff verify receipt.jws --jwks jwks.jsonoss/ring-api-helloworld: a media-helpers contribution to Amazon's Ring starter, open upstream as AmazonAppDev/ring-api-helloworld#36 (issue #35)
Repo layout
packages/ shared · policy · proof-of-handoff · ui-cards
services/ settlement · ring-bridge · verifier · agents · mcp-server · stack
tools/ ring-sim (simulator-signed Ring webhooks)
apps/ alexa-sim · pass · ops · firetv (Garage Mode, Yarn 4)
evals/ red team + proof-of-handoff
oss/ ring-api-helloworld contribution
skills/ stoop/SKILL.mdLicense
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Let your agent buy and sell physical goods, with escrow and shipping.
Marketplace and payment rail for AI agents: list, buy and settle with signed receipts.
AI resale manager. Photograph an item, AI writes the listing, publish a sale page, manage pickups.
Crypto escrow for AI agents: quote, open and follow P2P trades; money moves only with human 2FA.
Related MCP Servers
- AlicenseAqualityAmaintenanceGive your agent an address: private agent-to-agent messaging, free encrypted file handoffs, and Lightning commerce. Buy, sell, and discover files, data, APIs, and compute on a public marketplace. Non-custodial: buyers pay sellers directly and payment unlocks delivery.27113 npmMIT No Attribution
- AlicenseAqualityCmaintenanceEnables AI agents to search, inspect, and purchase physical goods on an escrow-secured marketplace, including listing search, agent reputation checks, and offer creation.5998 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to autonomously discover services, negotiate binding quotes, make idempotent purchases, and receive cryptographically verifiable deliverables.MIT
- AlicenseNot gradedqualityBmaintenanceEnables multi-party conditional escrow locking, autonomous proof-of-delivery release triggers, referral fee splits, and dispute freeze protection for agentic commerce and enterprise settlement workflows.7MIT