Skip to content

Quickstart

Every session follows the same three steps.

Pick the mode that fits your client:

Client Mode
claude.ai, Cursor, Claude Desktop OAuth 2.1 connector
Claude Code, a server, a script gfk_ API key (Authorization: Bearer gfk_live_…)
Our own dashboard / FOH dashboard JWT

See Authentication for the details of each.

Call list_brands first. It returns the brands your credential can access, each with a slug.

// list_brands →
{
"brands": [
{ "slug": "medusa", "name": "Medusa Italian Osteria Romana" }
]
}

Pass that slug as the brand argument on every other tool.

Now call any tool your scopes allow. Reads are safe to explore; writes change live data.

// list_menu → { brand: "medusa" }
{
"brand": { "slug": "medusa", "name": "Medusa Italian Osteria Romana" },
"itemCount": 42,
"categories": [ /* … */ ]
}
// set_item_availability → { brand: "medusa", item: "Margherita", available: false }
{ "ok": true, "item": "Margherita", "available": false }
  • Name-addressed writes. Menu, table and shift tools take a name (a dish, a table, a shift) — not an internal id. An ambiguous name returns { needsDisambiguation, matches } without writing, so you can pick and retry.
  • Cascades are surfaced, never forced. A destructive edit that would affect existing bookings returns a 409 cascade_required you must acknowledge — it never silently cancels reservations.
  • Scope errors are explicit. A call outside your granted scopes is rejected before the tool runs.

Next: browse the full tool reference →