{"name":"io.github.reefapi/reefapi-mcp","slug":"reefapi-mcp","title":"ReefAPI","description":"One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.","url":"https://mcp.market/server/reefapi-mcp","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":30,"stars":4,"forks":0,"downloads_week":null,"last_push_at":"2026-09-19T19:11:10.000Z","license":"MIT"},"uptime":{"percent":83,"checks":6,"ok":5,"last_checked_at":"2026-09-20T23:30:44.210Z","last_ok_at":"2026-09-20T23:30:44.210Z","latency_ms":46},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/reefapi/reefapi-mcp","website":"https://reefapi.com/mcp","version":"1.27.2","remotes":[{"type":"streamable-http","url":"https://api.reefapi.com/mcp","headers":[{"description":"Bearer <your ReefAPI key from reefapi.com>","isRequired":true,"isSecret":true,"name":"Authorization"}]}],"packages":[],"tools":[{"name":"call_engine","description":"Call a ReefAPI engine action — POST /<engine>/v1/<action> with `params`. Returns the uniform\n    { ok, data, meta, error } envelope. Get param names from get_engine_schema first. Needs YOUR\n    ReefAPI key (the local server reads REEFAPI_KEY; the hosted server reads the `Authorization:\n    Bearer ak_live_...` header you configure on the connection). Get a key at https://reefapi.com.\n    Failed calls cost no credits.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"engine":{"description":"The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog.","title":"Engine","type":"string"},"action":{"description":"The action to run on that engine (e.g. 'search'), as listed by get_engine_schema.","title":"Action","type":"string"},"params":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"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.","title":"Params"}},"required":["engine","action"],"title":"call_engineArguments"}},{"name":"get_action_schema","description":"FULL detail for ONE engine action: every parameter (type, required, description, allowed_values\n    dropdown, default, example, min/max), what it returns, pricing, and a ready-to-run example_params.\n    Call this right before call_engine so you send valid params — invalid enum values are rejected with\n    the allowed list.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"engine":{"description":"The engine's name (e.g. 'zillow'), as returned by search_engines or get_catalog.","title":"Engine","type":"string"},"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.","title":"Action","type":"string"}},"required":["engine","action"],"title":"get_action_schemaArguments"}},{"name":"get_catalog","description":"The FULL ReefAPI catalog — EVERY engine with its one-line title, grouped by category. This is the\n    whole menu (≈ a few thousand tokens); SCAN IT AND PICK THE BEST ENGINE YOURSELF. You are an LLM, so\n    you match the user's intent semantically — across ANY language, typo, or phrasing — far better than a\n    keyword search can. Use this whenever search_engines didn't surface the right engine (or to be sure\n    you didn't miss a better one). After you pick: get_engine_schema(engine) -> get_action_schema -> call_engine.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"title":"get_catalogArguments"}},{"name":"get_engine_schema","description":"COMPACT overview of ONE engine: every action with its description, required params and what it\n    returns — but NOT the full param detail (kept lean so a 90-action engine stays token-cheap). Call\n    this after search_engines to pick the right ACTION, then get_action_schema(engine, action) for that\n    action's full params before call_engine.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"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.","title":"Engine","type":"string"}},"required":["engine"],"title":"get_engine_schemaArguments"}},{"name":"search_engines","description":"Find the right ReefAPI engine for a task — pass ENGLISH keywords or a short natural-language\n    use-case (\"detect a website's tech stack\", \"company reviews\", \"check a package for vulnerabilities\",\n    \"is this domain available\"). The catalog is in English: if the end-user asked in another language,\n    translate their INTENT into English keywords first (you are an LLM — do this inline). Ranks engines by\n    how well the query matches each engine's name/title/category/ACTION descriptions (stem-matched, so\n    plurals/word-forms still hit). Empty query = list all. Returns name/title/category/actions + match\n    score. Call this FIRST, then get_engine_schema(engine) to pick an action. This is a fast keyword\n    pre-filter — if the right engine isn't in the results (or you want to be sure), call get_catalog and\n    pick from the full list YOURSELF (you semantically match any language/phrasing better than keywords).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"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.","title":"Query","type":"string"}},"title":"search_enginesArguments"}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-20T21:00:45.363Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T21:00:45.329Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2192ms"]},"poisoning":{"score":15,"max":15,"notes":["5 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.reefapi.com/mcp","reachable":true,"authRequired":false,"latencyMs":2192,"serverInfo":{"name":"reefapi","version":"1.27.2"}}],"packages":[],"repo":{"found":true,"owner":"reefapi","repo":"reefapi-mcp","archived":false,"pushedAt":"2026-09-19T19:11:10Z","stars":4,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/296231074?v=4","ownerCreatedAt":"2026-06-23T16:40:55Z","license":"MIT"},"icon":{"url":"https://reefapi.com/icon.svg","source":"registry"},"presence":{"stars":4,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-19T19:11:10.000Z","score":30}}}},"grade_history":[],"reviews":[]}