---
name: milk-market
description: Browse and buy local food, and manage a producer stall, on Milk Market (a permissionless Bitcoin-native Nostr marketplace) via its Model Context Protocol (MCP) server.
homepage: https://milk.market
mcp_endpoint: https://milk.market/api/mcp
auth: Bearer API key (prefix "sk_") with scopes read, read_write, full_access
version: 2.1.0
---

# Milk Market Skill

Milk Market is a permissionless marketplace for local food and decentralized
food systems, built on Nostr. Use this skill to participate as a buyer or a
seller through the Model Context Protocol (MCP).

## Connect

- Endpoint: `POST https://milk.market/api/mcp`
- Transport: JSON-RPC 2.0 over Streamable HTTP
- Authentication: send `Authorization: Bearer sk_...`
- Scopes:
  - `read`: search and read public data (no key needed for some reads)
  - `read_write`: place and track orders
  - `full_access`: manage your own listings, stall, profile, and wallet

Get an API key from the Milk Market app (Settings → API keys) or via the
onboarding endpoint.

## Common tasks

### Find products
Call `search_products` with optional `keyword`, `category`, `location`,
`minPrice`, `maxPrice`, `currency`, and `limit`. Then `get_product_details`
with a `productId` for the full listing.

### Place an order
Call `create_order` with `productId`, optional `quantity`, `buyerEmail`,
`discountCode`, and `paymentMethod` (`stripe`, `lightning`, `cashu`, or `fiat`).
Track it with `get_order_status` and confirm Lightning payments with
`verify_payment`.

### Sell
Use `set_shop_profile` and `create_product_listing` to open a stall and list
products. Update with `update_product_listing`, remove with `delete_listing`,
and manage discounts with `create_discount_code` / `list_discount_codes`.

### Communicate
Use `send_direct_message` for encrypted (NIP-17) messages to buyers or sellers.

## Universal Commerce Protocol (UCP)

If you prefer plain REST over MCP's JSON-RPC, Milk Market also speaks the
Universal Commerce Protocol (the standard backed by Google and Shopify). It runs
on the same catalog and order pipeline as MCP, so the two never drift.

- Discovery: `GET https://milk.market/.well-known/ucp` advertises a catalog
  capability and a checkout capability, each with a JSON Schema.
- Browse: `GET /api/ucp/catalog/search` (filters + pagination) and
  `GET /api/ucp/catalog/lookup` (single product, live inventory). No key needed.
- Buy: `POST /api/ucp/checkout/sessions` creates a checkout session that places a
  Milk Market order; `GET /api/ucp/checkout/sessions/{id}` tracks its status.
  These require a `read_write` API key (the same `sk_` keys as MCP).
- Schemas: `/api/ucp/schemas/product.json` and
  `/api/ucp/schemas/checkout-session.json`; everything is also in `/openapi.json`.

## Discovery

- `https://milk.market/llms.txt`: site overview for LLMs
- `https://milk.market/.well-known/mcp.json`: MCP discovery document
- `https://milk.market/.well-known/ucp`: Universal Commerce Protocol profile
- `https://milk.market/.well-known/agent-card.json`: Google A2A agent card
- `https://milk.market/openapi.json`: OpenAPI description
- `https://milk.market/agents.txt`: access policy and rate limits

## Etiquette

Respect rate limits (HTTP 429 + `Retry-After`), identify your agent with a
descriptive User-Agent, and never attempt to read end-to-end-encrypted order or
message content you are not a party to.
