groupon-mcp
Search and read Groupon deals from the terminal via curl — the consumer GraphQL API (deal search/browse, deal detail, category taxonomy). Anonymous, no key or login. Use when asked to find Groupon deals, look up a specific deal, or browse a city's offers. Skill: groupon-mcp Owner: chrischall Summary: Search and read Groupon deals from the terminal via curl — the consumer GraphQL API (deal search/browse, deal detail, category taxonomy). Anonymous, no key or login. Use when asked to find Groupon deals, look up a specific deal, or browse a city's offers. Tags: latest:1.1.6 Version history: v1.1.6 | 2026-10-09T23:25:52.079Z | auto - Removed the skill-card.md file. - No ch
Rank
62
Safety
84
Downloads
1.7k
Updated
Oct 10, 2026
Version
1.1.6
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.7K 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.7K downloadsadoption · observed Oct 10, 2026
- Latest release
- 1.1.6release · observed Oct 9, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:groupon-mcp- 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.
- 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-groupon-mcp/snapshot"
Documentation
CLAWHUB
86,777 characters of source documentation, loaded on request.
Extracted files
4 files captured from the source.
SKILL.md
---
name: groupon
description: Search and read Groupon deals from the terminal via curl — the consumer GraphQL API (deal search/browse, deal detail, category taxonomy). Anonymous, no key or login. Use when asked to find Groupon deals, look up a specific deal, or browse a city's offers.
---
# Groupon deals via curl
Groupon's consumer deal data comes from **one GraphQL endpoint** that answers a
plain server-side `curl` with **no cookies, no key, no login, no bot wall**:
```
POST https://www.groupon.com/mobilenextapi/graphql
-H 'content-type: application/json'
-H 'apollographql-client-name: mobilenextapi'
```
Requests are a **batched JSON array** of Apollo **persisted-query** operations
(`operationName` + `variables` + `extensions.persistedQuery.sha256Hash`, no query
text — introspection is off and the server masks GraphQL errors as opaque 400
HTML, so you cannot hand-author queries). The response is a **JSON array**;
`.[0].data.<field>` holds the payload. Ready-to-run bodies + `jq` recipes are in
[`references/graphql-queries.md`](references/graphql-queries.md).
## The three operations
| Need | Op | Root field |
|------|----|-----------|
| Search / browse a city's deals | `BrowseDealFeed` | `.[0].data.browseDealFeed.cards` |
| One deal's full detail (options, price, reviews, fine print) | `getDeal` | `.[0].data.getDeal` |
| Category taxonomy | `GetMainNavigation` | `.[0].data...` |
`division` is a Groupon **city slug** (`new-york`, `chicago`, `syracuse`, `los-angeles`, …).
`dealId` for `getDeal` is a deal's **permalink slug** = the last path segment of a
card's `.url` (`https://www.groupon.com/deals/<dealId>`).
## Two failure modes
- **Empty / non-JSON 2xx** → almost always a challenge interstitial; retry, don't `JSON.parse` it blind.
- **`{"errors":[{"message":"PersistedQueryNotFound"}]}`** → the baked `sha256Hash`
went stale (Groupon redeployed its frontend queries). **Re-capture it:**
1. Open a Groupon search page in a signed-in-or-not browser, DevTools → Network.
2. Filter for `mobilenextapi/graphql`, click the request whose payload `operationName`
matches the one you need.
3. Copy `extensions.persistedQuery.sha256Hash` from the request payload and replace
the stale hash in `references/graphql-queries.md`. (The hash is a public query
fingerprint, not a secret.)
Note: the deal **web page** `groupon.com/deals/<slug>` returns 403 to servers, but
the `getDeal` GraphQL op above returns the same detail with no auth._meta.json
{
"ownerId": "kn700jq4sjtf2anb0rk3ft4p7n856872",
"slug": "groupon-mcp",
"version": "1.1.6",
"publishedAt": 1791588352079
}references/graphql-queries.md
# Groupon curl recipes
All hit `POST https://www.groupon.com/mobilenextapi/graphql` with headers
`content-type: application/json` and `apollographql-client-name: mobilenextapi`.
The `sha256Hash` values are public persisted-query fingerprints (verified
2026-07-24); if one returns `PersistedQueryNotFound`, re-capture it (see SKILL.md).
A reusable shell function:
```bash
gp() { # gp '<json-array-body>' -> raw JSON array on stdout
curl -s -H 'content-type: application/json' \
-H 'apollographql-client-name: mobilenextapi' \
-X POST --data "$1" \
'https://www.groupon.com/mobilenextapi/graphql'
}
```
## 1. Search / browse deals — `BrowseDealFeed`
Hash: `b035b25dceb8a84a64c618345cc21a14897b7328506a39b2e27fc7ca4ec2f429`
```bash
# Search "massage" in New York (drop the filters[] entry for a plain city browse)
grpn '[{"operationName":"BrowseDealFeed","variables":{
"dealFeedParams":{"limit":24,"division":"new-york","locationFromUrl":false,
"filters":[{"key":"query","subKey":null,"value":{"static":"massage"}}],
"offset":0,"feedToken":null,"includeLocationsCount":true},
"browseParams":{"pathName":"/search","isFetchMore":false},"allLocations":false},
"extensions":{"persistedQuery":{"version":1,
"sha256Hash":"b035b25dceb8a84a64c618345cc21a14897b7328506a39b2e27fc7ca4ec2f429"}}}]' \
| jq -r '.[0].data.browseDealFeed.cards[]
| "\(.title)\n \(.merchant.name // "-") ★\(.rating.value // "-") (\(.rating.count // 0)) -\(.discountPercentage // 0)%\n $\((.prices.price.amount // 0)/100) \(.url)\n"'
```
- Paginate with `offset` (multiples of `limit`); total via `.[0].data.browseDealFeed.pagination`.
- Available filters (categories, price, sort) are in `.[0].data.browseDealFeed.facets`.
- Price is integer cents: `.prices.price.amount` (e.g. 3700 = $37.00); `.prices.strikeThroughPrice.amount` is the list price.
## 2. Deal detail — `getDeal`
Hash: `d60360371251da4c5ce1f753d3e55a77e80d538c6c57fd4fc20dc894cd121236`
```bash
# dealId = last path segment of a card .url (e.g. from https://www.groupon.com/deals/pat-s-pizza-1)
grpn '[{"operationName":"getDeal","variables":{
"dealId":"pat-s-pizza-1","optionId":null,"adSafe":false,
"includeGeoBreadcrumbs":true,"useFinePrintV3":true},
"extensions":{"persistedQuery":{"version":1,
"sha256Hash":"d60360371251da4c5ce1f753d3e55a77e80d538c6c57fd4fc20dc894cd121236"}}}]' \
| jq '.[0].data.getDeal | {title, subtitle, merchant: .merchant.name, division,
rating: .representativeReview, options: [.options[]? | {title, id, price: .price}]}'
```
`getDeal` also carries `aiReviewSummary`, `images`, `videos`, `status`,
`showQuantitySelector`, fine print, and per-option pricing.
## 3. Category taxonomy — `GetMainNavigation`
Hash: `da722d6e5ae1b4e336bbda8d2d07f31925aa709acf9843c67c5a65d0827aeb01`
```bash
grpn '[{"operationName":"GetMainNavigation","variables":{"includeChildren":true,"maxDepthLevel":3},
"extensions":{"persistedQuery":{"version":1,
"sha256Hash":"da722d6e5ae1skill-card.md
## Description: Helps agents search Groupon deals, inspect deal details, and browse categories using public, read-only deal data. 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 agents looking for Groupon offers can search by city or keyword, inspect a deal's pricing and fine print, and browse categories without signing in. ### Deployment Geography for Use: Global ## Known Risks and Mitigations: Risk: Groupon receives the searches, city slugs, and deal IDs submitted for lookup. Mitigation: Share only lookup inputs you are comfortable sending to Groupon. Risk: Refreshing an expired query fingerprint from a browser request could expose account or session data if the entire request is copied. Mitigation: Copy only the public sha256Hash value, not cookies, authorization headers, or personal account data. ## Reference(s): - [Groupon query recipes](references/graphql-queries.md) - [ClawHub skill release](https://clawhub.ai/chrischall/skills/groupon-mcp) ## Skill Output: **Output Type(s):** [Text, Markdown, Shell commands, Guidance] **Output Format:** [Markdown with deal details and optional shell commands] **Output Parameters:** [1D] **Other Properties Related to Output:** [Read-only deal lookups; no purchases or account access.] ## Skill Version(s): 1.1.6 (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/groupon-mcp",
"sourceUrl": "https://clawhub.ai/chrischall/skills/groupon-mcp",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T03:17:56.546Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-groupon-mcp/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-groupon-mcp/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T03:17:56.546Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.7K downloads",
"href": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceUrl": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T03:17:56.546Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.1.6",
"href": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceUrl": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:25:52.079Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-groupon-mcp/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-chrischall-groupon-mcp/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.1.6",
"description": "- Removed the skill-card.md file. - No changes to core functionality or documentation.",
"href": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceUrl": "https://clawhub.ai/chrischall/groupon-mcp",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-09T23:25:52.079Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
