Documentation

Edit your menu with ChatGPT or Claude Code

Connect an AI assistant to your restaurant and ask for changes in plain words: load a whole menu from a file, change prices, mark a dish as sold out, tidy your description.

Before you start

  • You need a Pankarta account and a restaurant where you are the owner or a manager. Create one free if you haven't.
  • The address of Pankarta's server is the same for everyone. You'll paste it in the steps below:
https://www.pankarta.com/api/mcp

Assistants connect through the Model Context Protocol (MCP), an open standard, so anything that supports MCP servers over HTTP can use the same address.

Connect ChatGPT

You sign in to Pankarta from ChatGPT. There is no token to copy.

  1. Open ChatGPT in a web browser. Custom servers can only be added on the web, and a workspace admin may have to allow them.
  2. Go to Plugins, select the plus button, then Add custom MCP server.
  3. Give it a name, such as Pankarta.
  4. Under Connection, choose Server URL (not Tunnel) and paste https://www.pankarta.com/api/mcp.
  5. Set authentication to OAuth.
  6. Read the warning, select I understand and want to continue, then Create as a plugin.
  7. Install the plugin. ChatGPT sends you to Pankarta: sign in, pick the restaurant and select Allow access.
  8. Back in ChatGPT, start a chat with the plugin turned on and ask for what you need.

ChatGPT asks you to confirm before it changes anything, and shows what it is about to send. Reading your menu doesn't need a confirmation. ChatGPT renames these menus from time to time; if yours look different, see OpenAI's guide to custom MCP servers.

Connect Claude Code

Two ways: sign in from Claude Code, or paste a token you create in Pankarta.

Sign in from Claude Code

  1. In a terminal, add the server:
    claude mcp add --transport http pankarta https://www.pankarta.com/api/mcp
  2. Start Claude Code and type /mcp. Choose pankarta and authenticate. Or do it from the terminal:
    claude mcp login pankarta
  3. Your browser opens Pankarta. Sign in, pick the restaurant and select Allow access. Pankarta shows that you'll be sent back to an app on your computer: that is Claude Code.
  4. Check that it's connected:
    claude mcp list

Or use a token

Useful on a server or in scripts, where no browser can open. A token doesn't expire until you remove it, so treat it like a password.

  1. In your Pankarta dashboard, open the restaurant, go to AI access, name the connection and select Create connection. Copy the token: it is shown only once.
  2. Add the server with the token:
    claude mcp add --transport http pankarta https://www.pankarta.com/api/mcp \
      --header "Authorization: Bearer pk_ai_YOUR_TOKEN"

To share the setup with a team without sharing the token, put it in the project's .mcp.json and keep the token in an environment variable:

.mcp.json
{
  "mcpServers": {
    "pankarta": {
      "type": "http",
      "url": "https://www.pankarta.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ${PANKARTA_TOKEN}"
      }
    }
  }
}

Disconnect

claude mcp logout pankarta
claude mcp remove pankarta

Removing the server from Claude Code doesn't end the connection on our side. Run logout first, or remove it under AI access in your dashboard. More in Claude Code's MCP documentation.

Things to ask

  • “Here is our menu as a PDF. Load it into Pankarta.”
  • “Raise every pie to $38 and mark the empanadas as sold out.”
  • “Shorten our description to one sentence and add our Instagram.”
  • “Which dishes have no price or no description?”
  • “Move the desserts to their own category and put it last.”

A menu can come as a PDF, a photo, a spreadsheet, a JSON file or pasted text: the assistant reads it and turns it into categories and dishes. It only writes what your file says. It is told not to invent descriptions, prices or allergens.

What the assistant can and can't do

  • One restaurant

    A connection is tied to the restaurant you pick when you allow it. It can't see or change any other restaurant, including your own others.

  • Your permissions, no more

    The assistant acts as you. A manager's connection can edit the menu; only an owner's can change the restaurant's details. If you leave the team, it stops working.

  • It shows its plan first

    Loading a menu starts as a preview of what would be added and changed. Nothing is saved until you agree, and loading never deletes what's already there.

  • It asks before deleting

    Deleting dishes or categories lists what would go and waits for a yes. Hiding is usually the better choice, and the assistant is told so.

  • Out of reach

    Billing, team members, QR codes, analytics and your password have no tools. The assistant can't touch them.

  • You can cut it off

    Open AI access in your dashboard and remove the connection. It stops working at once.

