{"id":"dcadde70-68c6-48e1-aacd-c3663b3fb706","entityType":"agent","slug":"clawhub-chrischall-onthecheap-mcp","name":"onthecheap-mcp","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chrischall-onthecheap-mcp","canonicalPath":"/agent/clawhub-chrischall-onthecheap-mcp","generatedAt":"2026-10-10T14:47:03.257Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":null},"description":"Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities. Skill: onthecheap-mcp Owner: chrischall Summary: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:onthecheap-mcp","sourceUrl":"https://clawhub.ai/chrischall/onthecheap-mcp","homepage":"https://clawhub.ai/chrischall/skills/onthecheap-mcp","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chrischall/onthecheap-mcp","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chrischall/skills/onthecheap-mcp","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local "},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":null},"stars":null,"forks":null,"downloads":1442,"packageName":null,"latestVersion":"1.1.7","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T12:09:05.952Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T12:09:05.953Z","lastCrawledAt":"2026-10-10T12:09:05.952Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T12:09:05.952Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.7","createdAt":"2026-10-09T23:28:32.856Z","changelog":"- Removed the skill-card.md file. - No changes to core functionality or user-facing features.","fileCount":3,"zipByteSize":4612},{"version":"1.1.6","createdAt":"2026-10-07T13:35:26.668Z","changelog":"- Removed the file skill-card.md. - No functional changes to skill logic or user-facing behavior. - Documentation and usage remain as before.","fileCount":3,"zipByteSize":4705},{"version":"1.1.5","createdAt":"2026-10-05T02:55:07.247Z","changelog":"Version 1.1.5 - Removed the file skill-card.md. - No changes to functionality or user experience in this release.","fileCount":3,"zipByteSize":4597},{"version":"1.1.4","createdAt":"2026-10-03T01:43:12.916Z","changelog":"### Changelog for onthecheap-mcp v1.1.4 - Removed the skill card file (`skill-card.md`). No other functional or documentation changes.","fileCount":3,"zipByteSize":4706},{"version":"1.1.3","createdAt":"2026-09-25T15:55:39.921Z","changelog":"- Removed the skill-card.md file. - No changes to functionality or user-facing features.","fileCount":3,"zipByteSize":4713},{"version":"1.1.2","createdAt":"2026-09-23T21:38:46.859Z","changelog":"- Removed the skill-card.md file. - No changes to skill functionality or user-facing features.","fileCount":3,"zipByteSize":4688},{"version":"1.1.1","createdAt":"2026-09-23T15:40:03.457Z","changelog":"- Removed the file skill-card.md. - No feature or functional changes; this update is a minor maintenance release.","fileCount":3,"zipByteSize":4894},{"version":"1.1.0","createdAt":"2026-09-20T02:52:02.138Z","changelog":"Version 1.1.0 - Removed the skill-card.md file. - No changes to core functionality or user-facing features.","fileCount":3,"zipByteSize":4814}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17cjx1a349nz5apaqp02vgz4h85728z:onthecheap-mcp","setupComplexity":"low","setupSteps":["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":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T14:47:03.253Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chrischall-onthecheap-mcp/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":null},"readme":"Skill: onthecheap-mcp\n\nOwner: chrischall\n\nSummary: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n\nTags: latest:1.1.7\n\nVersion history:\n\nv1.1.7 | 2026-10-09T23:28:32.856Z | auto\n\n- Removed the skill-card.md file.\n- No changes to core functionality or user-facing features.\n\nv1.1.6 | 2026-10-07T13:35:26.668Z | auto\n\n- Removed the file skill-card.md.\n- No functional changes to skill logic or user-facing behavior.\n- Documentation and usage remain as before.\n\nv1.1.5 | 2026-10-05T02:55:07.247Z | auto\n\nVersion 1.1.5\n\n- Removed the file skill-card.md.\n- No changes to functionality or user experience in this release.\n\nv1.1.4 | 2026-10-03T01:43:12.916Z | auto\n\n### Changelog for onthecheap-mcp v1.1.4\n\n- Removed the skill card file (`skill-card.md`). No other functional or documentation changes.\n\nv1.1.3 | 2026-09-25T15:55:39.921Z | auto\n\n- Removed the skill-card.md file.\n- No changes to functionality or user-facing features.\n\nv1.1.2 | 2026-09-23T21:38:46.859Z | auto\n\n- Removed the skill-card.md file.\n- No changes to skill functionality or user-facing features.\n\nv1.1.1 | 2026-09-23T15:40:03.457Z | auto\n\n- Removed the file skill-card.md.\n- No feature or functional changes; this update is a minor maintenance release.\n\nv1.1.0 | 2026-09-20T02:52:02.138Z | auto\n\nVersion 1.1.0\n\n- Removed the skill-card.md file.\n- No changes to core functionality or user-facing features.\n\nv1.0.0 | 2026-09-19T11:18:49.823Z | auto\n\nVersion 1.0.0\n\n- Initial release of the skill.\n- Provides up-to-date free and cheap event listings and deals in 14+ US cities from the On the Cheap network.\n- Includes search by date, category, location, and more, plus city discovery features.\n- All tools operate in read-only mode; no credentials required.\n- Removed the skill-card.md file.\n\nv0.4.3 | 2026-09-14T14:14:36.243Z | auto\n\n- Removed the file skill-card.md.\n- No other user-facing changes.\n\nv0.4.2 | 2026-09-10T17:52:21.335Z | auto\n\n- Removed the skill documentation file skill-card.md.\n- No functional or API changes; documentation and behavior remain unchanged.\n\nv0.4.1 | 2026-09-05T00:56:36.549Z | auto\n\nVersion 0.4.1\n\n- Added documentation for the new optional view parameter (`view: \"compact\" | \"full\"`) to `otc_search_posts`, including details on payload differences and practical implications.\n- Explained why only `otc_search_posts` takes a `view` argument and clarified default behaviors.\n- Removed outdated or redundant documentation (`skill-card.md`).\n\nv0.4.0 | 2026-09-04T22:23:33.545Z | auto\n\n- Removed the file skill-card.md.\n- No user-facing or functional changes; documentation and behavior remain the same.\n\nv0.3.3 | 2026-08-09T21:02:48.560Z | auto\n\nVersion 0.3.3\n\n- Removed the skill-card.md file.\n- No functional changes to code or documentation content.\n\nv0.3.2 | 2026-07-27T21:15:57.201Z | auto\n\n- Removed the unnecessary skill-card.md file for a leaner package.\n- No user-facing features or functionality changed.\n\nv0.3.1 | 2026-07-27T03:00:02.070Z | auto\n\n- Removed the file skill-card.md.\n- No changes to core functionality or documentation.\n\nv0.3.0 | 2026-07-20T15:31:44.508Z | auto\n\n**Multi-city support added; now requires a site key for each query.**\n\n- All tools except `otc_list_sites` now require a `site` argument; there is no default city.\n- Easily compare or gather results from multiple cities in one go.\n- Category and location filters are now strictly per city.\n- Improved guidance and documentation throughout; obsolete skill-card.md removed.\n- National site clarified: only deal searches, not event listings.\n\nv0.2.0 | 2026-07-20T04:38:19.610Z | auto\n\n- Added detailed SKILL.md documentation with usage guidance and tool descriptions\n- Clarified city configuration limits and site selection workflow\n- Explained correct handling of monthly event previews versus daily event lists\n- Provided examples for querying events, searching by topic, and filtering\n- Noted hidden expired deals and how to surface them when requested\n- Outlined expected date formats and error handling for invalid dates\n\nArchive index:\n\nArchive v1.1.7: 3 files, 4612 bytes\n\nFiles: skill-card.md (1664b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.7:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.7:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.7\",\n  \"publishedAt\": 1791588512856\n}\n\nFile v1.1.7:skill-card.md\n\n## Description:\n\nFinds free and inexpensive events, deals, and local guides in supported US cities through the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople seeking affordable local activities use this skill to find events, family outings, festivals, and deals by city and date.\n\n### Deployment Geography for Use:\n\nUnited States (supported On the Cheap network locations)\n\n## Known Risks and Mitigations:\n\nRisk: A city mismatch or cross-city filter can return irrelevant listings.\n\nMitigation: Confirm the requested city and use category or location filters from that same site.\n\nRisk: Monthly event previews are incomplete, and past deals may no longer be valid.\n\nMitigation: Check daily listings for complete schedules and verify availability before recommending a deal.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Event and deal summaries may include dates, times, prices, venues, and source links.]\n\n## Skill Version(s):\n\n1.1.7 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.6: 3 files, 4705 bytes\n\nFiles: skill-card.md (1936b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.6:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.6:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.6\",\n  \"publishedAt\": 1791380126668\n}\n\nFile v1.1.6:skill-card.md\n\n## Description:\n\nFinds free and inexpensive events, deals, and local guides for supported US cities through the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople looking for affordable activities use this skill to find local events by date, compare nearby options, and search deals and family activities in supported US cities.\n\n### Deployment Geography for Use:\n\nUnited States (supported On the Cheap cities and national deals)\n\n## Known Risks and Mitigations:\n\nRisk: Queries contact the On the Cheap network for city listings.\n\nMitigation: Share only the city and filters needed for the request; do not include sensitive information in searches.\n\nRisk: Full article options can return upstream HTML.\n\nMitigation: Use compact or plain-text results by default and treat article content as untrusted source material.\n\nRisk: Monthly event overviews show previews, not complete daily schedules.\n\nMitigation: Use the daily event listing before presenting a complete schedule.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [On the Cheap skill on ClawHub](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Guidance]\n\n**Output Format:** [Markdown summaries of events, deals, and articles]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Listings can include dates, times, prices, venues, and source links; full article content or HTML is available on request.]\n\n## Skill Version(s):\n\n1.1.6 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.5: 3 files, 4597 bytes\n\nFiles: skill-card.md (1652b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.5:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.5:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.5\",\n  \"publishedAt\": 1791168907247\n}\n\nFile v1.1.5:skill-card.md\n\n## Description:\n\nFind free and low-cost events, deals, and local activities in supported US cities using On the Cheap listings.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople and their agents use this skill to find affordable events, family activities, festivals, and deals in supported US cities or compare options across cities.\n\n### Deployment Geography for Use:\n\nUnited States (supported cities and national deals)\n\n## Known Risks and Mitigations:\n\nRisk: Event dates, prices, and deal availability may change after publication.\n\nMitigation: Verify details on the linked listing before making plans.\n\nRisk: Monthly event overviews show only a preview of each day's listings.\n\nMitigation: Use daily listings when a complete schedule is needed and avoid presenting previews as exhaustive.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [onthecheap-mcp on ClawHub](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Summaries may include event times, prices, venues, dates, and source links.]\n\n## Skill Version(s):\n\n1.1.5 (source: server-resolved release)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.4: 3 files, 4706 bytes\n\nFiles: skill-card.md (1943b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.4:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.4:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.4\",\n  \"publishedAt\": 1790991792916\n}\n\nFile v1.1.4:skill-card.md\n\n## Description:\n\nHelps find free and inexpensive events, deals, festivals, family activities, and local guides in supported US cities through the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople seeking affordable activities can ask an agent for local events, prices, venues, and deals in supported US cities, or compare options across cities.\n\n### Deployment Geography for Use:\n\nUnited States (supported On the Cheap cities)\n\n## Known Risks and Mitigations:\n\nRisk: Looking up events and deals can make web requests to the On the Cheap network.\n\nMitigation: Use the lookup only for public information and avoid including private information in queries.\n\nRisk: Full article views can return raw HTML and larger amounts of content.\n\nMitigation: Prefer concise results and request full articles or HTML only when needed.\n\nRisk: Monthly event overviews are previews, and expired deals can appear when specifically included.\n\nMitigation: Check daily listings for completeness and clearly identify expired offers.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [onthecheap-mcp ClawHub release](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown or plain text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Event listings may include dates, times, prices and venues; article details may include HTML when requested.]\n\n## Skill Version(s):\n\n1.1.4 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.3: 3 files, 4713 bytes\n\nFiles: skill-card.md (1886b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.3:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.3:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.3\",\n  \"publishedAt\": 1790351739921\n}\n\nFile v1.1.3:skill-card.md\n\n## Description:\n\nFind free and inexpensive events, activities, and deals in supported US cities using the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople looking for affordable activities and agents assisting them can find dated local event listings, browse deals, and search guides for supported US cities.\n\n### Deployment Geography for Use:\n\nGlobal (US local event coverage)\n\n## Known Risks and Mitigations:\n\nRisk: Events and deals may change or expire.\n\nMitigation: Check event dates and source links before recommending attendance or a purchase; identify expired offers when included.\n\nRisk: Full articles may contain untrusted HTML from public sites.\n\nMitigation: Use the default plain-text article view unless HTML is necessary, and treat article content as untrusted source material.\n\nRisk: A city or filter ID from another site may return irrelevant results.\n\nMitigation: Confirm the city and discover category or location IDs separately for each site.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [On the Cheap skill release](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown with event details and source links]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only lookups; articles may include HTML when explicitly requested.]\n\n## Skill Version(s):\n\n1.1.3 (source: server-resolved release metadata)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.2: 3 files, 4688 bytes\n\nFiles: skill-card.md (1912b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.2:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.2:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.2\",\n  \"publishedAt\": 1790199526859\n}\n\nFile v1.1.2:skill-card.md\n\n## Description:\n\nFind free and cheap things to do in a US city, including daily event listings with times, prices, venues, searchable deals, festivals, kids activities, and local guides from the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use this skill to find free or low-cost local events, deals, festivals, family activities, and article details for supported US city sites in the On the Cheap network.\n\n### Deployment Geography for Use:\n\nUnited States\n\n## Known Risks and Mitigations:\n\nRisk: Results come from public event and deal listings that may change, expire, or be incomplete.\n\nMitigation: Show dates, prices, venues, and source links so users can verify details before attending an event or relying on an offer.\n\nRisk: Full post retrieval may fetch upstream article HTML when explicitly requested.\n\nMitigation: Prefer compact search results for browsing and request full post content only when the article body is needed.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, guidance]\n\n**Output Format:** [Markdown or plain text summaries of events, deals, venues, prices, dates, and source links.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only results from public On the Cheap network content; compact search results omit full article bodies unless full post content is requested.]\n\n## Skill Version(s):\n\n1.1.2 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.1: 3 files, 4894 bytes\n\nFiles: skill-card.md (2319b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.1:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.1:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.1\",\n  \"publishedAt\": 1790178003457\n}\n\nFile v1.1.1:skill-card.md\n\n## Description:\n\nFind free and cheap things to do in a US city, including daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use this skill to find local low-cost events, deals, festivals, kids activities, and local guides across supported US city sites. It helps answer time-sensitive questions about what is happening locally while preserving city selection and listing context.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Public event and deal listings can be stale, incomplete, or changed by the venue after retrieval.\n\nMitigation: Ask users to verify event details, prices, availability, and venue rules against the linked source before making plans or purchases.\n\nRisk: Monthly event overviews are previews and may be mistaken for complete daily schedules.\n\nMitigation: Use the overview totals for volume and call the date-level event listing before presenting a complete schedule for a specific day.\n\nRisk: Expired deals can appear when a user explicitly requests historical or expired results.\n\nMitigation: Clearly label expired offers and avoid presenting them as currently available.\n\n## Reference(s):\n\n- [On the Cheap Network](https://livingonthecheap.com)\n- [ClawHub Skill Page](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n- [Publisher Profile](https://clawhub.ai/user/chrischall)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, API Calls, Guidance]\n\n**Output Format:** [Markdown or concise text with event, deal, venue, price, date, and source details]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only; no credentials, persistence, or destructive behavior indicated by the security evidence.]\n\n## Skill Version(s):\n\n1.1.1 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.1.0: 3 files, 4814 bytes\n\nFiles: skill-card.md (2202b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1789872722138\n}\n\nFile v1.1.0:skill-card.md\n\n## Description:\n\nFind free and cheap things to do in a US city, including daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use this skill to find free or low-cost local events, deals, festivals, family activities and local guides across supported US city sites. It is suited for answering local activity planning questions, comparing nearby options, and retrieving article details from the On the Cheap network.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Event details, prices, venue information and deal availability come from third-party content and may be outdated.\n\nMitigation: Summarize results with dates, prices and source URLs, and tell users to verify time-sensitive details before acting.\n\nRisk: Full article HTML can contain markup or text that should not be treated as agent instructions.\n\nMitigation: Handle article HTML as untrusted content to summarize or cite, not as instructions to execute.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n- [ClawHub publisher profile](https://clawhub.ai/user/chrischall)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, API Calls, Guidance]\n\n**Output Format:** [Markdown or structured text summarizing event listings, deals, article results and tool-use guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only outputs may include third-party event details, prices, venues, dates, article excerpts, URLs and optional article body content.]\n\n## Skill Version(s):\n\n1.1.0 (source: server release evidence)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v1.0.0: 3 files, 4769 bytes\n\nFiles: skill-card.md (2113b), SKILL.md (6885b), _meta.json (133b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1789816729823\n}\n\nFile v1.0.0:skill-card.md\n\n## Description:\n\nFind free and cheap things to do in a US city, including daily event listings with times, prices and venues, searchable deals, festivals, kids activities, and local guides from the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and agents use this skill to find public free or low-cost local events, deals, festivals, family activities, and local guides across supported US city sites.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Public event and deal listings can be outdated, expired, or incorrect.\n\nMitigation: Check dates, prices, venues, and offer status against the source listing before acting on results.\n\nRisk: A city, category, or location filter can point to the wrong local site if chosen loosely.\n\nMitigation: Confirm the requested city and resolve category or location identifiers for that same site before filtering.\n\nRisk: Monthly event overviews are previews rather than complete daily schedules.\n\nMitigation: Use full daily event listings for dates where completeness matters.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown or plain text responses with event and deal listings, dates, prices, venues, and source links when available]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Read-only local event and deal lookup; no credentials are required. Dates, prices, venues, and offer status should be checked before acting.]\n\n## Skill Version(s):\n\n1.0.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers 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.\n\nArchive v0.4.3: 3 files, 4854 bytes\n\nFiles: skill-card.md (2271b), SKILL.md (6885b), _meta.json (133b)\n\nFile v0.4.3:SKILL.md\n\n---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first if you need to filter — against the\nsame `site` — then `otc_search_posts`.\n\n## Response shape (`view`)\n\n`otc_search_posts` takes `view: \"compact\" | \"full\"`, and **`compact` is the\ndefault** — you get the slim shape without asking. It is the only tool here\nthat takes one; the other seven are covered at the end of this section.\n\nCompact projects each result down to the fields a caller ranks or browses on:\n`id`, `slug`, `date` (the day, not the timestamp), `url`, `title`, `excerpt`\n(plain text, capped at 280 characters), `image`, `categories`, `locations`, and\n`expired`. What it drops is the rendered `content` body — roughly 20 KB of HTML\nper post, on a page of up to 100 of them. Compact also narrows the WordPress\n`_fields` query parameter to that same list, so the cheap rung is cheap **on\nthe wire** and not merely in the response; `view: \"full\"` is a bigger request,\nnot just a bigger answer.\n\n**Two things about the rungs that will surprise you if you don't know them:**\n\n- **`expired` exists only on compact.** Retired deals are not deleted, they are\n  recategorised — so telling a dead offer from a live one means knowing the\n  site's `expired` category id, and that id differs on every install in the\n  network (2, 3, 4, 379, … 16289). Compact resolves it per site and hands you\n  the boolean. `full` gives you `categories` as bare numeric ids and no way to\n  read them without a second lookup.\n- **`full` is untouched WordPress, entities and all.** Titles and excerpts come\n  back HTML-encoded (`Bashes &#8212; free supplies`) and `content.rendered` is\n  raw markup, because the entity decoding and the HTML-to-text pass live in the\n  projection. Full costs you legibility as well as bytes; reach for it when you\n  need a field compact dropped, not as a general \"give me everything\".\n\nThere is deliberately **no `raw` rung**: `full` already returns the upstream\nrecords unprojected, so a third value would silently alias one that exists.\n\nThe seven tools with no `view` each have a reason, and none of them is an\noversight:\n\n- **`otc_get_post`** — its product *is* the article body. A projection would\n  delete the thing you called it for. Its size knob is `format` instead:\n  readable plain text by default, `\"html\"` for the original markup.\n- **`otc_list_events`, `otc_events_month_overview`** — the events calendar is\n  not JSON. It is scraped out of server-rendered HTML into a six-field listing\n  (`title`, `url`, `time`, `price`, `venue`, `is_free`), so there is no fat\n  upstream payload to project away.\n- **`otc_list_categories`, `otc_list_locations`** — WordPress terms, four\n  fields apiece (`id`, `name`, `slug`, `count`). The ids are what you came for.\n- **`otc_list_sites`** — a fixed table of the network, shipped in the server.\n- **`otc_healthcheck`** — a connectivity verdict.\n\n## Two behaviours to get right\n\n**Month overviews are previews.** The calendar renders at most four listings\nper day. In `otc_events_month_overview`, each day's `events` is a *preview*\nwhile `total` is the day's real count — for one August that was 124 previewed\nagainst 510 actual. Use `total` when telling the user how much is on, and call\n`otc_list_events` for a date to get that day's full schedule. Never present the\npreview as the complete list.\n\n**Expired deals are hidden by default.** Retired offers are parked in an\n`expired` category and excluded from searches, so results reflect things still\navailable. Only pass `include_expired: true` when the user is explicitly\nresearching past deals or history — and say so when those results are shown,\nsince the offers no longer stand.\n\n## Dates\n\nPass dates as ISO `YYYY-MM-DD` (and months as `YYYY-MM`). The tools convert to\nwhatever the site expects and reject a malformed date rather than guessing.\nResolve relative dates (\"this Saturday\") against today before calling.\n\nFile v0.4.3:_meta.json\n\n{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"0.4.3\",\n  \"publishedAt\": 1789395276243\n}\n\nFile v0.4.3:skill-card.md\n\n## Description:\n\nFind free and cheap things to do in a US city - daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and assistants use this skill to find free or low-cost events, local guides, and deals for supported US cities, including date-based event listings and topic searches.\n\n### Deployment Geography for Use:\n\nUnited States\n\n## Known Risks and Mitigations:\n\nRisk: Full article mode can return raw WordPress HTML that is harder for users to read and may include upstream markup.\n\nMitigation: Prefer compact search results and plain-text article output unless raw HTML is specifically needed.\n\nRisk: Month overview results are previews and may omit listings for busy days.\n\nMitigation: Use daily event listings before presenting a specific date as complete.\n\nRisk: Category and location IDs are site-specific, so reusing an ID across cities can filter unrelated content.\n\nMitigation: Resolve category and location IDs for the selected site before applying filters.\n\nRisk: Expired deals are hidden by default and may appear only when explicitly requested.\n\nMitigation: State clearly when expired results are included and avoid presenting them as current offers.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [ClawHub skill page](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, text]\n\n**Output Format:** [Markdown or plain text with event titles, times, prices, venues, links, and article summaries.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May include WordPress HTML only when full article HTML output is explicitly requested.]\n\n## Skill Version(s):\n\n0.4.3 (source: evidence.json release.version)\n\n## Ethical Considerations:\n\nUsers 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.","readmeExcerpt":"Skill: onthecheap-mcp Owner: chrischall Summary: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: onthecheap-mcp\ndescription: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities.\n---\n\n# On the Cheap\n\nReads the [On the Cheap](https://livingonthecheap.com) network — local guides to\nfree and cheap things to do across ~14 US cities. Everything is read-only and\nneeds no credentials.\n\n## Always name the city\n\n**Every tool except `otc_list_sites` takes a required `site` argument, and there\nis no default.** Pick the key that matches the city the user means; if you're not\nsure one exists, call `otc_list_sites` first. Common aliases work (`milehigh`,\n`raleigh`, `rva`, `kc`, `southflorida`).\n\nAn unknown key is refused with the valid ones listed, so you'll never silently\nread the wrong city — but do check that the key you picked is the city the user\nactually asked about. Every result echoes back `site` and `site_name`.\n\nBecause the whole network is reachable, you can answer across cities in one go —\ncomparing a weekend in Denver and Portland is just two calls.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so an id from `otc_list_categories` is only meaningful against that\nsame `site`. Reusing one across cities filters to something unrelated rather\nthan erroring.\n\nThe `national` site (Living On The Cheap) covers US-wide deals and has **no\nlocal events calendar**. The event tools reject it with an explanatory error;\nuse `otc_search_posts` with `site: \"national\"` for national deals.\n\n## Picking the right tool\n\n- **What's on for a date** → `otc_list_events` with an ISO `date`\n  (defaults to today). Each listing has its time, price and venue. Add\n  `free_only: true` for no-cost listings only.\n- **Scan or compare a whole month** → `otc_events_month_overview`.\n- **Find articles by topic, place or text** → `otc_search_posts`\n  (`query`, `category`, `location`, `after`/`before`, `view?`).\n- **Read one article in full** → `otc_get_post` with an id, slug, or URL.\n- **Discover filter ids** → `otc_list_categories`, `otc_list_locations`.\n- **Find which cities exist** → `otc_list_sites` (the only tool with no `site`).\n\n## Typical flow\n\nPass `site` on every one of these calls.\n\nFor \"what's free this weekend?\", call `otc_list_events` once per date with\n`free_only: true` — the events calendar is per-day, so a weekend is two calls\n(three over a long weekend). Give the user the title, time and venue, and offer\n`otc_get_post` on anything they want details for.\n\nFor a topic (\"free museum days\", \"kids stuff in Lake Norman\"), search instead:\nresolve the category or location id first"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn700jq4sjtf2anb0rk3ft4p7n856872\",\n  \"slug\": \"onthecheap-mcp\",\n  \"version\": \"1.1.7\",\n  \"publishedAt\": 1791588512856\n}"},{"path":"skill-card.md","content":"## Description:\n\nFinds free and inexpensive events, deals, and local guides in supported US cities through the On the Cheap network.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chrischall](https://clawhub.ai/user/chrischall)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nPeople seeking affordable local activities use this skill to find events, family outings, festivals, and deals by city and date.\n\n### Deployment Geography for Use:\n\nUnited States (supported On the Cheap network locations)\n\n## Known Risks and Mitigations:\n\nRisk: A city mismatch or cross-city filter can return irrelevant listings.\n\nMitigation: Confirm the requested city and use category or location filters from that same site.\n\nRisk: Monthly event previews are incomplete, and past deals may no longer be valid.\n\nMitigation: Check daily listings for complete schedules and verify availability before recommending a deal.\n\n## Reference(s):\n\n- [On the Cheap network](https://livingonthecheap.com)\n- [ClawHub skill listing](https://clawhub.ai/chrischall/skills/onthecheap-mcp)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Guidance]\n\n**Output Format:** [Markdown]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Event and deal summaries may include dates, times, prices, venues, and source links.]\n\n## Skill Version(s):\n\n1.1.7 (source: ClawHub release metadata)\n\n## Ethical Considerations:\n\nUsers 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."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's happening locally, wants free or cheap things to do on a date or weekend, or asks about local deals, festivals, or family activities. Skill: onthecheap-mcp Owner: chrischall Summary: Find free and cheap things to do in a US city — daily event listings with times, prices and venues, plus searchable deals, festivals, kids activities and local guides from the On the Cheap network (Charlotte, Denver, Atlanta, Chicago, Columbus, Seattle, Kansas City, South Florida, Orlando, Portland, Richmond, Southern Maine, the Triangle). Use when the user asks what's","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1278,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T12:09:05.953Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T14:47:03.257Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"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!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"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","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}