One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer <your ReefAPI key from reefapi.com>
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Call a ReefAPI engine action — POST /<engine>/v1/<action> with `params`. Returns the uniform { ok, data, meta, error } envelope. Get param names from get_engine_schema first. Needs YOUR ReefAPI key. The local server reads REEFAPI_KEY; the hosted server accepts an OAuth access token (connect with OAuth and paste your key once on the consent screen — this is what ChatGPT uses), an `Authorization: Bearer <key>` header, `x-reefapi-key`, or the key in the connection URL (`https://api.reefapi.com/mcp?key=<key>`). Get a key at https://reefapi.com. Failed calls cost no credits.
The action to run on that engine (e.g. 'search'), as listed by get_engine_schema.
The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog.
The action's parameters as a JSON object, e.g. {'query': 'NYC'}. Get the valid param names and values from get_action_schema first. Omit or pass null for actions that take none.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Call a ReefAPI engine action — POST /<engine>/v1/<action> with `params`. Returns the uniform { ok, data, meta, error } envelope. Get param names from get_engine_schema first. Needs YOUR ReefAPI key. The local server reads REEFAPI_KEY; the hosted server accepts an OAuth access token (connect with OAuth and paste your key once on the consent screen — this is what ChatGPT uses), an `Authorization: Bearer <key>` header, `x-reefapi-key`, or the key in the connection URL (`https://api.reefapi.com/mcp?key=<key>`). Get a key at https://reefapi.com. Failed calls cost no credits.
| Argument | Type | Description |
|---|---|---|
| action* | string | The action to run on that engine (e.g. 'search'), as listed by get_engine_schema. |
| engine* | string | The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog. |
| params | any | The action's parameters as a JSON object, e.g. {'query': 'NYC'}. Get the valid param names and values from get_action_schema first. Omit or pass null for actions that take none. |
{
"type": "object",
"title": "call_engineArguments",
"required": [
"engine",
"action"
],
"properties": {
"action": {
"type": "string",
"title": "Action",
"description": "The action to run on that engine (e.g. 'search'), as listed by get_engine_schema."
},
"engine": {
"type": "string",
"title": "Engine",
"description": "The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog."
},
"params": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"title": "Params",
"default": null,
"description": "The action's parameters as a JSON object, e.g. {'query': 'NYC'}. Get the valid param names and values from get_action_schema first. Omit or pass null for actions that take none."
}
}
}FULL detail for ONE engine action: every parameter (type, required, description, allowed_values dropdown, default, example, min/max), what it returns, pricing, and a ready-to-run example_params. Call this right before call_engine so you send valid params — invalid enum values are rejected with the allowed list.
| Argument | Type | Description |
|---|---|---|
| action* | string | The action's name on that engine (from get_engine_schema, e.g. 'search'). Returns the full param detail (type, required, allowed_values, default, example, min/max), what it returns, pricing, and ready-to-run example_params. |
| engine* | string | The engine's name (e.g. 'zillow'), as returned by search_engines or get_catalog. |
{
"type": "object",
"title": "get_action_schemaArguments",
"required": [
"engine",
"action"
],
"properties": {
"action": {
"type": "string",
"title": "Action",
"description": "The action's name on that engine (from get_engine_schema, e.g. 'search'). Returns the full param detail (type, required, allowed_values, default, example, min/max), what it returns, pricing, and ready-to-run example_params."
},
"engine": {
"type": "string",
"title": "Engine",
"description": "The engine's name (e.g. 'zillow'), as returned by search_engines or get_catalog."
}
}
}The FULL ReefAPI catalog — EVERY engine with its one-line title, grouped by category. This is the whole menu (≈ a few thousand tokens); SCAN IT AND PICK THE BEST ENGINE YOURSELF. You are an LLM, so you match the user's intent semantically — across ANY language, typo, or phrasing — far better than a keyword search can. Use this whenever search_engines didn't surface the right engine (or to be sure you didn't miss a better one). After you pick: get_engine_schema(engine) -> get_action_schema -> call_engine.
No arguments.
{
"type": "object",
"title": "get_catalogArguments",
"properties": {}
}COMPACT overview of ONE engine: every action with its description, required params and what it returns — but NOT the full param detail (kept lean so a 90-action engine stays token-cheap). Call this after search_engines to pick the right ACTION, then get_action_schema(engine, action) for that action's full params before call_engine.
| Argument | Type | Description |
|---|---|---|
| engine* | string | The engine's name (the `engine`/`name` field from search_engines or get_catalog, e.g. 'zillow', 'amazon'). Returns each action with its description, required params, and what it returns. |
{
"type": "object",
"title": "get_engine_schemaArguments",
"required": [
"engine"
],
"properties": {
"engine": {
"type": "string",
"title": "Engine",
"description": "The engine's name (the `engine`/`name` field from search_engines or get_catalog, e.g. 'zillow', 'amazon'). Returns each action with its description, required params, and what it returns."
}
}
}Find the right ReefAPI engine for a task — pass ENGLISH keywords or a short natural-language use-case ("detect a website's tech stack", "company reviews", "check a package for vulnerabilities", "is this domain available"). The catalog is in English: if the end-user asked in another language, translate their INTENT into English keywords first (you are an LLM — do this inline). Ranks engines by how well the query matches each engine's name/title/category/ACTION descriptions (stem-matched, so plurals/word-forms still hit). Empty query = list all. Returns name/title/category/actions + match score. Call this FIRST, then get_engine_schema(engine) to pick an action. This is a fast keyword pre-filter — if the right engine isn't in the results (or you want to be sure), call get_catalog and pick from the full list YOURSELF (you semantically match any language/phrasing better than keywords).
| Argument | Type | Description |
|---|---|---|
| query | string | English keywords or a short use-case, e.g. 'company reviews', 'detect a website's tech stack', or 'is this domain available'. Translate non-English intent to English first. Empty = list all engines. |
{
"type": "object",
"title": "search_enginesArguments",
"properties": {
"query": {
"type": "string",
"title": "Query",
"default": "",
"description": "English keywords or a short use-case, e.g. 'company reviews', 'detect a website's tech stack', or 'is this domain available'. Translate non-English intent to English first. Empty = list all engines."
}
}
}