MCP Server

ReefAPI

io.github.reefapi/reefapi-mcp
Data & Analytics Search & Research Public & reachable MCP 2025-11-25

What this MCP does

Provides access to a catalog of live web-data APIs, with engine discovery, schemas, parameter guidance, and API action execution.

call_engine
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.
Open world
Input schema
{'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': None, '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."}}}
get_action_schema
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.
Read only Open world Idempotent
Input schema
{'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."}}}
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.
Read only Open world Idempotent
Input schema
{'type': 'object', 'title': 'get_catalogArguments', 'properties': {}}
get_engine_schema
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.
Read only Open world Idempotent
Input schema
{'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."}}}
search_engines
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).
Read only Open world Idempotent
Input schema
{'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."}}}
Changed
call_engine
Sept. 25, 2026, 2:55 a.m.
Added
get_catalog
Sept. 17, 2026, 12:49 p.m.
Added
call_engine
Sept. 17, 2026, 12:49 p.m.
Added
get_action_schema
Sept. 17, 2026, 12:49 p.m.
Added
get_engine_schema
Sept. 17, 2026, 12:49 p.m.
Added
search_engines
Sept. 17, 2026, 12:49 p.m.