Skip to content

opentable mcp changelog

io.github.chrischall/opentable-mcp

10 changes recorded. MCP Harbor re-reads this listing from the official registry every six hours and asks the live server what it exposes, and keeps what changed between one look and the next.

  • server.json 1 field changed
    version
    1.3.5 1.4.1

  • server.json 1 field changed
    version
    1.3.4 1.3.5

  • AGENTS.md +1 −200

    https://raw.githubusercontent.com/chrischall/opentable-mcp/HEAD/AGENTS.md

    − # AGENTS.md — opentable-mcp− Guidance for coding agents working in this repo.− ## TL;DR− OpenTable MCP server with 15 tools (read + write), fronted by a− pluggable browser bridge. Default transport: localhost WebSocket via− [`@fetchproxy/server`](https://github.com/chrischall/fetchproxy) — the− companion browser extension, ContextMint Bridge, is installed separately− from https://github.com/nullnet-app/contextmint-bridge/releases (Chrome:− unpacked zip; Safari not available yet — use Chrome for now) rather than− embedded in this repo. Opt-in alternative:− `OT_BRIDGE=mcp-chrome` routes through hangwin/mcp-chrome's HTTP MCP− endpoint instead. Either way, every request rides the user's own browser− session — their cookies, their TLS, their JS context — never ours.− ## Bridge selection− `OT_BRIDGE` env var picks the transport:− - `OT_BRIDGE=websocket` (default) — wraps `@fetchproxy/server`'s−   `FetchproxyServer` (WebSocket on 127.0.0.1:37149; override with−   `OT_WS_PORT`). The user installs the ContextMint Bridge extension once−   (Chrome / Safari) instead of loading a per-MCP embedded extension.−   See https://github.com/nullnet-app/contextmint-bridge/releases.− - `OT_BRIDGE=mcp-chrome` — talks to hangwin/mcp-chrome at−   `http://127.0.0.1:12306/mcp` (override with `OT_MCP_CHROME_URL`).−   Requires mcp-chrome ≥ the release containing−   [PR #348](https://github.com/hangwin/mcp-chrome/pull/348) — the−   `tabUrl` parameter on `chrome_network_request`. Pre-PR mcp-chrome−   versions are active-tab-only and break credentialed cross-origin−   fetches. Live-verification of this path is pending the upstream merge.−   **Read-only:** writes (book, modify, cancel, favorites) are refused up−   front — they need a CSRF-bearing relay tab this transport can't supply —−   and `opentable_find_slots` is unavailable (no `graphql` capability).− ## Commands− - `npm test` — vitest, all mocked, no network. Must stay green.− - `npm run build` — `tsc --noEmit` typecheck + esbuild bundle → `dist/bundle.js`.− - `npx tsc --noEmit` — typecheck only (also runs as part of `npm run build`).− - `node dist/bundle.js` — launch the MCP server over stdio (also starts the WS listener).− - `npx tsx scripts/probe-find-slots.ts` — live GET round-trip via the extension.− - `npx tsx scripts/probe-favorites-toggle.ts` — live add + remove favorite.− - `npx tsx scripts/probe-book-cancel.ts` — **books and immediately cancels a real reservation.** Pick a restaurant that won't mind a 3-second booking.− - `npx tsx scripts/probe-book-cc-cancel.ts` — same as above but for a CC-required slot (exercises the preview → book flow).− - `npx tsx scripts/probe-book-cancel-uk.ts` — UK-region variant (databaseRegion, country handling).+ CLAUDE.md

    Showing the first 40 of each.

  • server.json 1 field changed
    version
    1.3.3 1.3.4

  • server.json 2 fields changed
    env_vars
    none OT_BRIDGE, OT_MCP_CHROME_URL, OT_WS_PORT, FETCHPROXY_WS_HOST, FETCHPROXY_IDENTITY_DIR
    version
    1.3.2 1.3.3

  • AGENTS.md +9 −5

    https://raw.githubusercontent.com/chrischall/opentable-mcp/HEAD/AGENTS.md

    − OpenTable MCP server with 13 tools (read + write), fronted by a− - **`src/booking-token.ts`** — encodes/decodes the opaque, stateless base64-JSON `booking_token` that bridges `opentable_book_preview` → `opentable_book` with a tamper check.− Note: `manifest.json` now lists all 13 tools (was historically out of sync — `opentable_book_preview` was missing). The release workflow rewrites versions but not the tool list — if you change the tool surface, update `manifest.json` by hand.− Commits land on `main` via PR. release-please (`.github/workflows/release-please.yml`) opens or updates a `chore(main): release X.Y.Z` PR whenever Conventional-Commit messages (`feat:`, `fix:`, etc.) accumulate. Merging the release PR (arm `ready-to-merge`) creates the tag and a GitHub Release; the `publish` job then packs the `.mcpb` bundle and `.skill` archive, publishes to npm with provenance, and pushes to the MCP Registry.− - **CC-required slots route through preview.** The slot-lock response doesn't carry the CC-required flag or cancellation policy — those live in the `/booking/details` SSR page's `__INITIAL_STATE__` (`timeSlot.creditCardRequired`, `messages.cancellationPolicyMessage`, `wallet.savedCards`). `opentable_book_preview` fetches that page + slot-locks, and mints a `booking_token` that `opentable_book` consumes. `booking_token` is opaque, stateless base64-JSON — no server-side cache — with a tamper check+ OpenTable MCP server with 15 tools (read + write), fronted by a+   **Read-only:** writes (book, modify, cancel, favorites) are refused up+   front — they need a CSRF-bearing relay tab this transport can't supply —+   and `opentable_find_slots` is unavailable (no `graphql` capability).+ - **`src/booking-token.ts`** — encodes/decodes the opaque, stateless, HMAC-signed `booking_token` (base64url JSON + signature, 10-minute lifetime) that bridges `opentable_book_preview` → `opentable_book` with a tamper check.+ | `opentable_get_menu` | `tools/restaurants.ts` | Same restaurant profile GET; `restaurantProfile.menus` SSR | read |+ Note: `manifest.json` lists all 15 tools (was historically out of sync — `opentable_book_preview` was missing). The release workflow rewrites versions but not the tool list — if you change the tool surface, update `manifest.json` by hand.+ Commits land on `main` via PR. release-please (`.github/workflows/release-please.yml`) opens or updates a `chore(main): release X.Y.Z` PR whenever Conventional-Commit messages (`feat:`, `fix:`, etc.) accumulate. Merging the release PR creates the tag and a GitHub Release; the `publish` job then packs the `.mcpb` bundle and `.skill` archive, publishes to npm with provenance, and pushes to the MCP Registry.+ - **CC-required slots route through preview.** The slot-lock response doesn't carry the CC-required flag or cancellation policy — those live in the `/booking/details` SSR page's `__INITIAL_STATE__` (`timeSlot.creditCardRequired`, `messages.cancellationPolicyMessage`, `wallet.savedCards`). `opentable_book_preview` fetches that page + slot-locks, and mints a `booking_token` that `opentable_book` consumes. `booking_token` is opaque and stateless — no server-side cache — but HMAC-signed with a key t

  • server.json 1 field changed
    version
    1.3.1 1.3.2

  • server.json 1 field changed
    version
    1.2.4 1.3.1

  • server.json 1 field changed
    version
    1.2.3 1.2.4

  • server.json 1 field changed
    version
    1.2.2 1.2.3