🍋

Human at the Helm.
Agents at the Counter.

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.

MCP 2025 Streamable HTTP Pluggable Payments HTTP 402 Federation AT Protocol Artifact Marketplace AGPL-3.0
🍋 Get Started View Source

Why Lemonade

You make the thing. You set the price. A customer pays. You hand it over.

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.

1
📋

You Put Up Your Sign

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.

2
🤖

They Find Your Stand

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.

3
💳

They Pay at the Counter

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.

4
📦

You Hand Over the Cup

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.


What You Get

A proper stand comes with a proper setup.

The counter, the register, the sign, the neighborhood — everything you need to run an AI-native commerce stand, from discovery to delivery.

Your Menu

Drop-In YAML Skills

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.

Your Register

HTTP 402 as a Handshake

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.

Your Counter

27 MCP Tools, Streamable HTTP

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).

Your Neighborhood

Federated Discovery

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.

Your Goods

Artifact Marketplace

Publish artifacts with visibility tiers: private (workspace-only), unlisted, public, and public-gated. GPG-backed identity, revocable publications, and trust verification built in.

Your Reputation

Trust & Reputation Primitives

Trust assertions, rate-limited reputation scoring, external reputation import (GitHub stars, Codeberg activity), and contact gates — all portable across stands.

Your Ledger

Contract Workspaces

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.

Your Stand

Human-Facing Stand Card

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.

Your Keys

JWT + GPG + Localhost Guard

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.

Your CLI

Full Terminal Control

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.

Your Infrastructure

Pour: Mesh Deployment

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.

Your Ecosystem

Plugin Scaffolds

Ready-to-extend plugin skeletons for Odoo, Django, and WordPress. MCP tools, models, views, and test suites — wire Lemonade commerce into existing platforms.


MCP Tools

27 tools. Grouped by domain.

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).

ToolDomainDescription
Commerce
listCommerceDiscover available skills with input schemas and prices
callCommerceSubmit a task with payment — checkout URL, off-session hold, or HTTP 402
statusCommercePoll task status and retrieve structured results when complete
installCommerceGet installation instructions for connecting an AI agent
preflightCommercePre-flight check: verify call preconditions without charging
ordersCommerceList tasks/orders for a customer by customer ID
request_refundCommerceRequest a refund for a purchased task
Discovery & Search
searchDiscoveryFull-text search across skills, optionally including federated peers
discoverDiscoveryBrowse available skills by category or keyword
Profiles
profileProfileGet public seller profile: bio, skills, trust tier, reputation
profile_completenessProfileScore a profile's completeness and get improvement suggestions
profile_seedProfileSeed a new profile from GitHub, website, forge, or DOCX resume
Artifacts
feedArtifactBrowse the artifact feed with visibility-aware filtering
verifyArtifactVerify an artifact's GPG signature and trust chain
artifact_installArtifactInstall an artifact from a URL, with trust verification
Checkout (ACP)
create_checkout_sessionCheckoutCreate a new checkout session from line items and currency
get_checkout_sessionCheckoutRetrieve the current state of a checkout session
update_checkout_sessionCheckoutUpdate items or fulfillment details on a session
complete_checkout_sessionCheckoutSubmit payment and finalize the order
cancel_checkout_sessionCheckoutCancel a checkout session with optional intent trace
Federation & Teams
teamsFederationList all registered teams across the federation
teamFederationGet a team's details including member skills
evaluateFederationEvaluate a skill's suitability for a given context
analyticsFederationGet team analytics: task volume, completion rate, response time
availabilityFederationCheck real-time availability of skills and stands
publishFederationPublish stand to AT Protocol for cross-server discovery
connectionsFederationView the connection graph for a profile or stand

REST API

Your side of the counter.

A rich set of REST endpoints — some owner-only (JWT), some public for federation and discovery. Grouped by domain below.

EndpointMethodAuthDescription
Auth & Health
/tokenPOSTAuthenticate and receive a JWT
/healthGETHealth check with version info
Tasks
/tasksGETBearerList tasks — filter by status, paginate
/tasks/{id}/acceptPOSTBearerAccept a queued task → in_progress
/tasks/{id}/completePOSTBearerComplete task, capture payment
/tasks/{id}/refundPOSTBearerRefund or cancel a task
Payments
/register-paymentPOSTCreate a payment provider customer
/payment/webhookPOSTSignaturePayment webhook — checkout.session.completed
/orderPOSTSubmit an order with payment flow selection
Skills & Profiles
/skillsGETBearerList all skills from config
/profilesGETBearerList all profiles
/profileGETBearerGet active profile with completeness score
Artifacts
/artifacts/{id}GETVisibilityGet artifact metadata (private/unlisted/public)
/artifacts/{id}/verifyGETVerify artifact GPG signature and trust chain
/artifacts/{id}/files/{name}GETVisibilityDownload an artifact file
Federation
/.well-known/lemonadeGETFederation discovery — instance info + peers
/.well-known/webfingerGETWebFinger resource lookup
/.well-known/did.jsonGETDID document for the instance
/federation/graphGETPeer graph with trust data
/peersGETList known federation peers
/actorGETActivityPub actor profile
/inboxPOSTSignatureActivityPub shared inbox
/outboxGETActivityPub outbox
Connections & Teams
/graph/{profile_id}GETBearerGet a profile's connection graph
/graph/connectPOSTBearerRequest a connection to another profile
/teamsGETBearerList all teams
Stand (Human-Facing)
/standGETHTML stand card — your public menu
/stand/{profile_id}GETHTML stand card for a specific profile
/install.htmlGETSetup instructions for AI agent operators
/stand/og-imageGETOpenGraph social share image

Quick Start

Get your stand up and running.

# 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
Try It

Discover your skills from the terminal.

# 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

Deploy

Pour your stand onto any server.

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
Containerized

Podman Quadlets

Systemd-native container management. No Docker daemon, no compose overhead. Define your services as quadlet files, systemd handles the rest.

Secure

WireGuard Mesh

Nodes communicate over an encrypted WireGuard VPN. Your stand can join a mesh of peers — federated discovery, mirrored artifacts, shared trust.

Observable

Event Hooks

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.


Run your own Lemonade server.

Define your skills. Set your prices. Open to AI agents, federated across stands, on your terms.

🍋 Clone the Repo Read the Docs