Reads the manifest, not the page
Every shop publishes a lucerna.json — what it sells, what it can do, where its doors are, and its concierge pointer. An agent knows exactly what to do without scraping a screen or guessing a SKU.
Agent API + MCP · live in production
The next customers won’t all be human. Every Lucerna shop publishes a lucerna.json manifest and answers a plain HTTP grammar — and the whole thing is
also one MCP URL you paste into an AI client. Read what a shop sells, book an
appointment with a deposit link, or walk its concierge to a priced quote. No scraping, no
hallucinated SKUs, no human left out of the loop, and nothing to install.
$ claude mcp add --transport http lucerna https://platform.lucernanoetica.com/v1/mcp ✓ lucerna · 3 tools · no auth needed to read or to walk a concierge › shop_lookup(shop: "marrow-atelier") marrow-atelier · Marrow Atelier can: bookings · deposits · concierge concierge → version 3 › concierge_walk(shop: "marrow-atelier") “Two chairs, Denver. What are we designing?” ask → how many square inches, roughly? › concierge_walk(walk: "wk_9f3a…", answer: "24") ask → where should we send the quote? › concierge_walk(walk: "wk_9f3a…", answer: "sam@example.com") ✓ quote · Half sleeve — $840.00 on its way to sam@example.com · the shop has the whole conversation
one URL · https://platform.lucernanoetica.com/v1/mcp · add Authorization: Bearer bk_agt_… for a
shop’s own operator tools
Why it works
Every shop publishes a lucerna.json — what it sells, what it can do, where its doors are, and its concierge pointer. An agent knows exactly what to do without scraping a screen or guessing a SKU.
The same rails a person uses, restated as a machine grammar. Book a slot with a deposit link; or walk the shop’s intake and get a priced quote emailed to the buyer, with the conversation sealed as a receipt.
Errors come back honest — 401 for a bad token, 404 for an unknown shop, 409 when a slot was just taken. An agent key can configure a shop and can never move its money: no such tool exists, by construction.
shop_lookup(shop) What a shop is and what it can actually do — bookings, a shop, tips, a concierge — with the public doors behind each one.concierge_walk(shop, walk?, answer?) Walk the shop’s own guided intake to a real quote, one question at a time. Deterministic: no model of ours in the loop, and the shop owner gets the whole conversation.concierge_document(shop) The intake as a document — every question, the catalog it prices against, the formula — so an agent knows what it’s walking into.flow_publish(doc) · agent key Write the shop’s front-of-house. An AI interviews the owner, composes the document, validates it, publishes it — and the quote page is live at their address.flow_leads() · agent key Every walk their concierge has had: the answers, the price quoted, where it was sent.GET /v1/t/<slug>/services Live services — duration · price · deposit, in the shop’s own currency.GET /v1/t/<slug>/availability?service_id&date Open slots on the shop’s wall clock, timezone included.POST /v1/t/<slug>/bookings Book it end-to-end. Returns a ticket, the deposit link, and an add-to-calendar .ics.POST /v1/t/<slug>/concierge/walk The concierge walk over plain HTTP — one turn per call, the same grammar the MCP tool speaks.Bookings live on bookings.lucernanoetica.com, the concierge on platform.lucernanoetica.com. Full spec, including the manifest an agent starts from — lucerna.json v1.
Booking and quoting are live today. The next layer adds a catalog grammar for the Commerce tier — an agent browses products and pays over the non-custodial escrow rail, so a human can undo an accidental checkout before a cent moves. That layer is in build; everything above it is not.
Ask about Commerce