Portata

For platform reviewers

Portata is how an independent restaurant lets an AI assistant read its live menu and place a real order. This page is what our connector does, what it can reach, and the single thing it can commit.

Written for the people deciding whether to list us. Everything below was verified against the live server rather than written from intention.

What it is

One restaurant's ordering counter, exposed as tools. The menu, tonight's prices, what the kitchen has run out of, what the restaurant would send instead, and a way to place the order. Each restaurant chooses to be here and can leave at any time.

The same information is already public on that restaurant's own ordering page. The connector does not reach anything a person with a browser could not see.

Nine tools. Eight of them only read.

ToolWhat it doesWrites?
find_restaurantFinds a participating restaurant by name.No
read_boardTonight's menu, real prices, what is unavailable, pickup time.No
whats_out_tonightWhat the kitchen has run out of, and when it returns if the restaurant said.No
what_goes_withThe restaurant's own recommendation alongside a dish, and its reason.No
substitute_forWhat the restaurant would offer instead of something unavailable, and why.No
course_verdictsWhich courses the restaurant wants offered for the order so far.No
price_orderPrices an order. Returns the restaurant's own total. Writes nothing.No
place_orderPlaces the order with the restaurant.Yes
order_statusWhether a placed order or a payment handoff has completed.No

Exactly one tool can commit anything

place_order is the only tool that changes the world. A model can explore the entire surface, price an order as many times as it likes, and change its mind, without anything happening. That separation is deliberate.

It cannot invent a price

This is the part we would want a reviewer to check first, because it is the usual fear with an agent that can buy something.

place_order must send back the exact total the restaurant quoted. The restaurant refuses any order whose total does not match its own, down to the cent. A model that hallucinates a price does not get a cheap order; it gets a refusal and a sentence explaining why.

So the restaurant's price always wins, and an AI assistant can only repeat it.

Money never flows through us

Where a restaurant takes payment before cooking, place_order does not charge anything. It returns a link for the person to pay on the restaurant's own page, and the tool tells the model not to claim the order is in until order_status confirms it. The payment stays between the customer and the restaurant. We are not in it.

What it touches

When something goes wrong

Every failure returns an error the model can read aloud, never an empty result. This matters more than it sounds: a model handed an empty menu concludes the restaurant has no food and tells the person so. A model handed "I could not reach the board" says that instead, which is both true and recoverable.

Refusals carry the restaurant's own sentence. If an item is not on the board, if a size is missing, if a total is wrong, the answer names the problem rather than failing silently.

Authentication

The connector is unauthenticated, deliberately. Every tool reaches the same public surface as the restaurant's own ordering page: a public menu, public prices, and an order anyone can place from a browser. There is nothing behind a login to protect, so adding one would be security theatre rather than security.

No account, key or sign-in is needed to connect. If we later add a tool that acts on a restaurant owner's own account, that tool will ask for sign-in while the public ones stay open.

Connecting, and what you will find

The server is at https://uzscpumvvstejyhcxndx.supabase.co/functions/v1/mcp. Add it as a connector, with no credentials, and all nine tools are available immediately.

The restaurant to try is Marino's, slug portata-pizza-demo. find_restaurant finds it by name. Its board carries about a hundred dishes with real prices, and at least one dish is usually marked unavailable, so whats_out_tonight and substitute_for both have something to say.

Marino's is a sample restaurant, and its till is a sandbox

Marino's exists so that this connector can be exercised without a real kitchen receiving anything. The board says so itself: it opens with "this is a sample restaurant" and read_board returns demo: true.

Its point of sale is a sandbox account, not a live merchant. An order placed through place_order becomes a real order record in Portata and a real order in that sandbox, which is what lets you see the whole path work. No food is cooked, no money moves, and no operating restaurant is touched. Place as many as you need.

Restaurants that take real orders run the same tools against their own live till. The difference is the account behind the restaurant, not the connector.

Who runs it

Portata is a small company building ordering for independent restaurants. Every restaurant reachable through this connector has chosen to be, and the menus, prices and recommendations are theirs rather than ours.