Shortlist Pass for AI agents

Read a real local business — its menu, upcoming stops and events, and pickup availability — over MCP or plain JSON, and build an order the customer pays for on the business’s own page. No key, no sign-in.

Setup

Add https://app.shortlistpass.com/mcp to your MCP client (Claude, ChatGPT or any client that supports remote MCP servers) as a remote connector. There is no sign-in, no API key and no account: every tool works as soon as the connector is added. Streamable HTTP, MCP spec 2025-03-26.

MCP server

https://app.shortlistpass.com/mcp

Six tools. The five read tools return published data only. The one write tool, start_order, creates a short-lived cart and nothing else:

ToolWhat it returns
search_businesses(town?, category?, query?)Find businesses. Read-only.
get_business(subdomain)Profile, hours, whether ordering is open. Read-only.
get_menu(subdomain)The full catalog: every item's id (use it in start_order), name, price, available / sold_out, and options — its sizes and add-ons by label with their prices. For a food truck, what is sold on a given day is the stop's own menu (see next). Read-only.
get_upcoming_events(subdomain)Upcoming stops and events with each stop's own menu, menu_status, and open pickup slots. Read-only.
get_trucks_tonight(city, days?)What trucks.shortlistpass.com shows (days 1-7 adds the week, grouped by day, like the site's "Where the trucks are" band): tonight's confirmed stops in a city with times, park, open-now and an order link when preorders are open, plus trucks usually at a park with no stop posted today (labelled as such). Read-only.
start_order(subdomain, event_id, pickup_time, items, customer, agent)Build an order from offering ids (or, failing that, item names) and quantities — never prices. Returns a priced quote with deals and tax applied, and a cart link that expires in 30 minutes. The customer reviews and pays on the business's own page. Creates a cart only; never charges.

JSON API

https://app.shortlistpass.com/api/agent/v1
EndpointWhat it returns
GET /businesses/{subdomain}Name, type, description, town, phone, website, page URL, hours (fixed locations), whether ordering is open and the order page URL.
GET /businesses/{subdomain}/menuActive public menu items: name, description, price, category, tags, sold-out flag, image URL.
GET /businesses/{subdomain}/eventsUpcoming events and stops: ISO start/end with offset, location, whether pre-orders are open, and the pickup slots still available with remaining capacity.
GET /search?town=&category=&q=Find businesses. town is a slug like myrtle-beach, category a key like food_truck, q free text matched word-by-word against the business and its menu items (menu matches carry matched_items). Never returns demos.
GET /trucks-tonight?city=&days=Food trucks with a confirmed stop today in a city (myrtle-beach, austin), and with days=1..7 (default 1) the posted stops grouped by day (days): truck, park, address, local start/end, open_now, page link, order link only when preorders are open; plus usually_here trucks (no stop posted today, labelled). The data behind trucks.shortlistpass.com. Never returns demos.
POST /ordersThe JSON twin of start_order. Body: { subdomain, event_id, pickup_time, items: [{ offering_id or name, quantity, options }], customer, agent }. Returns the quote and cart_url — or, when a name is unclear, error "needs_choice" with matched / choose / not_found per line. 20 requests an hour per IP.

Example:

curl https://app.shortlistpass.com/api/agent/v1/businesses/nitos/menu
curl "https://app.shortlistpass.com/api/agent/v1/search?town=myrtle-beach&q=empanadas"

Ordering — customers pay on the business’s own page

An assistant can build an order with start_order: it sends offering ids and quantities, never prices. The server prices every line from the menu, applies the business’s deals and tax, and returns a quote (before an optional tip the customer chooses at checkout) plus a cart_url. The customer opens that link on the business’s page, reviews the order and pays there through the business’s own Stripe or Square checkout. The assistant never takes payment and never sees card details. The cart expires in 30 minutes if it is not paid.

Order by id from get_menu. If you only have a name, send it; if we reply ’choose’, ask your user and resend with the id. We never accept prices. The customer reviews and pays on our cart page.

Each line of items takes an offering_id (preferred) or a name. A name is matched against what the business sells right now, forgiving capitals, punctuation and small typos. If a name is unclear or not on the menu, no cart is created: the reply is error needs_choice with details.lines, one entry per line — matched (with its id), choose (options, each with id, name and price) or not_found (up to three items that are genuinely close, with ids — an empty list when nothing is) — and a message you can read to your user. Ask them, then call start_order again with the id. Sizes and add-ons go in options by the labels get_menu lists, e.g. { "Size": "Large" }.

A food truck sells per stop: start_order needs the stop’s event_id, accepts only items on that stop’s menu, and needs a pickup_time from the stop’s open slots. A stop whose menu_status is not_live cannot be ordered yet.

What you will never see

Customer, order, owner, payment and internal fields are not part of any response — every response is built from an explicit allow-list of public fields. Demo pages return 404. Test, cancelled, draft and private events are omitted.

Limits and freshness

60 requests a minute per IP. Responses are cached for up to a minute, so an owner’s change shows within that. Times are ISO 8601 with the business’s own UTC offset; the timezone field names the zone.

Privacy and support

What the agent door collects and keeps is described in our privacy policy, under “AI Assistants (Agent Door)”. Support: hello@shortlistpass.com.

Discovery

Listed on the official MCP Registry as com.shortlistpass/local-businesses (registry entry).

Every business host serves /llms.txt (for example nitos.shortlistpass.com/llms.txt) naming these endpoints, and app.shortlistpass.com/llms.txt describes the platform. A crawlable list of businesses is at https://app.shortlistpass.com/directory/myrtle-beach.