{
  "markdown": "# onthecheap-mcp\n\nMCP server for the [On the Cheap](https://livingonthecheap.com) network — local\nguides to free and cheap things to do across 14 US cities. Daily event listings\nwith times, prices and venues, plus a searchable archive of deals and guides.\n\n> Developed and maintained by AI (Claude Code). Use at your own discretion.\n\n**No credentials required.** Every site is public, so the server reads them\nserver-side over plain HTTPS. There is nothing to configure beyond which city\nyou want, and no browser extension involved.\n\n## Install\n\n```bash\nnpx onthecheap-mcp\n```\n\nOr as a Claude Code plugin:\n\n```\n/plugin marketplace add chrischall/onthecheap-mcp\n/plugin install onthecheap-mcp\n```\n\n## Choosing a city\n\nOne server reads the **whole network**. Every tool takes a `site` argument\nnaming the city to read — there is no default and no configuration step:\n\n| Key | Site | Area |\n| --- | --- | --- |\n| `charlotte` | Charlotte On The Cheap | Charlotte, NC |\n| `denver` | Mile High on the Cheap | Denver, CO |\n| `atlanta` | Atlanta on the Cheap | Atlanta, GA |\n| `chicago` | Chicago on the Cheap | Chicago, IL |\n| `columbus` | Columbus on the Cheap | Columbus, OH |\n| `seattle` | Greater Seattle on the Cheap | Seattle–Tacoma |\n| `kansascity` | Kansas City on the Cheap | Kansas City |\n| `miami` | South Florida on the Cheap | Miami / Broward / Palm Beach |\n| `orlando` | Orlando on the Cheap | Orlando, FL |\n| `portland` | Portland Living on the Cheap | Portland, OR |\n| `richmond` | RVA on the Cheap | Richmond, VA |\n| `southernmaine` | Southern Maine on the Cheap | Southern Maine |\n| `triangle` | Triangle on the Cheap | Raleigh / Durham / Chapel Hill |\n| `national` | Living On The Cheap | US-wide deals (no local events calendar) |\n\nCommon aliases work too — `milehigh`, `raleigh`, `rva`, `kc`, `southflorida`.\n`otc_list_sites` reports the same list.\n\n`site` is required rather than defaulted on purpose: a server that quietly fell\nback to one city would answer a question about Denver with Charlotte's data and\ngive no sign anything was wrong. An unknown key is refused with the valid ones\nlisted.\n\n## Tools\n\nAll tools are read-only. Every tool except `otc_list_sites` takes a required\n`site` argument. The two event tools **reject `national`**, which has no local\nevents calendar — it is still searchable via the other tools.\n\n| Tool | What it does |\n| --- | --- |\n| `otc_list_events` | Everything on a given day — time, price, venue. `free_only` filters to no-cost listings. Defaults to today. |\n| `otc_events_month_overview` | Day-by-day counts for a month, to find the busiest days. Each day's list is a preview; `total` is the real count. |\n| `otc_search_posts` | Search articles by text, category, location and date range. Returns slim summaries by default. |\n| `otc_get_post` | One article in full, as readable text or raw HTML. Accepts an id, slug, or URL. |\n| `otc_list_categories` | Category ids and post counts, for filtering searches by topic. |\n| `otc_list_locations` | Local area ids and post counts, for filtering geographically. |\n| `otc_list_sites` | The cities in the network and their `site` keys. Takes no arguments. |\n| `otc_healthcheck` | Confirm one site is reachable. |\n\n### Examples\n\n> What's free in Charlotte this Saturday?\n\n> Find kids' events in Lake Norman in August\n\n> Compare free things to do in Denver and Portland next weekend\n\n## Two things worth knowing\n\n**Retired deals are excluded by default.** Each site parks expired offers in an\n`expired` category, so searches skip them and you don't get deals that no\nlonger exist. Pass `include_expired: true` to search the archive. The category's\nid differs on every site, so it's resolved by slug at request time — a\nhardcoded id silently disables the filter elsewhere.\n\n**Category and location ids are per-site.** Each site is a separate WordPress\ninstall, so id 13 is a different category on every one of them. Resolve ids\nagainst the same `site` you then search — an id borrowed from another city will\nfilter to something unrelated rather than error.\n\n**Month overviews are previews, with honest counts.** The calendar shows at\nmost four listings per day. `otc_events_month_overview` reports each day's\n*true* total alongside the preview — call `otc_list_events` with a date for the\ncomplete schedule.\n\n## Configuration\n\nNone. The city is a per-call `site` argument, not an environment variable, so\nthere is nothing to set up before use.\n\n## Development\n\n```bash\nnpm install\nnpm test\nnpm run build\n```\n\nSee [`docs/OTC-API.md`](docs/OTC-API.md) for the verified data surface,\nincluding the events calendar's US `M-D-YYYY` date routing (an ISO date is\nsilently parsed as 1970), the month-view truncation, and why term ids are never\nhardcoded.\n\n## License\n\nMIT\n",
  "bytes": 4755,
  "sha": "8c800136bdd4d6e4b2188d1d0435ef8e386291514463953656f0d65109b474db",
  "repo_slug": "chrischall/onthecheap-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_chrischall_onthecheap_mcp_a48af7a4/readme"
}