Lenius

Find local takeaway shops, browse menus and pickup times, and order with card payment.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
100%
Vollständigkeit des Schemas
95%
Qualität der Benennung
90%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,113Tokens (Tool-Definitionen)
~3.1 KBTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.43% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "takeaway": {
      "url": "https://mcp.lenius.app/mcp"
    }
  }
}

Remote-Endpunkte

https://mcp.lenius.app/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (8)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢find_shops(city, postal_code, query, fulfillment, date, ...)

Find Lenius takeaway restaurants and shops in a Danish city or postal code. Optional: what the customer wants (query, e.g. "pizza"), pickup or delivery, and a date/time to check availability (returns the nearest available times).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "city": {
      "description": "City, e.g. \"Frederikshavn\"",
      "type": "string",
      "minLength": 2,
      "maxLength": 60
    },
    "postal_code": {
      "description": "Danish postal code, e.g. \"9900\"",
      "type": "string",
      "minLength": 3,
      "maxLength": 10
    },
    "query": {
      "description": "What to eat or buy, e.g. \"pizza\" or \"sushi\", or the shop's name",
      "type": "string",
      "minLength": 2,
      "maxLength": 80
    },
    "fulfillment": {
      "description": "pickup or delivery",
      "type": "string",
      "enum": [
        "pickup",
        "delivery"
      ]
    },
    "date": {
      "description": "YYYY-MM-DD, default today (Danish time)",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time": {
      "description": "HH:MM, e.g. \"19:00\"",
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_menu(shop, query)

The menu of a shop from find_shops: categories and products with prices in DKK (incl. VAT) and whether they are available. A product with a unit is priced per unit (pcs, portion, pack, kg, g, l, cl, ml, m = metre). Also weight in grams, preparation time in minutes (orders for it need at least that much notice) and the main image when set. Optional query to only get matching products.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "description": "The \"shop\" value from find_shops (not needed on a shop's own address <shop>.lenius.app/mcp)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "query": {
      "description": "Only products matching this, e.g. \"pizza\"",
      "type": "string",
      "minLength": 2,
      "maxLength": 80
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢available_times(shop, fulfillment, date)

Available pickup or delivery times for a shop on a date (default: the first date with times), the next dates with times, preparation time and upcoming closed days.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "description": "The \"shop\" value from find_shops (not needed on a shop's own address <shop>.lenius.app/mcp)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "fulfillment": {
      "type": "string",
      "enum": [
        "pickup",
        "delivery"
      ],
      "description": "pickup or delivery"
    },
    "date": {
      "description": "YYYY-MM-DD",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "fulfillment"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢quote_order(shop, fulfillment, date, time, items, ...)

Price an order exactly like the shop checkout (lines, fees, discounts, total in DKK incl. VAT), check that the time, products, minimum order and delivery address are OK, and tell how it is paid. Nothing is saved. Shows a card with the products (with their images), fees and total so the customer can see what they are ordering; show the result to the customer before place_order.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "description": "The \"shop\" value from find_shops (not needed on a shop's own address <shop>.lenius.app/mcp)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "fulfillment": {
      "type": "string",
      "enum": [
        "pickup",
        "delivery"
      ]
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD (from available_times)"
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "HH:MM (from available_times)"
    },
    "items": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Product id from get_menu"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99
          },
          "options": {
            "description": "Answers to the product's options from get_menu (option_id + choice_id, option_id + text, or option_id + choices for choose_many). Required options must be answered; ask the customer, never pick for them.",
            "maxItems": 20,
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "choice_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32,
                      "description": "choice_id from get_menu"
                    }
                  },
                  "required": [
                    "option_id",
                    "choice_id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 500,
                      "description": "The customer's own words, e.g. \"uden løg\""
                    }
                  },
                  "required": [
                    "option_id",
                    "text"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "choices": {
                      "maxItems": 100,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "choice_id": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "quantity": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100,
                            "description": "1 unless the option has quantities"
                          }
                        },
                        "required": [
                          "choice_id",
                          "quantity"
                        ],
                        "additionalProperties": false
                      },
                      "description": "choose_many: the chosen choices; the total must be between min_total and max_total"
                    }
                  },
                  "required": [
                    "option_id",
                    "choices"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          }
        },
        "required": [
          "product_id",
          "quantity"
        ]
      }
    },
    "address": {
      "description": "Required for delivery",
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "minLength": 2,
          "maxLength": 120,
          "description": "Street and number"
        },
        "postal_code": {
          "type": "string",
          "minLength": 3,
          "maxLength": 10
        },
        "city": {
          "type": "string",
          "minLength": 2,
          "maxLength": 60
        }
      },
      "required": [
        "street",
        "postal_code",
        "city"
      ]
    }
  },
  "required": [
    "fulfillment",
    "date",
    "time",
    "items"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢place_order(shop, fulfillment, date, time, items, ...)

Place the order with the shop (like the checkout). Only after the customer confirmed the quoted order and accepted the terms (terms_url). Paid by card in advance on the shop's order page: returns the order number and order_url (with "Betal nu"; the shop gets the order when paid). The customer gets a confirmation e-mail when paid. With products with an age limit and no approved age_check_id, nothing is ordered: returns status age_check_required with the AltID card; call again with age_check_id when the age is confirmed.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "description": "The \"shop\" value from find_shops (not needed on a shop's own address <shop>.lenius.app/mcp)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "fulfillment": {
      "type": "string",
      "enum": [
        "pickup",
        "delivery"
      ]
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "YYYY-MM-DD (from available_times)"
    },
    "time": {
      "type": "string",
      "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
      "description": "HH:MM (from available_times)"
    },
    "items": {
      "minItems": 1,
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "product_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "Product id from get_menu"
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 99
          },
          "options": {
            "description": "Answers to the product's options from get_menu (option_id + choice_id, option_id + text, or option_id + choices for choose_many). Required options must be answered; ask the customer, never pick for them.",
            "maxItems": 20,
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "choice_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32,
                      "description": "choice_id from get_menu"
                    }
                  },
                  "required": [
                    "option_id",
                    "choice_id"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 500,
                      "description": "The customer's own words, e.g. \"uden løg\""
                    }
                  },
                  "required": [
                    "option_id",
                    "text"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "option_id": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 32
                    },
                    "choices": {
                      "maxItems": 100,
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "choice_id": {
                            "type": "string",
                            "minLength": 1,
                            "maxLength": 32
                          },
                          "quantity": {
                            "type": "integer",
                            "minimum": 1,
                            "maximum": 100,
                            "description": "1 unless the option has quantities"
                          }
                        },
                        "required": [
                          "choice_id",
                          "quantity"
                        ],
                        "additionalProperties": false
                      },
                      "description": "choose_many: the chosen choices; the total must be between min_total and max_total"
                    }
                  },
                  "required": [
                    "option_id",
                    "choices"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          }
        },
        "required": [
          "product_id",
          "quantity"
        ]
      }
    },
    "address": {
      "description": "Required for delivery",
      "type": "object",
      "properties": {
        "street": {
          "type": "string",
          "minLength": 2,
          "maxLength": 120,
          "description": "Street and number"
        },
        "postal_code": {
          "type": "string",
          "minLength": 3,
          "maxLength": 10
        },
        "city": {
          "type": "string",
          "minLength": 2,
          "maxLength": 60
        }
      },
      "required": [
        "street",
        "postal_code",
        "city"
      ]
    },
    "customer": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 2,
          "maxLength": 100
        },
        "email": {
          "type": "string",
          "maxLength": 200,
          "format": "email",
          "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
        },
        "phone": {
          "type": "string",
          "minLength": 8,
          "maxLength": 20,
          "description": "Danish phone number, e.g. \"12 34 56 78\""
        }
      },
      "required": [
        "name",
        "email",
        "phone"
      ]
    },
    "comment": {
      "description": "A note for the shop, e.g. \"no onions\"",
      "type": "string",
      "maxLength": 500
    },
    "accepted_terms": {
      "type": "boolean",
      "description": "true when the customer has accepted the shop's terms (terms_url)"
    },
    "age_check_id": {
      "description": "Products with an age limit: the approved age check (from start_age_check or the age_check_required card); one age check can be reused for 30 minutes across shops",
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    }
  },
  "required": [
    "fulfillment",
    "date",
    "time",
    "items",
    "customer",
    "accepted_terms"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢start_age_check(min_age)

Start an age check with AltID before ordering products with an age limit (min_age from get_menu/quote_order). With several orders, use the highest age limit across all of them and reuse the age_check_id in every place_order (valid 30 minutes after approval, at any shop). Shows the AltID card (QR code / "Åbn AltID app") that updates by itself. Never make your own QR code.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "min_age": {
      "type": "integer",
      "minimum": 1,
      "maximum": 120,
      "description": "The age to confirm, e.g. 18"
    }
  },
  "required": [
    "min_age"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_age_check(age_check_id, wait_seconds)

Status of an age check: pending, approved (pass age_check_id to place_order), failed, expired or revoked. wait_seconds (max 25) waits while pending. While pending, the card shows the AltID QR code again.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "age_check_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64
    },
    "wait_seconds": {
      "description": "Wait up to this many seconds while pending",
      "type": "integer",
      "minimum": 0,
      "maximum": 25
    }
  },
  "required": [
    "age_check_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢order_status(shop, order_id)

Status of an order from place_order: awaiting_payment, awaiting_shop_approval, approved, in_kitchen, ready, out_for_delivery, completed, cancelled or rejected (and any delay).

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "shop": {
      "description": "The \"shop\" value from find_shops (not needed on a shop's own address <shop>.lenius.app/mcp)",
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "order_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "description": "order_id from place_order"
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet8 Tools