tock-fpx
Query Tock (exploretock.com — restaurant discovery, availability, and the signed-in user's reservations) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the tock-mcp server — list metros, search a metro's restaurants, get a venue's bookable calendar, and list reservations, all through a signed-in browser tab. Use when you want Tock data without the MCP, in a script, or on a machine where the MCP isn't installed.
Rank
62
Safety
84
Downloads
1.1k
Updated
Oct 11, 2026
Version
1.1.8
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/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 11, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 11, 2026
- Adoption signal
- 1.1K downloadsadoption · observed Oct 11, 2026
- Latest release
- 1.1.8release · observed Oct 9, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:tock-fpx- Install using `clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:tock-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/tock-fpx before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-tock-fpx/snapshot"
Documentation
CLAWHUB
146,995 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
---
name: tock-fpx
description: >-
Query Tock (exploretock.com — restaurant discovery, availability, and the
signed-in user's reservations) from a shell with the fpx CLI
(@fetchproxy/cli) instead of running the tock-mcp server — list metros,
search a metro's restaurants, get a venue's bookable calendar, and list
reservations, all through a signed-in browser tab. Use when you want Tock
data without the MCP, in a script, or on a machine where the MCP isn't
installed.
---
# Tock via fpx (no MCP)
`www.exploretock.com` sits behind a Cloudflare managed challenge — a plain
`curl`/Node request 403s every path (`cf-mitigated: challenge`, a "Just a
moment..." interstitial), including `/city` and `/{slug}`. There is no
server-side login form and no consumer token exchange. `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 fetch
succeeds. Browsing (metros, search, venue detail, availability) needs no Tock
login at all — just an open, challenge-cleared tab; only the reservations
list needs the tab **signed in**.
This is the same data the `tock_*` MCP tools return, reached with one-shot CLI
calls instead of a running server. It is **read-only** — see "Why no
booking/cancel" below.
## One-time setup
```sh
npm install -g @fetchproxy/cli # provides `fpx`
fpx profile add tock --domain exploretock.com
fpx pair -p tock # prints a pair code → approve in ContextMint Bridge
```
Requirements: the **ContextMint Bridge** browser extension installed (from
https://github.com/nullnet-app/contextmint-bridge/releases — Chrome: load the chrome zip
unpacked; Safari isn't available yet, so use Chrome for now), with an open
`www.exploretock.com` tab (signed in, for the reservations tool only), and its
Chrome **Site access** allowing `exploretock.com`. Pairing persists — after the
first approval every later `fpx` call reuses it. ContextMint Bridge is the fetchproxy extension under its new name, same maintainer; its source is public at https://github.com/nullnet-app/contextmint-bridge — build it yourself or check a release zip against its published `.sha256` file.
## Two call shapes
Tock has two different backends behind the same bridge:
1. **SSR pages** (`/city`, `/city/{slug}`, `/{slug}`, `/{slug}/search`) — an
ordinary GET returns full HTML with the entire dataset embedded as a JS
object-literal assignment: `window.$REDUX_STATE = {"app":{...},
"consumerPage":{...}, "calendar":{...}, ...}`. It is **not** JSON — absent
fields are the bare identifier `undefined`, so `jq` can't parse the raw
response. Use the bundled `references/extract-redux-slice.mjs` (a faithful
port of the MCP's own `src/redux-state.ts`) to pull one named slice out as
real JSON, then pipe that to `jq`:
```sh
fpx get 'https://www.exploretock.com/city' -p tock \
| node references/extract-redux-slice.mjs app \
_meta.json
{
"ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
"slug": "tock-fpx",
"version": "1.1.8",
"publishedAt": 1791588598854
}references/requests.md
# Tock requests for fpx
All paths are relative to `https://www.exploretock.com` (subdomain `www`).
Field names, slice keys, and the GraphQL document below are transcribed
verbatim from the tock-mcp repo (`docs/TOCK-API.md`, `src/parse.ts`,
`src/graphql-ops.ts`) — not guessed.
Every SSR-page recipe follows the same shape:
```sh
fpx get '<url>' -p tock | node extract-redux-slice.mjs <sliceKey> | jq '<filter>'
```
(`extract-redux-slice.mjs` lives alongside this file — see `SKILL.md` for why
it's needed instead of piping straight to `jq`.)
---
## 1. List metros — `GET /city`
Slice: `app`. The metro directory is the largest array whose items carry
`slug` + `name` + numeric `businessCount`. Many entries have
`businessCount: 0` (inactive) — filter those out for real venues.
```sh
fpx get 'https://www.exploretock.com/city' -p tock \
| node extract-redux-slice.mjs app \
| jq -r '
[.. | arrays | select(length > 0 and (.[0] | type == "object") and (.[0] | has("slug") and has("businessCount")))]
| max_by(length)[]
| select(.businessCount > 0)
| "\(.slug)\t\(.businessCount)\t\(.name)"
'
```
Fields per metro: `name`, `slug`, `state`, `country`, `businessCount`,
`isActive`, `isFeatured`, `timezone`, `currencyCode`, `lat`, `lng`, `id`.
## 2. Search a metro's restaurants — `GET /city/{slug}[?query=]`
Slice: `consumerPage`. Business listings are nested widget-tree arrays whose
items carry `domainName` + `name`; `?query=` filters server-side.
```sh
fpx get 'https://www.exploretock.com/city/chicago?query=tasting' -p tock \
| node extract-redux-slice.mjs consumerPage \
| jq -r '
[.. | arrays | select(length > 0 and (.[0] | type == "object") and (.[0] | has("domainName") and has("name")))]
| add
| unique_by(.domainName)[]
| "\(.domainName)\t\(.priceRange // "")\t\(.name) — \(.neighborhood // .city // "")"
'
```
Fields per business: `domainName` (→ the venue's own page slug),
`name`, `description`, `cuisines`, `priceRange` (e.g. `"$$$$"`),
`businessType`, `city`, `state`, `country`, `neighborhood`, `webUrl`,
`timeZone`, `currencyCode`, `locale`,
`location {address city state country zipCode lat lng id}`,
`profileImageUrl`, `heroImageUrl`, `isTockUnlisted`.
A bare `/search?query=X` redirects to a detected metro — always call with an
explicit metro slug instead.
## 3. Venue detail — `GET /{slug}`
Two slices in one fetch: `app` (the venue's own business record — the item
whose `domainName === slug`) and `calendar` (its bookable offerings).
```sh
fpx get 'https://www.exploretock.com/alinea' -p tock > /tmp/tock-venue.html
node extract-redux-slice.mjs app < /tmp/tock-venue.html > /tmp/tock-app.json
node extract-redux-slice.mjs calendar < /tmp/tock-venue.html > /tmp/tock-cal.json
jq -r '.. | objects | select(.domainName == "alinea") | "\(.name) — \(.cuisines) \(.priceRange)"' /tmp/tock-app.json
jq -r '.offerings.experience[] | "\(.id)\t\(.name)\t\(.pricePerPerson.minCents/100)-\(.pricePerPskill-card.md
## Description: Helps agents query Tock restaurants, availability, and a signed-in user's reservations through the fpx CLI and a paired browser tab without running an MCP server. 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 use this skill to find Tock metros and restaurants, inspect venue availability, and look up the signed-in user's reservations from a shell. It provides read-only lookups, not booking or cancellation. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: Reservation results can expose names, email addresses, and itinerary details. Mitigation: Treat reservation and account details as private; avoid shared temporary files and redact terminal output before sharing it. Risk: Browser extension pairing grants the CLI access to a Tock tab, including signed-in reservation data. Mitigation: Pair only a trusted fpx installation and browser extension, and use a signed-in tab only when retrieving reservations. ## Reference(s): - [ClawHub skill release](https://clawhub.ai/chrischall/skills/tock-fpx) - [Tock request examples](references/requests.md) - [Tock response extraction helper](references/extract-redux-slice.mjs) - [ContextMint Bridge source](https://github.com/nullnet-app/contextmint-bridge) - [ContextMint Bridge releases](https://github.com/nullnet-app/contextmint-bridge/releases) ## Skill Output: **Output Type(s):** [Shell commands, Guidance] **Output Format:** [Markdown with shell commands and JSON query examples] **Output Parameters:** [1D] **Other Properties Related to Output:** [Read-only; reservation lookups require a signed-in Tock tab.] ## Skill Version(s): 1.1.8 (source: ClawHub 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/tock-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/skills/tock-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T13:52:03.591Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-tock-fpx/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-tock-fpx/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-11T13:52:03.591Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.1K downloads",
"href": "https://clawhub.ai/chrischall/tock-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/tock-fpx",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-11T13:52:03.591Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.1.8",
"href": "https://clawhub.ai/chrischall/tock-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/tock-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:29:58.854Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-tock-fpx/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-tock-fpx/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.1.8",
"description": "- Removed the file skill-card.md. - No functional or user-facing changes; documentation and usage remain unchanged.",
"href": "https://clawhub.ai/chrischall/tock-fpx",
"sourceUrl": "https://clawhub.ai/chrischall/tock-fpx",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:29:58.854Z",
"isPublic": true
}
]
}Record generated Oct 11, 2026.
