# @unblockingapi/mcp Official [Model Context Protocol](https://modelcontextprotocol.io) server and Claude Code plugin for [UnblockingAPI](https://unblockingapi.com). Gives AI apps (Claude, Cursor, VS Code, Lovable, Replit, …) a real browser behind rotating residential proxies: fetch bot-protected and JavaScript-heavy pages, and parse any site a published template covers into structured JSON. **Hosted at `https://mcp.unblockingapi.com/mcp`** — add it as a connector and sign in, no install. Or run it locally with `npx -y @unblockingapi/mcp`. ## Tools | Tool | What it does | Cost | | --- | --- | --- | | `unblock_fetch` | Fetch public web pages that block simple requests, and get clean Markdown or HTML back. Picks plain HTTP or a real browser per site by itself; pass `template` to get structured JSON instead. Optionally narrowed with a CSS `select`. | 1 credit per success; re-reading the same fetch is free | | `find_templates` | Find a template that parses a site into JSON — by the URL you are about to fetch, by keyword, or by category — with its output shape. | free | | `get_build_guide` | Guides for building apps on the REST API with plain HTTP: API reference, getting complete pages, templates, and recipes (rank tracker, listings aggregator, price monitor). | free | Failed requests are free. The server's instructions, tool descriptions and the notes in each response steer the agent: let the API choose plain fetch or browser, check for a template before parsing a known site, scroll or wait when content is missing, and read the build guide before writing code that calls the API. ### Templates A template turns a page into named fields instead of markup. The catalogue is open-ended — search engines, marketplaces, property portals, company registries — and anyone can publish one from the [editor](https://editor.unblockingapi.com). There is no special handling for any particular site: every template, official or community, is reached the same way. ``` find_templates(url: "https://www.google.com/search?q=…") → kjellberg/google-search unblock_fetch(url: "…", template: "kjellberg/google-search") → { query, results, related_searches } ``` `find_templates` asks the API, which matches the URL against every published template's host, path and required query parameters the same way the template library does (`*` is one path segment, `**` any deeper path, hosts exact unless the pattern says `*.` or `.*`), so a match is found however large the catalogue grows. More results than fit come back with a `page` to ask for next. If a parser fails because the site changed, you get raw HTML back with `parse_error: true` rather than an error. ### API endpoints behind the tools | Tool | Calls | Key | | --- | --- | --- | | `unblock_fetch` | `POST https://api.unblockingapi.com/unblock` (JSON body; `template` selects a template) | `X-Api-Key` | | `find_templates` | `GET https://api.unblockingapi.com/templates.json?url=…&q=…&category=…&limit=…&page=…` (the public catalogue, searched server-side; answers cached for 5 minutes), plus `GET https://app.unblockingapi.com/public/v1/templates//` for the output shape when three or fewer match | none | | `get_build_guide` | nothing: the guides ship in the package (`guides/`) | none | Templates are not endpoints of their own: there is no `/api/google-search` or `/api/