agentCLAWHUBUnverified

opentable-fpx

Query and manage OpenTable (opentable.com) restaurant reservations from a shell with the fpx CLI (@fetchproxy/cli) instead of running the opentable-mcp server — search restaurants, check slot availability, list reservations/favorites, and book/modify/cancel a table via one-shot GraphQL + REST calls through a signed-in browser tab. Use when you want OpenTable data or actions without the MCP, in a script, or on a machine where the MCP isn't installed. Skill: opentable-fpx Owner: chrischall Summary: Query and manage OpenTable (opentable.com) restaurant reservations from a shell with the fpx CLI (@fetchproxy/cli) instead of running the opentable-mcp server — search restaurants, check slot availability, list reservations/favorites, and book/modify/cancel a table via one-shot GraphQL + REST calls through a signed-in browser tab. Use when you want OpenTable data or act

OpenClaw

Rank

62

Safety

84

Downloads

1.8k

Updated

Oct 10, 2026

Version

1.3.3

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 1.8K downloads reported by the source. Last updated 10/10/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 10, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 10, 2026
Adoption signal
1.8K downloadsadoption · observed Oct 10, 2026
Latest release
1.3.3release · observed Oct 9, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:opentable-fpx
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-opentable-fpx/snapshot"

Documentation

CLAWHUB

149,118 characters of source documentation, loaded on request.

Extracted files

4 files captured from the source.

SKILL.md

---
name: opentable-fpx
description: >-
  Query and manage OpenTable (opentable.com) restaurant reservations from a
  shell with the fpx CLI (@fetchproxy/cli) instead of running the
  opentable-mcp server — search restaurants, check slot availability, list
  reservations/favorites, and book/modify/cancel a table via one-shot
  GraphQL + REST calls through a signed-in browser tab. Use when you want
  OpenTable data or actions without the MCP, in a script, or on a machine
  where the MCP isn't installed.
---

# OpenTable via fpx (no MCP)

OpenTable fronts `www.opentable.com` with Akamai bot protection, and every
booking/cancel action rides the user's own signed-in session (their
loyalty account, saved cards) — there's no API key and no server-side
login. `fpx` routes requests through the user's own signed-in browser tab
(the ContextMint Bridge extension), which already carries a cleared session, so
the same requests the opentable.com web app makes succeed.

This is the same data/actions the `opentable_*` MCP tools expose, reached
with one-shot CLI calls instead of a running server. Every body/header/hash
below is transcribed verbatim from opentable-mcp's `src/client.ts` and
`src/tools/*.ts` — not guessed.

## One-time setup

```sh
npm install -g @fetchproxy/cli            # provides `fpx`
fpx profile add opentable --domain opentable.com
fpx pair -p opentable                     # prints a pair code → approve in ContextMint Bridge
```

