ReefAPI
Server Details
One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
- Status
- Healthy
- Uptime
- 99.6% over 53 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Server Listing
- ReefAPI MCP
TDQS
Scored across 5 tools
Each tool has a clearly distinct role in the workflow: search_engines and get_catalog both aid discovery but serve different functions (keyword pre-filter vs. full inventory), and get_engine_schema vs. get_action_schema split at the action level with explicit guidance on when to use each. call_engine is unmistakably the only execution tool, so no two tools overlap ambiguously.
All five tool names follow a consistent verb_noun snake_case pattern: call_engine, get_action_schema, get_catalog, get_engine_schema, search_engines. The verbs are simple and match the operation, and there are no style mixes or vague names.
Five tools is well-scoped for an API gateway that provides discovery, schema inspection, and execution. Each tool earns its place in the discovery-to-call pipeline, and the count is comfortably within the ideal range without being bloated or thin.
The tool set fully covers the intended purpose of finding and calling ReefAPI engines: search_engines and get_catalog handle discovery, get_engine_schema and get_action_schema provide progressively detailed schema information, and call_engine executes the chosen action. There are no dead ends—the recommended pipeline from search to schema to call is complete.
Available Tools
5 toolscall_engineAInspect
Call a ReefAPI engine action — POST //v1/ 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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to run on that engine (e.g. 'search'), as listed by get_engine_schema. | |
| engine | Yes | The engine's name to call (e.g. 'zillow'), as returned by search_engines or get_catalog. | |
| params | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the minimal annotations (readOnlyHint: false, openWorldHint: true) by disclosing the HTTP method, the uniform { ok, data, meta, error } response envelope, all supported authentication paths, where to get a key, and that failed calls cost no credits. This is valuable operational behavior not visible in the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded and substantive: call an engine action and receive a uniform envelope. The auth options are explained in one dense sentence, and the 'Failed calls cost no credits' line is useful. It is long, but the complexity of auth justifies the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic engine-call proxy with no output schema, the description supplies the response envelope, parameter-discovery prerequisite, authentication mechanics, and cost behavior. Nothing an agent needs to safely invoke it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents engine, action, and params. The description adds a pointer to get_engine_schema/get_action_schema for valid param names, but this mostly restates the guidance already present in the input schema. It does not add new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and target: 'Call a ReefAPI engine action — POST /<engine>/v1/<action>' and states the return envelope. It is clearly distinguishable from sibling metadata tools like get_engine_schema, get_action_schema, and search_engines because this is the execution tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete sequencing: 'Get param names from get_engine_schema first,' and the param schema repeats this with get_action_schema. It also explains which server and auth mode to use. It does not explicitly state when not to use call_engine, but the contrast with the schema-lookup siblings is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_action_schemaARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 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 | Yes | The engine's name (e.g. 'zillow'), as returned by search_engines or get_catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, openWorldHint. The description adds that it returns parameter details, pricing, and example_params, enriching the behavioral understanding beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single paragraph, front-loaded with key information, no redundant sentences. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains what is returned (param detail, return, pricing, example_params). Combined with high schema coverage and annotations, the tool is fully contextualized for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds context: action comes from get_engine_schema, engine from search_engines or get_catalog. This provides useful semantic linkage beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns 'FULL detail for ONE engine action' and enumerates included items (parameters, return, pricing, example_params). It distinguishes itself from siblings like get_engine_schema (which lists all actions) and call_engine (which executes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this right before call_engine so you send valid params' and warns about invalid enum rejection, providing clear context for when to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_catalogARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, indicating no destructive side effects. The description adds value by revealing the approximate token size (a few thousand tokens) and the internal structure (grouped by category, one-line titles). It does not contradict annotations, so no flag. Slight deduction because the description could mention that no parameters are needed, but it's already implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is slightly verbose but every sentence adds value: it states the content, token budget, comparison to search_engines, and post-call workflow. The information is front-loaded. It could be slightly more concise, but the detail is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters, full schema coverage, and rich annotations (readOnly, openWorld, idempotent), the description provides all necessary context: what the catalog contains, how large it is, when to use it, and how to chain it with sibling tools. No output schema exists, but the description explains what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema coverage is 100% (empty object). The description does not need to elaborate on parameters, and it correctly focuses on the output and usage. This is a perfect handling of a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns the FULL ReefAPI catalog with every engine's one-line title grouped by category. It explicitly distinguishes from the sibling search_engines by emphasizing comprehensiveness: 'SCAN IT AND PICK THE BEST ENGINE YOURSELF.' The verb 'get' is straightforward, and the resource 'catalog' is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this whenever search_engines didn't surface the right engine (or to be sure you didn't miss a better one).' It also specifies the ideal workflow after using this tool: 'get_engine_schema(engine) -> get_action_schema -> call_engine.' This effectively tells the agent when to use this tool vs alternatives and what to do next.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_engine_schemaARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| engine | Yes | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and open world; the description adds that the tool returns a lean overview to save tokens, setting accurate expectations beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines the tool's purpose, second provides workflow context. No waste, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter fully described, annotations covering safety, and output behavior explained, the description is complete for the tool's simplicity and fits its role in the workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already states what the parameter is and what the tool returns; the tool description doesn't add new parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it provides a compact overview of one engine's actions, descriptions, required params, and returns, and distinguishes from similar tools by naming the workflow sequence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly states it should be called after search_engines and before get_action_schema, establishing a clear usage order and specifying when to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_enginesARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, openWorldHint, idempotentHint. Description adds rich behavioral details: stem matching, ranking by match, empty query returns all, and return fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose, but slightly verbose. Each sentence adds value, but could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Comprehensive description covering behavior, return values, and relationships with sibling tools. No output schema, but return info is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, already explaining the query parameter. Description adds value with translation guidance and ranking details, enhancing beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool finds the right ReefAPI engine for a task using English keywords or natural language, distinguishing it from siblings like get_catalog and get_engine_schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Call this FIRST' and advises to use get_catalog if the right engine isn't found. Also provides translation guidance for non-English queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
call_engine - First observed
get_action_schema - First observed
get_catalog - First observed
get_engine_schema - First observed
search_engines
Related MCP Connectors
MCP server for 500+ pay-per-call web scraping, search, social, business, and financial data tools.
All HasData scraping tools in one MCP server: Google, TikTok, Instagram, maps, e-commerce and more.
17 data tools in one MCP server, run on Apify: Google Shopping, Flights, Hotels, News, Images, Videos, Ads Transparency, Jobs and Trends; YouTube transcripts; AI visibility checks; Google Maps leads; App Store and Google Play reviews. Pay per result. Sign in with Apify (OAuth) or an API token.
APIs and MCP for structured public data, web research, CAPTCHA, and source-bound data cleanup.
Related MCP Servers
AlicenseCqualityAmaintenanceHosted MCP server for 3,475 structured public web-data tools across 468 platform groups, returning clean JSON for search, maps, commerce, social, and finance.2500536 npm1MIT- AlicenseAqualityBmaintenanceRemote MCP server with 19 e-commerce and IP-compliance data tools — Amazon product/review/search/niche/bestseller data, AI SERP & keyword trends, local Maps POI, WIPO trademark search, and PACER patent litigation. No scraping code or proxies needed; one API key unlocks all tools.211MIT
- AlicenseAqualityAmaintenanceMCP server for agent-friendly web scraping with adaptive anti-bot bypass, dynamic rendering, and structured data extraction via 12 tools.12MIT

novada-mcpofficial
AlicenseAqualityDmaintenanceOne MCP server. All web data. Search, scrape, crawl, proxy, and AI research — in a single npx command.342,411 npm3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.