← Add Lenius to Claude or ChatGPT
Lenius MCP server
Lets AI assistants (ChatGPT, Claude, Muse and others) find local Danish shops on Lenius, show their products and prices, and place orders for pickup or delivery that the customer pays for by card on the shop’s own order page. Age-restricted products are confirmed with the Danish AltID.
Setup
- Endpoint
https://mcp.lenius.app/mcp- Transport
- MCP Streamable HTTP (POST, JSON responses). Stateless: no sessions and no server push; GET returns 405.
- Authentication
- None. No user accounts or stored credentials. Only shops that have enabled AI assistants are visible.
- One shop
- Each shop also has its own endpoint,
https://<shop>.lenius.app/mcp, with only that shop. - Language
- Tools and responses are in English; shop and product names are as the shop wrote them (mostly Danish). Prices are in DKK incl. VAT.
Order flow
find_shops→ choose a shop.get_menuandavailable_times→ products, options and a time.quote_order→ show the lines, total, seller and terms to the customer.- The customer confirms and accepts the terms →
place_order. - The customer pays by card on
order_url; the shop receives the order when it is paid. order_status→ follow the order.
Products with an age limit: place_order returns age_check_required with the AltID card; call it again with age_check_id once the age is confirmed. For orders from several shops, start_age_check once and reuse the id (valid 30 minutes).
Tools
find_shopsRead
Find shops in a Danish city or postal code.
- Input
cityorpostal_code; optionalquery(e.g. "pizza"),fulfillment(pickup|delivery),date(YYYY-MM-DD),time(HH:MM).- Output
- Shops with
shop(id for the other tools), name, address, pickup/delivery, nearest available times andcan_order. - Side effects
- None.
available_timesRead
Pickup or delivery times on a date.
- Input
shop,fulfillment; optionaldate.- Output
- Available times, the next dates with times, preparation time and upcoming closed days.
- Side effects
- None.
quote_orderRead
Price and check an order exactly like the shop checkout.
- Input
shop,fulfillment,date,time,items(product_id,quantity,options),addressfor delivery.- Output
- Lines, fees, discounts,
total_dkk,currency, payment method,seller,terms_url,recurring_charges,cancellation_policy; shown as a card. - Side effects
- None. Nothing is saved.
place_orderSensitive write
Place the order with the shop (a purchase).
- Input
- Same as
quote_order, pluscustomer(name,email,phone),accepted_terms: true, optionalcommentandage_check_id. - Output
order_id,order_number,status,order_url(the shop’s order page with “Betal nu”),payment_qr_url,seller,currency,cancellation_policy; orage_check_requiredwith the AltID card.- Side effects
- Creates an order awaiting payment. Only call after the customer has confirmed the quote and accepted the shop’s terms. The customer pays by card on the order page; the shop receives the order when it is paid, and the customer gets a confirmation e-mail.
start_age_checkWrite
Start an age check with the Danish AltID (orders from several shops with age-restricted products).
- Input
min_age.- Output
age_check_idand the AltID card (QR code / “Åbn AltID app”).- Side effects
- Creates an age check at altid.lenius.ai. Returns only whether the person is over the age limit; no identity or date of birth.
get_age_checkRead
Status of an age check.
- Input
age_check_id; optionalwait_seconds(max 25).- Output
status: pending, approved, failed, expired or revoked.- Side effects
- None.
order_statusRead
Status of an order from place_order.
- Input
shop,order_id.- Output
status, time, delay, items,total_dkk,order_url,seller(with phone and e-mail for changes or cancellation),cancellation_policy.- Side effects
- None.
Order statuses
| Status | Meaning |
|---|---|
awaiting_payment | Placed, waiting for the customer to pay on the order page. |
awaiting_shop_approval | Paid (card reserved); the shop approves or rejects it. |
approved | The shop accepted the order. |
in_kitchen | Being prepared. |
ready | Ready for pickup. |
out_for_delivery | On the way. |
completed | Picked up or delivered. |
cancelled | Cancelled. |
rejected | Rejected by the shop; the card reservation is released and nothing is charged. |
Purchases, payment and cancellation
- The seller is the shop (
seller: legal name, CVR, address, phone and e-mail). Lenius provides the platform. - All prices are in DKK incl. VAT. One-time payment; no recurring charges.
- Payment is by card on the shop’s order page; the payment is reserved and only charged when the shop accepts. If the shop rejects the order, the reservation is released. Lenius never receives card details.
- Changes and cancellation: contact the shop (
seller.phone/seller.email). Refunds and any right of withdrawal follow the shop’s terms (terms_url).
Errors
- A tool that cannot do what was asked returns
isError: truewith a message that explains why and what to do (e.g. an unavailable time, a required option, the minimum order, a delivery address outside the area). - Invalid input is rejected by the input schema before anything happens.
- Too many calls: HTTP 429 with JSON-RPC error
-32000andretry-after: 60.
Rate limits
| Limit | Per |
|---|---|
| 600 MCP calls per minute | IP address |
60 find_shops per minute | IP address |
3 place_order per minute | Phone number |
Data and security
- Data used: the customer’s name, e-mail and phone, and the delivery address for delivery orders, only to place the order and send the confirmation. No other data about the customer is looked up.
- Order status can only be read with the shop and the order’s random id, and returns no contact details.
- All traffic is HTTPS; data is encrypted at rest. Hosted on Cloudflare Workers.
- Security reports: security@lenius.dk (security.txt).