Requirements: the **ContextMint Bridge** browser extension installed
(https://github.com/nullnet-app/contextmint-bridge/releases; Chrome: load the zip unpacked; Safari isn't available yet, so use Chrome for now), an open
`www.opentable.com` tab **signed in**, and its Chrome **Site access**
allowing `opentable.com`. Pairing persists — after the first approval every
later `fpx` call reuses it.
ContextMint Bridge is the fetchproxy extension renamed, same maintainer (https://github.com/chrischall/fetchproxy#extension); source at https://github.com/nullnet-app/contextmint-bridge — build it or verify a release zip with `shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256`.

## Core call pattern

Two response families:

- **SSR HTML** (`/s`, `/r/{slug}`, `/user/dining-dashboard`,
  `/user/favorites`, `/booking/details`) embeds the page's data as a
  `window.__INITIAL_STATE__ = {...}` (or `"__INITIAL_STATE__":{...}`) JSON
  blob inside the HTML — extract it with `references/extract-initial-state.mjs`
  before `jq`.
- **`/dapi/...` JSON/GraphQL** returns plain JSON on stdout — pipe straight
  to `jq`.

```sh
fpx get 'https://www.opentable.com/r/state-of-confusion-charlotte' -p opentable \
  | node references/extract-initial-state.mjs \
  | jq '.restaurantProfile.restaurant | {id: .restaurantId, name, bookable: (.type != "Listing")}'
```

Most GraphQL calls here are **Apollo persisted queries** — you send an
operation name + a pre-registered `sha256Hash`, never GraphQL text. Write
the body to a file first (a heredoc

_meta.json

{
  "ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
  "slug": "opentable-fpx",
  "version": "1.3.3",
  "publishedAt": 1791588592933
}

references/opentable-fpx-requests.md

# OpenTable requests for fpx

All paths are relative to `https://www.opentable.com`. Bodies, headers, and
persisted-query hashes below are transcribed verbatim from opentable-mcp's
`src/client.ts`, `src/tools/*.ts`, and `src/tools/booking-flow.ts` — not
guessed. If a shape here stops working, re-check those files (or re-capture
per the note at the end) before assuming this doc is stale.

Two response families:
- **SSR HTML** pages embed the page's data as `window.__INITIAL_STATE__ =
  {...};` or `"__INITIAL_STATE__":{...}` inside the HTML. Pipe through
  `extract-initial-state.mjs` (same directory) before `jq`.
- **`/dapi/...` JSON/GraphQL** endpoints return plain JSON on stdout — `jq`
  directly.

Every write here (favorites add/remove, slot-lock, make-reservation,
cancel) is a REAL action against the signed-in account — there is no
confirm-gate or preview-then-`confirmToken` step like the MCP's write tools
have. Preview before you commit.

---

## 1. Search restaurants

`GET /s` — SSR. Data lives at `state.multiSearch.restaurants[]`
(`state.multiSearch.totalRestaurantCount`, `.metro.name`, `.metroId` for
the search's resolved metro). No slot/availability data here — that's §3.

```sh
fpx get 'https://www.opentable.com/s?term=Italian%20Charlotte&covers=2&dateTime=2026-08-01T19:00' \
  -p opentable | node extract-initial-state.mjs \
  | jq '.multiSearch.restaurants[] | {id: .restaurantId, name, cuisine: .primaryCuisine.name, url: .urls.profileLink.link, rating: .statistics.reviews.ratings.overall.rating}'
```

Query params (all optional, build the ones you have): `term` (free text —
join `"<term> <location>"` yourself, OpenTable does), `covers` (party
size), `dateTime` (`YYYY-MM-DDTHH:MM`, defaults the ranking not the
results), `latitude`, `longitude`, `metroId` (e.g. `8` = SF Bay Area, `31`
= Charlotte).

## 2. Restaurant detail

`GET /r/{slug}` — SSR. Data lives at `state.restaurantProfile.restaurant`.
A subset of (older) listings 404 here and are served at the **root**
path `/{slug}` instead (e.g. `/the-cellar-at-duckworths`) — try `/r/{slug}`
first, fall back to `/{slug}` on a 404. **Numeric ids route to
`/restaurant/profile/{id}`** instead of either — you
need the slug (from §1's `urls.profileLink.link`, or the venue's known
URL).

```sh
fpx get 'https://www.opentable.com/r/state-of-confusion-charlotte' -p opentable \
  | node extract-initial-state.mjs \
  | jq '.restaurantProfile.restaurant | {id: .restaurantId, name, type, bookable: (.type != "Listing"), phone: .contactInformation.formattedPhoneNumber}'
```

`type: "Listing"` (vs `"GuestCenter"`) means info-only — no slot picker,
no booking flow; surface the phone number instead of trying §6–8.

## 3. Find available slots

`POST /dapi/fe/gql?optype=query&opname=RestaurantsAvailability` — Apollo
persisted query (hash only, no GraphQL text sent). Response:
`data.availability[].availabilityDays[].slots[]`, each slot carrying
`timeOffsetMinutes` (relative to the `time` you sent, NOT absolute),

skill-card.md

## Description:

Helps agents search OpenTable, check availability, and manage reservations and favorites through a signed-in browser session using shell commands.

This skill is ready for commercial/non-commercial use.

## Publisher:

[chrischall](https://clawhub.ai/user/chrischall)

### License/Terms of Use:

MIT-0

## Use Case:

People and developers using OpenTable can search restaurants, inspect availability and existing reservations, and request bookings, modifications, cancellations, or favorite changes through their signed-in browser session.

### Deployment Geography for Use:

Global

## Known Risks and Mitigations:

Risk: A signed-in session can make real bookings, modifications, cancellations, and favorite changes without an enforced final confirmation.

Mitigation: Prefer read-only use; require the user to review and explicitly approve each account-changing command before execution.

Risk: Bookings or cancellations may involve fees, saved cards, experiences, or 3-D Secure steps.

Mitigation: Review booking details and cancellation terms before acting; involve the user for payment or 3-D Secure steps.

## Reference(s):

- [OpenTable FPX request reference](references/opentable-fpx-requests.md)
- [Initial-state extraction helper](references/extract-initial-state.mjs)
- [ContextMint Bridge](https://github.com/nullnet-app/contextmint-bridge)
- [FetchProxy CLI and extension](https://github.com/chrischall/fetchproxy#extension)

## Skill Output:

**Output Type(s):** [Shell commands, Guidance]

**Output Format:** [Markdown with shell commands and JSON examples]

**Output Parameters:** [1D]

**Other Properties Related to Output:** [May return restaurant, availability, reservation, profile, and favorite information from the signed-in account.]

## Skill Version(s):

1.3.3 (source: server-resolved release metadata)

## Ethical Considerations:

Users should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.
Github ReposUpdated 10h agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/chrischall/skills/opentable-fpx",
      "sourceUrl": "https://clawhub.ai/chrischall/skills/opentable-fpx",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T01:16:04.960Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-opentable-fpx/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-opentable-fpx/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-10T01:16:04.960Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "1.8K downloads",
      "href": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceUrl": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-10T01:16:04.960Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.3.3",
      "href": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceUrl": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:29:52.933Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-opentable-fpx/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-opentable-fpx/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.3.3",
      "description": "- Removed the file skill-card.md. - No other changes to code or documentation content.",
      "href": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceUrl": "https://clawhub.ai/chrischall/opentable-fpx",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-10-09T23:29:52.933Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 10, 2026.

Sponsored

Ads related to opentable-fpx and adjacent AI workflows.