The tools

What an assistant sees when it connects. Each one works on the connected restaurant only.

ToolWhat it doesKind
get_restaurantReads your restaurant's details, its menus and your plan's limits.Reads
get_menuReads one menu in full: categories, sub-categories and every dish.Reads
update_restaurantChanges the description, location, phone, email, timezone, opening hours, and social and delivery links.Changes
set_logoSets the logo from an image link, or removes it.Changes
import_menuCreates or updates a whole menu at once. Shows what it will add and change before saving, and never deletes.Changes
update_itemsChanges dishes: name, description, price, tags, allergens, sold out, hidden, or their category.Changes
set_item_photoSets a dish's photo from an image link, or removes it.Changes
update_categoryRenames a category, changes its description, or hides it.Changes
update_menuRenames a menu, changes its description, or turns it on or off.Changes
delete_itemsDeletes dishes for good. Lists them first and waits for a yes.Deletes
delete_categoryDeletes a category with everything in it. Reports what's inside first and waits for a yes.Deletes

Other assistants, and technical details

For anything else that speaks MCP, and for developers who want to know what is on the other end.

MCP configuration (with a token from AI access)
{
  "mcpServers": {
    "pankarta": {
      "type": "http",
      "url": "https://www.pankarta.com/api/mcp",
      "headers": {
        "Authorization": "Bearer pk_ai_YOUR_TOKEN"
      }
    }
  }
}
Transport
Streamable HTTP. One JSON-RPC message per POST, answered with JSON. No sessions and no server-sent stream (GET answers 405).
Protocol versions
2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Requests that carry their version in _meta are served statelessly, with server/discover; clients that open with initialize are served as before.
Authorization
OAuth 2.1 with PKCE (S256), scope mcp, resource https://www.pankarta.com/api/mcp. Clients identify themselves with a Client ID Metadata Document or Dynamic Client Registration. Or send a dashboard token as a bearer token.
Tokens
Access tokens last 60 minutes. Refresh tokens last 30 days and are replaced each time they're used.
Discovery
https://www.pankarta.com/.well-known/oauth-protected-resource/api/mcp
https://www.pankarta.com/.well-known/oauth-authorization-server
Without a token
An assistant can ask what the server is and list its tools. Calling a tool answers 401 with where to sign in. A token that is wrong or expired always answers 401.
Limits
120 requests a minute per connection, 10 connections per restaurant, 500 dishes per import. Prices are in currency units: 7.5 means $7.50.
Browser apps
Requests from a web page are accepted from ChatGPT, Claude and tools running on your own computer. Assistants that call from their own servers aren't affected.

If something goes wrong

ChatGPT or Claude Code asks me to sign in again
A connection that goes unused for 30 days expires. Sign in again when asked and pick the restaurant. It also ends if someone removes it under AI access, or if you leave the restaurant's team.
It says it isn't allowed to do something
The connection has the permissions of the person who created it. Restaurant details and the logo need an owner; creating, importing and deleting need an owner or a manager. Ask the owner to connect it themselves.
Claude Code shows “Needs authentication”
Type /mcp inside Claude Code, choose pankarta and follow the browser steps. If you used a token, it may have been removed: create a new one under AI access and add the server again.
I connected the wrong restaurant
Remove the connection under AI access in that restaurant's dashboard, then connect again and pick the right one. To work on two restaurants, connect each one separately.
The assistant set a photo and it failed
Photos and logos must be a direct https link to a JPEG, PNG or WebP file of up to 4 MB. A link to a web page, a shared-drive preview or a private file won't work.
Does it cost extra?
No. The connection is part of Pankarta. Your plan's limits on menus and dishes still apply, and the assistant is told when it reaches them. Your ChatGPT or Claude subscription is separate.

Put your menu online, then let an assistant keep it current.

Free for your first restaurant. No card to start.

Create a menu