get_started
Get started
How to use Lokand as an agent: the recipes for creating a restaurant for a customer, editing menus, and handing over ownership. Call this first if you're unsure what to do.
Takes no parameters.
com.lokandPublished by lokand.comOfficial publisherv1.0.2Updated Nov 11, 2026
Free restaurant websites and menus: read any public menu, or build, import and publish a site.
Lets an assistant read public restaurant menus and build, import, theme and publish a restaurant's Lokand menu website.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/com.lokand%2Flokand/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"lokand-restaurant": {
"type": "http",
"url": "https://api.lokand.com/mcp"
}
}
}Get started
How to use Lokand as an agent: the recipes for creating a restaurant for a customer, editing menus, and handing over ownership. Call this first if you're unsure what to do.
Takes no parameters.
List businesses
List the businesses the signed-in user is a member of (id, name, slug, role). Use it to pick the business_id other ops need.
Takes no parameters.
Get business
Look up a public Lokand restaurant/business by its slug. Returns profile, hours, contact info, locale and theme metadata.
slugrequiredList menus
List the active menus of a public Lokand restaurant by its slug.
slugrequiredGet menu
Fetch a single menu (categories + items with prices) of a public Lokand restaurant.
slugrequiredmenu_idrequiredGet status
Private status of a business the caller manages: profile (including unpublished state), all menus (active and inactive), and plan. Requires the menu:read scope and membership.
business_idrequiredCreate full menu
Create a COMPLETE menu (sections + items) in one call — prefer this over separate create_menu/add_category/add_item calls. With replace=true, existing menus are deactivated so this becomes the business's live menu (their data is kept, just hidden).
menurequiredreplacebusiness_idrequiredCreate menu
Create an EMPTY menu on a business the caller manages (add sections with add_category, dishes with add_item). For a whole menu at once, use create_full_menu instead. Returns the new menu_id.
idnamerequiredis_activebusiness_idrequireddescriptionAdd category
Add a category (section) to a menu. Returns the new category_id.
idnamerequiredmenu_idrequiredsort_orderAdd item
Add a dish/item to a menu (optionally inside a category). Returns the new item_id.
idnamerequiredpricemenu_idrequiredsort_ordervariationscategory_iddescriptiondietary_infois_availableUpdate item
Update a menu item's fields (name, description, price, availability, category, sort order). Only provided fields change. Setting is_available=false takes a dish off the public site (86 it).
namepriceitem_idrequiredsort_ordervariationscategory_iddescriptiondietary_infois_availableDelete item
Delete a menu item.
item_idrequiredUpdate menu
Rename a menu, change its description, or switch it on/off on the public site (is_active). Only provided fields change. Menu ids come from get_status.
namemenu_idrequiredis_activedescriptionDelete menu
Permanently delete a menu together with ALL of its sections and items. To take a menu off the site but keep it, use update_menu is_active=false instead.
menu_idrequiredRename category
Rename a menu category (section).
namerequiredcategory_idrequiredReorder categories
Set the order of a menu's categories (sections). List category ids top to bottom; any you leave out keep their current relative order after the listed ones.
menu_idrequiredcategory_idsrequiredDelete category
Delete a menu category (section). Its items are NOT deleted — they stay on the menu without a section; move them with update_item category_id or delete them with delete_item.
category_idrequiredReorder items
Set the order of the items in one section of a menu. List item ids top to bottom; listed items from another section are moved into this one, and the section's other items keep their relative order after the listed ones.
menu_idrequireditem_idsrequiredcategory_idrequiredUpdate business
Update a business's profile: name, description, about text, opening hours, contact info, currency, default locale, menu display options, country, business details, or place (location, address, timezone, category, cuisines). Only provided fields change.
nameabouthoursplacemaps_urllegal_infobusiness_idrequireddescriptioncontact_infocountry_codemenu_optionscurrency_code+1 moreSet theme
Switch the site to a system theme with `theme_id` (lokand-base, lokand-one — get_site lists them; pages, sections and settings are kept). Legacy shape: `theme_key` (a style preset) plus an optional v1 `theme_config` patch (colors, fonts, hero title/subtitle) — prefer apply_style_preset / update_theme_settings for that. Revertible with revert_last_site_change.
theme_idtheme_keybusiness_idrequiredtheme_configPublish site
Publish (or unpublish) the business's public menu site at https://<slug>.lokand.co.
publishbusiness_idrequiredCreate restaurant
Create a new Lokand restaurant on a customer's behalf — ONE call can produce a complete LIVE website when you pass `menu` (and optionally hours/theme). Returns working OAuth tokens (Bearer, for follow-up edit ops), the live site_url, and a claim_url. NEXT STEPS after this call: refine with add_item/update_item/set_theme if needed, then give the customer the claim_url so they take ownership (free signup); poll claim_status to keep access after they claim. Requires a client registered once via POST /api/auth/oauth2/register (see https://lokand.com/auth.md).
menunamerequiredslughoursplacethemepublishmaps_urlclient_idrequireddescriptioncontact_infoclient_secretrequired+2 moreClaim status
Check whether the customer has claimed an agent-created restaurant. On the first poll after a claim with consent granted, returns fresh OAuth tokens for continued management (delivered exactly once).
client_idrequiredclaim_tokenrequiredclient_secretrequiredCreate checkout link
Create a Stripe Checkout link to upgrade a business to a paid plan. Hand the returned URL to the customer — anyone who opens it can pay; the plan activates automatically after payment (3-month free trial). Pass customer_country (ISO 3166-1 alpha-2) so first-time pricing is quoted in the customer's region, not the agent's.
business_idrequiredproduct_keyrequiredcustomer_countryGet billing summary
Current plan, billing region, and subscription state of a business the caller manages.
business_idrequiredImport menu
Start an AI import of a restaurant's menu from the URL of its existing website. Returns an import_id to poll with import_status; when complete, call commit_import to turn the draft into a real menu.
urlrequiredbusiness_idrequiredImport status
Check an AI menu import: processing, complete (draft ready to commit), or failed. `progress.found` lists what is known so far; complete responses include the draft for review.
import_idrequiredCommit import
Commit a completed AI menu import as a real menu (creates the menu, categories, and items). Returns the new menu_id.
import_idrequiredCheck compliance
Check a business's published menu against what a country's menu rules ask for — allergen and calorie declarations, price-list notices, banned surcharges, operator identity. Returns each requirement with its official sources, plus which ones the menu currently falls short of and the item ids involved. ADVISORY ONLY: it reports, it never changes the site, and it is not legal advice.
countrybusiness_idrequiredApply country settings
Fill the business's menu display options with the values a country's rules suggest — a notice about tax-inclusive pricing, the price-effective date, ordering restrictions. These are DEFAULTS: the owner can change any of them afterwards, and nothing here is enforced.
localecountryoverwritebusiness_idrequiredGet site
Read the business's website: `document` (the v3 site document — settings, home, pages, and templates[page_id] → sections → blocks, with the ids every other site op needs), `theme` (what the live theme offers: every section and block type with its settings, the theme settings, and style presets), `resolved_settings` (the concrete theme settings the site renders with), `live_theme` (the custom theme code in use, with its file paths, or null for a system theme), `style_hooks` (stable [data-lk="…"] attributes custom_css can target on a system theme), `system_themes` (for set_system_theme) and `templates` (segment layouts for apply_template). Settings are listed compactly as "id:type(options)"; pass detail: "full" for labels and defaults. ALWAYS call this before changing the site.
detailbusiness_idrequiredUpdate site
Low-level escape hatch: apply an RFC 7386 JSON merge patch to the whole v3 site document returned by get_site.document (objects merge, null deletes a key, arrays REPLACE). Prefer the specific site ops. The result is validated against the theme before anything is saved.
patchrequiredbusiness_idrequiredUpdate theme settings
Merge-patch the theme's global settings (keys from get_site.theme.theme_settings, e.g. color_primary, font_heading, radius, custom_css). null resets a key to the theme/preset default.
settingsrequiredbusiness_idrequiredApply style preset
Switch the site's style preset (get_site.theme.style_presets, e.g. terra, porto, noir, marche, slate). Colors and fonts the owner changed are reset unless keep_overrides=true.
presetrequiredbusiness_idrequiredkeep_overridesUpdate theme
Legacy look op: switch `preset`, patch v2-style `tokens` (colors, fonts, radius, hero layout, …) or set custom CSS. Prefer update_theme_settings / apply_style_preset.
presettokenscustom_cssbusiness_idrequiredApply template
Rebuild the site's pages and sections from a segment template (cafe, ghost-kitchen, fine-dining, chain, bar, bakery — see get_site.templates). Replaces the page structure; hero copy and custom CSS carry over. keep_theme=true keeps the current style. Revertible with revert_last_site_change.
templaterequiredkeep_themebusiness_idrequiredApply site preset
Alias of apply_template (`preset` = template id).
presetrequiredkeep_themebusiness_idrequiredSet page
Change one page: enable/disable it, show/hide it in the navigation, rename its title, change its path, make it the home page, or move it in the navigation. Only provided fields change. Page ids come from get_site.document.pages (built-ins: home, menu, about, loyalty).
pathtitleenabledpage_idrequiredpositionmake_homebusiness_idrequiredshow_in_navAdd page
Add a new page with a text section (add more with add_section). Returns the updated document, where the new page's id appears.
pathtitlerequiredpositionbusiness_idrequiredRemove page
Remove a custom page and its sections. The home page can't be removed — make another page home first (set_page make_home).
page_idrequiredbusiness_idrequiredSet nav links
Replace the navigation with custom links ([] restores the automatic page list).
linksrequiredbusiness_idrequiredAdd section
Add a section of a given `type` (keys of get_site.theme.sections) to a page, optionally from one of its presets, with a settings patch and a 0-based position (default: the end). Sections hold blocks; add them with add_block.
kindtypepresetpage_idrequiredpositionsettingsbusiness_idrequiredUpdate section
Change one section: merge-patch its settings (null removes a key; settings: null resets them all) and/or hide/show it. Ids come from get_site.document.templates[page_id].
hiddenpage_idrequiredsettingssection_idrequiredbusiness_idrequiredRemove section
Remove a section from a page. To keep it for later, hide it with update_section hidden=true instead.
page_idrequiredsection_idrequiredbusiness_idrequiredMove section
Move a section to a 0-based position within its page.
page_idrequiredpositionrequiredsection_idrequiredbusiness_idrequiredAdd block
Add a block (a repeatable piece inside a section: a link, a photo, a testimonial, …) of a `type` the section accepts (get_site.theme.sections[type].blocks). Nest it in another block with parent_block_id.
typerequiredpresetpage_idrequiredpositionsettingssection_idrequiredbusiness_idrequiredparent_block_idUpdate block
Merge-patch one block's settings (null removes a key) and/or hide/show it.
hiddenpage_idrequiredblock_idrequiredsettingssection_idrequiredbusiness_idrequiredMove block
Move a block to a 0-based position among its siblings.
page_idrequiredblock_idrequiredpositionrequiredsection_idrequiredbusiness_idrequiredRemove block
Remove a block (and any blocks nested in it).
page_idrequiredblock_idrequiredsection_idrequiredbusiness_idrequiredSet featured items
Choose the dishes shown in the home page's "featured" section, in order (menu item ids, max 12; [] lets the site pick automatically). Adds the section after the hero if the page has none.
page_iditem_idsrequiredbusiness_idrequiredSet system theme
Switch to another system theme (get_site lists `system_themes`). Pages, sections and settings are kept.
theme_idrequiredbusiness_idrequiredMake menu only
Turn the site into a single menu page (the menu becomes the home page, every other page is disabled). Use when the owner wants "just the menu". Revertible with revert_last_site_change.
business_idrequiredSet brand link
Chains only: link this location to its brand's shared site (linked=true) so it shows the brand template's pages and theme, or unlink it (linked=false) to use its own site again. Hours, address, menus and ordering always stay this location's own. The brand template is set with publish_brand_template.
linkedrequiredbusiness_idrequiredPublish brand template
Chains only: make this location's published site the brand template that every linked location of its organization shows (see set_brand_link). Requires brand owner/admin and the franchise plan.
business_idrequiredRevert last site change
Undo the most recent site change made through the site ops or set_theme (up to the last 10, kept for 30 days). Call repeatedly to step further back. 404 when there is nothing to undo.
business_idrequiredUpdate loyalty card
Set up or change the business's loyalty stamp card: how many stamps earn the reward, the reward text, whether the card is live, and its look. Only provided fields change; the first call must include stamps_required and reward_text. Requires the Pro plan (402 plan_required otherwise — offer create_checkout_link).
is_activebusiness_idrequiredcard_configreward_textstamps_requiredTheme list
List the business's custom themes (id, name, role live|unpublished|development, version, upload status) and the system themes. Custom theme code is a Pro feature.
business_idrequiredTheme get
One theme's details and upload status: ready (the version is stored and can be published), processing (poll again in a second or two) or failed (with the error).
theme_idrequiredbusiness_idrequiredTheme pull
Download a theme's files ({path: text}). theme_id "lokand-base" or "lokand-one" returns a system theme to start from. Custom themes return their latest stored version. A whole theme is large: pass search to find the lines you need to change, or list_only for paths and sizes, then paths for whole files.
pathssearchtheme_idrequiredlist_onlybusiness_idrequiredTheme upload
Upload a complete custom theme (Pro plan) as a new commit in its Git repo. Files are validated and compiled at once — a 422 lists every problem as `path: message` lines — then compiled in the background: poll theme_get until status is ready, then theme_publish. Without theme_id, role development reuses your one development theme and role unpublished creates a new theme; with theme_id it stores the next version of that theme. Updating the live theme needs allow_live: true.
namerolefilesrequiredmessagetheme_idallow_livebusiness_idrequiredTheme write files
Change some files of a custom theme (Pro plan) as one new commit: files maps path → whole new text (null deletes), edits are find/replace changes. Read the current files with theme_pull first. Same validation and background compile as theme_upload. On the LIVE theme the change goes live automatically once compiled; theme_rollback undoes it. On a system theme id (lokand-base, lokand-one) it creates a new unpublished theme from it; pass publish: true to make that live too.
nameeditsfilesmessagepublishtheme_idrequiredbusiness_idrequiredTheme publish
Make a custom theme the live site's code (Pro plan). The previous live theme becomes unpublished and cached pages refresh. `warnings` lists parts of the current site document the new theme doesn't define (fix them with the site ops).
theme_idrequiredbusiness_idrequiredTheme unpublish
Stop using custom theme code: the site goes back to its system theme. The custom theme is kept as unpublished.
business_idrequiredTheme delete
Delete a custom theme and all its stored versions. The live theme can't be deleted — unpublish it first.
theme_idrequiredbusiness_idrequiredGet storefront context
The exact data a theme renders with (the StorefrontData Liquid objects are built from): the business (localized, brand site applied), every active menu with items, primary menu id, loyalty/ordering flags, the stamp-card program and its resolved style — plus theme_data (the site document) and live_theme. Use it to preview or test theme code locally.
localebusiness_idrequiredTheme history
The commit history of a custom theme's code, newest first: hash, message, author, time. The `commit` on theme_get is the one the site renders.
limittheme_idrequiredbusiness_idrequiredTheme rollback
Restore a custom theme's code to an earlier commit (Pro plan). It is saved as a new commit, so the rollback itself can be undone; on the live theme it goes live once compiled. Without commit, restores the version before the latest change.
committheme_idrequiredbusiness_idrequiredTheme git access
Git access to a custom theme's code: the HTTPS remote and a repo-scoped token (read, or write on the Pro plan). Pushes to main compile automatically and, for the live theme, publish once compiled; theme_get shows a push that failed to compile as push_error. Tokens expire (default 1 hour).
scopetheme_idrequiredbusiness_idrequiredttl_secondsTheme sync
Compile the latest commit on a custom theme's main branch now (Pro plan). Pushes compile on their own; call this to apply a push immediately or to retry. Validates like an upload and, for the live theme, publishes once compiled. Poll theme_get for status.
theme_idrequiredbusiness_idrequiredList assets
List every image the business owns: its media library (uploads, photos copied from its old website at import, photos the owner attached in chat), its logo and every menu item photo. Each entry has its url, kind, source, where it is used, and tags a vision model read off the image: subject (dish, drink, interior, exterior, people, logo, menu), what it shows, whether it matches the dish it is labelled as, quality 1-5, dominant colors and alt text. Use these urls for any site or menu image; never use an outside image.
kindbusiness_idrequiredUse asset
Put one of the business's own images (a url from list_assets) to use: as the logo (target "logo") or as a menu item's photo (target "item" with item_id). For a site section or block image, pass the same url to update_section / update_block instead.
urlrequiredtargetrequireditem_idbusiness_idrequiredSuggest styles
Recommend looks for the business's website from Lokand's style library (14 hand-made looks, from a Michelin-style 'gastronomique' to a street 'bufe'), read from its menu, prices, logo and photos. Returns the three best fits, how bold to go (safe / distinct / bold, from how much material the business has) and why, and the whole library. Call this before a new look or a redesign, then get_style for the chosen look.
business_idrequiredGet style
Compile one look from the style library into the exact settings to send in ONE update_theme_settings call (palette, fonts, shape, spacing and a signature custom_css on the stable [data-lk] hooks), plus the menu section style to set, the photo to put in the home hero (hero_image, if any), how to shape the home page, the copy voice, and do / don't lists. By default it uses the logo's color when the logo has a strong one. level: safe, distinct or bold (from suggest_styles, or the owner's ask: 'bolder' / 'simpler').
levelstylerequiredseed_colorbusiness_idrequireduse_logo_colors83% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.
A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.