easytable-fpx
Check restaurant availability and manage easyTable bookings (book.easytable.com/book/?id=<placeId>) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the easytable-mcp server — list booking areas/dates/times, look up a booking by phone, and cancel it, all one-shot through a signed-in browser tab. Use when you want easyTable access without the MCP, in a script, or on a machine where the MCP isn't installed.
Rank
62
Safety
84
Downloads
1.4k
Updated
Oct 10, 2026
Version
1.2.6
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.4K 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.4K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.2.6release · observed Oct 9, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:easytable-fpx- Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:easytable-fpx` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/chrischall/easytable-fpx before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-easytable-fpx/snapshot"
Documentation
CLAWHUB
136,514 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
--- name: easytable-fpx description: >- Check restaurant availability and manage easyTable bookings (book.easytable.com/book/?id=<placeId>) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the easytable-mcp server — list booking areas/dates/times, look up a booking by phone, and cancel it, all one-shot through a signed-in browser tab. Use when you want easyTable access without the MCP, in a script, or on a machine where the MCP isn't installed. --- # easyTable via fpx (no MCP) easyTable fronts every `book.easytable.com` endpoint — reads and writes alike — with a Cloudflare check that 403s any plain `curl`/Node request. `fpx` routes the request through the user's own signed-in browser tab (the ContextMint Bridge extension), which has already cleared the challenge, so the same requests succeed. There's no easyTable login: a restaurant is identified only by its `id` (a.k.a. `place`) from its widget URL `https://book.easytable.com/book/?id=<placeId>`. This is the same data/actions the `easytable_*` MCP tools use, reached with one-shot CLI calls instead of a running server. ## One-time setup ```sh npm install -g @fetchproxy/cli # provides `fpx` fpx profile add easytable --domain easytable.com fpx pair -p easytable # prints a pair code → approve in ContextMint Bridge ``` Requirements: the **ContextMint Bridge** extension installed (from https://github.com/nullnet-app/contextmint-bridge/releases — Chrome: load the chrome zip unpacked; Safari: ships inside the ContextMint app, no public download yet, so use Chrome for now — it is the renamed fetchproxy extension, same maintainer; source is public, so build it or verify the zip with its published `.sha256`), with an open `https://book.easytable.com/book/?id=<placeId>` tab left to finish loading (its Turnstile check solves itself), and Chrome **Site access** allowing `easytable.com`. Pairing persists after the first approval. ## Core call Reads are GET requests that return **HTML fragments** (not JSON) — the widget loads them into a container div. Send the `X-Requested-With` header the widget sends, and pipe the fragment to `grep`/`sed` rather than `jq`: ```sh fpx get 'https://book.easytable.com/book/ajax/types.asp?id=1fdfc&lang=en' \ -p easytable -H 'X-Requested-With: XMLHttpRequest' ``` Ready-to-run URLs + extraction recipes for every read, plus the cancel write and the create/modify payload shape, are in `references/easytable-requests.md`. Exhaustive parsing lives in the repo at `src/parse.ts` / `docs/EASYTABLE-API.md` — the recipes here are compact greps against the same markup those parsers target. ## The one rule: resolve the `type` first Dates and times are scoped to a booking area. Always list types first, take the `type` id, then feed it to dates/times: ```sh fpx get 'https://book.easytable.com/book/ajax/types.asp?id=1fdfc&lang=en' \ -p easytable -H 'X-Requested-With: XMLHttpRequest' \ | grep -oE '<a[^>]*type=[
_meta.json
{
"ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
"slug": "easytable-fpx",
"version": "1.2.6",
"publishedAt": 1791588272307
}references/easytable-requests.md
# easyTable requests for fpx
Ready-to-run URLs for `fpx get '<url>' -p easytable -H 'X-Requested-With: XMLHttpRequest'`
(reads) and `fpx post-json`/`fpx get` (writes). All paths/params/field shapes
are transcribed from `src/client.ts`, `src/parse.ts`, `src/payload.ts`, and
`docs/EASYTABLE-API.md` — the same shapes the `easytable_*` MCP tools use.
Host: `https://book.easytable.com`. Every URL below needs `id=<placeId>`
(a.k.a. `place`) and `lang=<code>` (`en`, `se`, `da`, … — defaults to `en`).
Replace `1fdfc` with a real restaurant id from a
`book.easytable.com/book/?id=<id>` link.
Reads answer **HTML fragments**, not JSON — extraction below is `grep -oE`
against the exact attributes `src/parse.ts` selects on. These are compact
greps, not a full parser; for anything beyond simple extraction, read
`src/parse.ts`.
---
## 1. List booking areas/types (resolve this first)
```sh
fpx get 'https://book.easytable.com/book/ajax/types.asp?id=1fdfc&lang=en' \
-p easytable -H 'X-Requested-With: XMLHttpRequest' \
| grep -oE '<a[^>]*type=[0-9]+[^>]*>[^<]*</a>'
# <a href="#type=13991">Boka Inne</a>
```
The numeric value after `type=` in the `href` is the `type` id every later
call needs.
## 2. List bookable dates
Needs `type` (from §1) and `qty` (party size).
```sh
fpx get 'https://book.easytable.com/book/ajax/calendar.asp?id=1fdfc&lang=en&type=13991&qty=2' \
-p easytable -H 'X-Requested-With: XMLHttpRequest' \
| grep -oE '<span[^>]*class="[^"]*day[^"]*"[^>]*data-date="[0-9-]+"[^>]*>'
```
A `class` containing `av` = available; `closed`/`ua` = not. `data-note`
(when present) carries a note.
## 3. List time slots
Needs `type`, a `date` (ISO `YYYY-MM-DD`, from §2), and `qty`. Slot values
are **minute-of-day** (1035 → 17:15 — `hh=floor(m/60)`, `mm=m%60`).
```sh
fpx get 'https://book.easytable.com/book/ajax/times.asp?id=1fdfc&lang=en&type=13991&date=2026-08-01&qty=2' \
-p easytable -H 'X-Requested-With: XMLHttpRequest' \
| grep -oE '<span[^>]*class="[^"]*time[^"]*"[^>]*data-time="[0-9]+"[^>]*>'
```
## 4. Find existing bookings by phone
```sh
fpx get 'https://book.easytable.com/book/ajax/cancel-search.asp?id=1fdfc&lang=en&mobile=%2B46701234567' \
-p easytable -H 'X-Requested-With: XMLHttpRequest' \
| grep -oE 'data-booking="[^"]+"|data-id="[^"]+"|data-mobile="[^"]+"'
```
URL-encode the mobile (`+` → `%2B`). The booking id is on
`data-booking`/`data-id` (`easytable-mcp` prefers `data-booking`, falling
back to `data-id` — never `value`, which can be a button label).
## 5. Cancel a booking (no Turnstile — plain tokenless GET)
```sh
fpx get 'https://book.easytable.com/user/ajax/json_cancel_booking.asp?place=1fdfc&mobile=%2B46701234567&booking=<bookingId>' \
-p easytable
```
The response is JSONP-wrapped (`callback([{Status,...}])`); unwrap and read
with:
```sh
sed -E 's/^[^(]*\(//; s/\);?[[:space:]]*$//' | jq '.[0] | {Status, errHtml, successHtml, confirmUrl}'
```
`Status: 1` = cancelled; `Status: 0` = rejected (see `errHtml`).
## skill-card.md
## Description: Guides agents through checking easyTable restaurant availability and managing reservations with shell commands routed through a paired browser tab. This skill is ready for commercial/non-commercial use. ## Publisher: [chrischall](https://clawhub.ai/user/chrischall) ### License/Terms of Use: MIT-0 ## Use Case: Developers and agents can check restaurant booking areas, dates, and times, find reservations by phone, and cancel authorized bookings from a shell. Creating or modifying a booking requires a manual browser step. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: Browser-session access to protected easyTable endpoints may expose reservation information. Mitigation: Review the external CLI and browser extension before pairing, and use only a browser session you are authorized to operate. Risk: Cancellation, creation, or modification can change a real restaurant booking. Mitigation: Confirm authorization and booking details before any write; do not send live writes merely to test the flow. ## Reference(s): - [easyTable request recipes](references/easytable-requests.md) - [ContextMint Bridge releases](https://github.com/nullnet-app/contextmint-bridge/releases) - [easytable-fpx release](https://clawhub.ai/chrischall/skills/easytable-fpx) ## Skill Output: **Output Type(s):** [Shell commands, Guidance, Configuration instructions] **Output Format:** [Markdown with shell commands and example booking payloads] **Output Parameters:** [1D] **Other Properties Related to Output:** [Create and modify flows require a manual browser step; booking writes can affect real reservations.] ## Skill Version(s): 1.2.6 (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.
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!
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
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
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/easytable-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/skills/easytable-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:55:10.704Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-easytable-fpx/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-easytable-fpx/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T11:55:10.704Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.4K downloads",
"href": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T11:55:10.704Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.2.6",
"href": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:24:32.307Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-easytable-fpx/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-easytable-fpx/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.2.6",
"description": "easytable-fpx 1.2.6 - Removed the sample skill-card.md file for a leaner package. - No changes to functionality or documented usage. - Documentation in SKILL.md remains unchanged.",
"href": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/easytable-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:24:32.307Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
