Lemonade is an open-source, AI-native commerce protocol. Drop YAML files describing your skills, goods, and services — they become instantly discoverable to other people's AI agents via MCP. Pluggable payment providers handle the money. Federation connects the stands. You stay in control.
The simplest transaction in the world — wired up for the AI-native web. Define your skills as YAML. Set your prices. External AI agents discover, pay via the configured payment provider, and wait for you to deliver. No middlemen, no marketplace taking a cut, no algorithm setting your rates.
Write YAML files describing what you're good at. Drop them in config/skills/. That's your menu — parsed on startup, no code, no migrations.
Other people's AI agents browse the neighborhood. They discover your sign through tools/list over MCP, or find it federated across stands via .well-known/lemonade.
Hosted checkout for first-timers, saved cards for regulars. If payment doesn't clear, they get HTTP 402 — the register says no. Simple as that.
When you're ready — not a minute before — you accept the order, do the work, and deliver. Capture the payment. Or refund it. Every task gets a contract workspace with event logs and reputation trails.
The counter, the register, the sign, the neighborhood — everything you need to run an AI-native commerce stand, from discovery to delivery.
Describe what you offer — services, goods, teams — as YAML files in config/skills/. Auto-discovery loaders generate them from GitHub repos, websites, Git forges, and DOCX resumes.
Pluggable payment providers: hosted checkout for new buyers, off-session holds for returning customers, and HTTP 402 Payment Required when a card doesn't clear. Add your own provider via the payment interface.
Commerce (list, call, status, install, preflight, orders, request_refund), discovery (search, discover), profiles (profile, profile_completeness, profile_seed), artifacts (feed, verify, artifact_install), federation (teams, team, evaluate, analytics, availability, publish, connections), and checkout (create_checkout_session, get_checkout_session, update_checkout_session, complete_checkout_session, cancel_checkout_session).
ActivityPub + AT Protocol federation. .well-known/lemonade discovery, peer graph, cross-stand search, and CRDT-based artifact mirroring. Your sign shows up in other neighborhoods, too.
Publish artifacts with visibility tiers: private (workspace-only), unlisted, public, and public-gated. GPG-backed identity, revocable publications, and trust verification built in.
Trust assertions, rate-limited reputation scoring, external reputation import (GitHub stars, Codeberg activity), and contact gates — all portable across stands.
Every task gets its own folder: deliverables, event logs, Jitsi meeting room, Matrix chat bridge, and a reputation trail. A clean paper trail for every cup you hand over.
A browser-friendly /stand page with your profile, skills, and prices. An /install.html setup page for AI agent operators. OG images for social sharing. Your stand is a real place.
Owner-only endpoints protected by JWT auth. GPG-signed artifacts with Web of Trust verification. Internal routes locked to localhost — not exposed to the open web.
Manage tasks (accept, complete, refund), mirror artifacts (mirror status|list|peer-sync|drop|prune-revoked), seed profiles, and run the install wizard — all from lemonade CLI.
Deploy your stand to a mesh of nodes with one command. Podman quadlets, WireGuard VPN, systemd services, and event hooks for webhook notifications when tasks change state.
Ready-to-extend plugin skeletons for Odoo, Django, and WordPress. MCP tools, models, views, and test suites — wire Lemonade commerce into existing platforms.
Other people's AI agents get a rich set of tools — commerce, discovery, profiles, artifacts, checkout, and federation. All over Streamable HTTP (MCP 2025 spec).
| Tool | Domain | Description |
|---|---|---|
| Commerce | ||
| list | Commerce | Discover available skills with input schemas and prices |
| call | Commerce | Submit a task with payment — checkout URL, off-session hold, or HTTP 402 |
| status | Commerce | Poll task status and retrieve structured results when complete |
| install | Commerce | Get installation instructions for connecting an AI agent |
| preflight | Commerce | Pre-flight check: verify call preconditions without charging |
| orders | Commerce | List tasks/orders for a customer by customer ID |
| request_refund | Commerce | Request a refund for a purchased task |
| Discovery & Search | ||
| search | Discovery | Full-text search across skills, optionally including federated peers |
| discover | Discovery | Browse available skills by category or keyword |
| Profiles | ||
| profile | Profile | Get public seller profile: bio, skills, trust tier, reputation |
| profile_completeness | Profile | Score a profile's completeness and get improvement suggestions |
| profile_seed | Profile | Seed a new profile from GitHub, website, forge, or DOCX resume |
| Artifacts | ||
| feed | Artifact | Browse the artifact feed with visibility-aware filtering |
| verify | Artifact | Verify an artifact's GPG signature and trust chain |
| artifact_install | Artifact | Install an artifact from a URL, with trust verification |
| Checkout (ACP) | ||
| create_checkout_session | Checkout | Create a new checkout session from line items and currency |
| get_checkout_session | Checkout | Retrieve the current state of a checkout session |
| update_checkout_session | Checkout | Update items or fulfillment details on a session |
| complete_checkout_session | Checkout | Submit payment and finalize the order |
| cancel_checkout_session | Checkout | Cancel a checkout session with optional intent trace |
| Federation & Teams | ||
| teams | Federation | List all registered teams across the federation |
| team | Federation | Get a team's details including member skills |
| evaluate | Federation | Evaluate a skill's suitability for a given context |
| analytics | Federation | Get team analytics: task volume, completion rate, response time |
| availability | Federation | Check real-time availability of skills and stands |
| publish | Federation | Publish stand to AT Protocol for cross-server discovery |
| connections | Federation | View the connection graph for a profile or stand |
A rich set of REST endpoints — some owner-only (JWT), some public for federation and discovery. Grouped by domain below.
| Endpoint | Method | Auth | Description |
|---|---|---|---|
| Auth & Health | |||
| /token | POST | — | Authenticate and receive a JWT |
| /health | GET | — | Health check with version info |
| Tasks | |||
| /tasks | GET | Bearer | List tasks — filter by status, paginate |
| /tasks/{id}/accept | POST | Bearer | Accept a queued task → in_progress |
| /tasks/{id}/complete | POST | Bearer | Complete task, capture payment |
| /tasks/{id}/refund | POST | Bearer | Refund or cancel a task |
| Payments | |||
| /register-payment | POST | — | Create a payment provider customer |
| /payment/webhook | POST | Signature | Payment webhook — checkout.session.completed |
| /order | POST | — | Submit an order with payment flow selection |
| Skills & Profiles | |||
| /skills | GET | Bearer | List all skills from config |
| /profiles | GET | Bearer | List all profiles |
| /profile | GET | Bearer | Get active profile with completeness score |
| Artifacts | |||
| /artifacts/{id} | GET | Visibility | Get artifact metadata (private/unlisted/public) |
| /artifacts/{id}/verify | GET | — | Verify artifact GPG signature and trust chain |
| /artifacts/{id}/files/{name} | GET | Visibility | Download an artifact file |
| Federation | |||
| /.well-known/lemonade | GET | — | Federation discovery — instance info + peers |
| /.well-known/webfinger | GET | — | WebFinger resource lookup |
| /.well-known/did.json | GET | — | DID document for the instance |
| /federation/graph | GET | — | Peer graph with trust data |
| /peers | GET | — | List known federation peers |
| /actor | GET | — | ActivityPub actor profile |
| /inbox | POST | Signature | ActivityPub shared inbox |
| /outbox | GET | — | ActivityPub outbox |
| Connections & Teams | |||
| /graph/{profile_id} | GET | Bearer | Get a profile's connection graph |
| /graph/connect | POST | Bearer | Request a connection to another profile |
| /teams | GET | Bearer | List all teams |
| Stand (Human-Facing) | |||
| /stand | GET | — | HTML stand card — your public menu |
| /stand/{profile_id} | GET | — | HTML stand card for a specific profile |
| /install.html | GET | — | Setup instructions for AI agent operators |
| /stand/og-image | GET | — | OpenGraph social share image |
# Clone and enter the repo git clone https://jamesmunsch.com/lemonade.git && cd lemonade # Install with dev dependencies pip install -e ".[dev]" # Configure .env — set payment_provider (stripe or memory), and provider keys export PAYMENT_PROVIDER=stripe export STRIPE_SECRET_KEY=sk_test_... export STRIPE_WEBHOOK_SECRET=whsec_... # Guided onboarding (seeds DB, seeds skills, creates admin) lemonade init # Start the server lemonade serve --reload
# List all available skills via MCP curl -X POST http://localhost:8000/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","method":"tools/list","id":1}' # Or open the stand card in a browser open http://localhost:8000/stand
Lemonade includes Pour — a mesh deployment system that turns a VPS into a running stand with one command. Podman quadlets, WireGuard VPN, systemd services, and event hooks for webhook notifications.
# Run the interactive install wizard lemonade install \ --domain your-domain.com \ --reverse-proxy nginx # Or use the guided init to set up from scratch lemonade init
Systemd-native container management. No Docker daemon, no compose overhead. Define your services as quadlet files, systemd handles the rest.
Nodes communicate over an encrypted WireGuard VPN. Your stand can join a mesh of peers — federated discovery, mirrored artifacts, shared trust.
Jinja-templated hook scripts fire on task lifecycle events (create, accept, complete, refund), artifact publish/revoke, and payment events. Ship notifications wherever you need them.
Define your skills. Set your prices. Open to AI agents, federated across stands, on your terms.