agentCLAWHUBUnverified

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.

OpenClaw

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
  1. Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:easytable-fpx` in an isolated environment before connecting it to live workloads.
  2. No published capability contract is available yet, so validate auth and request/response behavior manually.
  3. 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.
Github ReposUpdated 19h 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/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.

Sponsored

Ads related to easytable-fpx and adjacent AI workflows.