Skip to main content
Glama
Scrapeer

Scrapeer MCP Server

Official
by Scrapeer

Scrapeer is a visual browser automation and web scraping platform for people who do not want to write scrapers from scratch. Build deterministic scraping workflows in a drag-and-drop editor, watch the browser run step by step, then run those same flows locally or in Scrapeer's cloud.

This MCP server connects AI agents to Scrapeer so they can:

  • run saved scraping flows and retrieve structured results

  • inspect flow definitions, block configs, execution steps, and run history

  • create or patch flows using Scrapeer's block catalog and validation APIs

  • check account credits and cancel active cloud runs

The result is a useful split of responsibilities: humans design reliable browser workflows in Scrapeer, and agents can trigger, monitor, debug, and extend those workflows through MCP.

Why Scrapeer

Scrapeer is built for glass-box scraping: you can see exactly what the scraper does, inspect each block's output, and fix the workflow when a site changes. Instead of asking an agent to improvise browser steps every time, Scrapeer gives agents a reliable set of saved, validated workflows they can run on demand.

Related MCP server: Hyperbrowser MCP Server

Quick Start

Create a Scrapeer API key at https://app.scrapeer.com/settings#security, then add the server to your MCP client. These examples use npx so users do not need to install the package globally.

Claude Code (.mcp.json)

For a project-scoped Claude Code config, create .mcp.json in the project root:

{
  "mcpServers": {
    "scrapeer": {
      "command": "npx",
      "args": ["-y", "@scrapeer/mcp-server"],
      "env": { "SCRAPEER_API_KEY": "sk_..." }
    }
  }
}

For a private user-scoped config, run claude mcp add --scope user --env SCRAPEER_API_KEY=sk_... scrapeer -- npx -y @scrapeer/mcp-server so Claude writes the correct ~/.claude.json entry for your machine.

Codex CLI and IDE extension (~/.codex/config.toml)

[mcp_servers.scrapeer]
command = "npx"
args = ["-y", "@scrapeer/mcp-server"]

[mcp_servers.scrapeer.env]
SCRAPEER_API_KEY = "sk_..."

Cursor (~/.cursor/mcp.json or .cursor/mcp.json)

{
  "mcpServers": {
    "scrapeer": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@scrapeer/mcp-server"],
      "env": { "SCRAPEER_API_KEY": "sk_..." }
    }
  }
}

VS Code Copilot (.vscode/mcp.json)

{
  "servers": {
    "scrapeer": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@scrapeer/mcp-server"],
      "env": { "SCRAPEER_API_KEY": "sk_..." }
    }
  }
}

Available Tools

Read

Tool

Description

scrapeer_list_flows

List your saved scraping flows

scrapeer_get_flow

Get details about a specific flow

scrapeer_get_block_catalog

List the block types available for use in flows, with their custom-field schemas. Call this before any create/update/patch; guessing types or config keys leads to validation failures

scrapeer_validate_flow

Dry-run validate a flow JSON without saving

scrapeer_get_account

Account info: credit balance, subscription plan, cloud-run availability

Run

Tool

Description

scrapeer_run_flow

Trigger a cloud run and return immediately with an execution ID

scrapeer_run_flow_and_wait

Run a flow and poll until results are ready (recommended)

scrapeer_get_run_status

Check the status of a running or completed execution

scrapeer_get_run_results

Get structured output data from a completed run

scrapeer_get_run_steps

Get block-by-block execution breakdown (useful for debugging failures)

scrapeer_list_runs

List execution history, with optional filtering by status or flow

scrapeer_cancel_run

Cancel an active cloud execution

Mutate

Tool

Description

scrapeer_create_flow

Create a new (empty) flow with the given title

scrapeer_update_flow

Replace a flow's entire definition (whole-flow overwrite). Prefer scrapeer_patch_flow for incremental edits

scrapeer_patch_flow

Apply granular patch operations: add_block, update_block_custom, remove_block, add_edge, remove_edge

The mutation tools enforce optimistic concurrency. Every save sends the version stamp the caller saw on its last read, and the gateway rejects stale writes with 409 so concurrent edits from a human in the editor and an LLM via MCP cannot silently overwrite each other. The MCP server tracks this version stamp automatically across calls in the same session, so the LLM does not have to manage it manually.

Typical sequences:

Create from scratch:

scrapeer_get_block_catalog       -> learn valid block types
scrapeer_create_flow             -> returns flow_id (event_id cached)
scrapeer_patch_flow flow_id [...] -> add_block ops; cache -> baseProjectEventID

Modify an existing flow:

scrapeer_get_block_catalog       -> learn valid block types
scrapeer_get_flow flow_id        -> caches the current event_id
scrapeer_validate_flow {...}     -> optional dry-run before commit
scrapeer_patch_flow flow_id [...] -> uses cached event_id automatically

If a 409 fires, the cached event_id is invalidated automatically. Re-call scrapeer_get_flow and retry the mutation.

Configuration

Variable

Required

Default

Description

SCRAPEER_API_KEY

Yes

-

API key from app.scrapeer.com/settings

Development

pnpm install
pnpm test
pnpm run build

Tests use msw to mock the Scrapeer API. No real credentials are needed.

Available Tools

15 tools
scrapeer_cancel_runA
DestructiveIdempotent

Cancel a running cloud execution. USE THIS TOOL WHEN: a run is taking too long, the user wants to stop it, or scrapeer_run_flow_and_wait timed out and you want to abort the run. DO NOT USE: on already-completed or already-failed runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesThe execution ID returned by scrapeer_run_flow or scrapeer_run_flow_and_wait.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and idempotentHint=true, so the description doesn't need to repeat safety basics. It adds context about valid target state (running only, not completed/failed) and suggests aborting after timeout. This goes beyond the annotations without contradiction, though it doesn't detail post-cancel behavior (e.g., status becomes canceled).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action. The 'USE THIS TOOL WHEN' and 'DO NOT USE' sections are clear, each sentence adds value, and the length is appropriate for a single-purpose cancellation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter cancel tool with strong annotations and no output schema, the description covers the essential context: what the tool does, when to use it, and when to avoid it. The parameter source is specified, and no additional return-value documentation is necessary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the single parameter execution_id is clearly described as the ID returned by scrapeer_run_flow or scrapeer_run_flow_and_wait. The tool description adds no additional parameter-specific semantics, but the schema already fully documents it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Cancel a running cloud execution,' which is a specific verb (cancel) plus resource (running cloud execution), clearly distinguishing it from sibling tools like run, list, get status, etc. It further narrows scope by explicitly excluding completed or failed runs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'USE THIS TOOL WHEN' scenarios (run taking too long, user wants to stop, timeout from scrapeer_run_flow_and_wait) and a 'DO NOT USE' exclusion for completed/failed runs. This gives the agent clear decision criteria and directs to alternatives implicitly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_create_flowA

Create a new (empty) flow with the given title. Returns the new flow's ID. Use scrapeer_update_flow or scrapeer_patch_flow afterwards to add blocks. USE THIS TOOL WHEN: the user asks to create a new automation/scraper. DO NOT USE: to overwrite an existing flow's data (use scrapeer_update_flow with the existing flow's ID).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDisplay name for the new flow.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only provide readOnly=false, idempotent=false, destructive=false. The description adds that the flow is created empty, requires follow-up updates/patches, and returns the flow's ID. This goes beyond annotations and offers useful behavioral context, though it doesn't mention edge cases like duplicate title handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, starting with the core action, then the return value, followed by follow-up guidance, and ending with explicit usage conditions. It is concise and well-structured, though the 'USE THIS TOOL WHEN' section partially repeats the purpose, which is a minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create tool with a single parameter and no output schema, the description is complete: it states the action, the return value, the empty state, and the relationship to sibling tools. The guidance covers the primary use cases and failure mode (overwriting).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the sole 'title' parameter as 'Display name for the new flow.' The description merely says 'with the given title' and adds no extra semantic detail, so the baseline of 3 is appropriate given 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states 'Create a new (empty) flow with the given title' and notes it returns the new flow's ID. It clearly distinguishes from sibling update/patch tools by specifying the flow is empty and that updates are for later, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit 'USE THIS TOOL WHEN' and 'DO NOT USE' sections, naming scrapeer_update_flow as the alternative for overwriting existing flows. This gives clear, actionable guidance on when to use this tool versus siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_accountA
Read-onlyIdempotent

Get your Scrapeer account info - credit balance, subscription plan, and whether cloud runs are enabled. USE THIS TOOL WHEN: you need to check if the user has enough credits before running a flow, or the user asks about their plan, balance, or account status. DO NOT USE: to list flows or runs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds behavioral context by specifying the exact returned data (credit balance, subscription plan, cloud runs enabled), which helps the agent know what information it can obtain. It does not go into auth or rate limits, but given the annotations and simple read-only nature, this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a single sentence describing the function, followed by explicit 'USE THIS TOOL WHEN' and 'DO NOT USE' sections. Every sentence serves a purpose, with no wasted words or repetition of schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description adequately covers the expected return values by naming the key fields. It also gives clear use cases and exclusions, making it complete for an agent to decide when to invoke. It could potentially mention the exact response format or whether additional fields exist, but for a simple account info tool, the provided context is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero parameters, so the description does not need to explain parameter semantics. The schema coverage is 100% (vacuously) and there are no required or enum parameters. The description's focus on the tool's purpose and output is appropriate; no parameter details are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb 'Get' and identifies the resource 'your Scrapeer account info', listing specific fields (credit balance, subscription plan, cloud runs enabled). It also explicitly distinguishes from siblings by stating 'DO NOT USE: to list flows or runs', which clears any ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage context: 'USE THIS TOOL WHEN' for checking credits or account status, and explicit exclusions: 'DO NOT USE: to list flows or runs'. This gives the agent clear decision guidance and differentiates from sibling tools like scrapeer_list_flows or scrapeer_get_run_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_block_catalogA
Read-onlyIdempotent

List the block types available for use in flows, with their custom-field schemas. USE THIS TOOL WHEN: you are about to create or modify a flow and need to know which block types exist, what their type strings are (e.g. clickElement, extractText), and what config fields each block accepts. ALWAYS call this BEFORE scrapeer_create_flow, scrapeer_update_flow, or scrapeer_patch_flow - guessing block types or config keys leads to validation failures. DO NOT USE: to read an existing flow's blocks (use scrapeer_get_flow).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds behavioral context by stating the tool returns block type strings and custom-field schemas, and that guessing these leads to validation failures—clarifying the tool's role as a catalog. It doesn't cover return format details, but that's not expected given no output schema and the simple listing nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by clear usage directives and an exclusion. Every sentence adds value: the purpose, the when-to-use, the mandatory call order, and the do-not-use alternative. No wasted words despite the guidance style.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description is complete. It explains the result (block types and schemas), the context (before flow creation/update), and explicitly lists related sibling tools to use instead. The guidance about validation failures underscores its importance in the overall flow workflow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is 100%, so there is nothing to explain. Baseline for 0 params is 4, and the description appropriately doesn't add parameter info since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List the block types available for use in flows, with their custom-field schemas.' It clearly distinguishes this tool from siblings by explicitly saying 'DO NOT USE: to read an existing flow's blocks (use scrapeer_get_flow)', which sets it apart from the flow-reading tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: 'USE THIS TOOL WHEN: you are about to create or modify a flow...' and 'ALWAYS call this BEFORE scrapeer_create_flow, scrapeer_update_flow, or scrapeer_patch_flow.' It also gives an explicit when-not-to-use with an alternative: 'DO NOT USE: to read an existing flow's blocks (use scrapeer_get_flow).' This fully covers usage context and alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_flowA
Read-onlyIdempotent

Get details about a specific scraping flow - its blocks (with full config, selectors, and variables), edges, and metadata. Accepts either a flow ID (UUID) or a flow name. NOTE: Only blocks reachable from the Start block are returned. Orphaned/disconnected blocks on the canvas are pruned. USE THIS TOOL WHEN: you know which flow you want details about (by name or ID), you need to inspect selectors or block config, or you're debugging a flow. DO NOT USE: to list all flows (use scrapeer_list_flows).

ParametersJSON Schema
NameRequiredDescriptionDefault
flowYesThe flow ID (UUID) or flow name. If a name is provided, it will be resolved to an ID. If multiple flows match the name, all matches are returned so the user can choose.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already define read-only/idempotent/non-destructive behavior. The description adds a valuable behavioral nuance: 'Only blocks reachable from the Start block are returned. Orphaned/disconnected blocks on the canvas are pruned.' This goes beyond annotations and helps set expectations for debugging.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is front-loaded with the purpose, then proceeds logically to parameter handling, behavioral note, and usage guidance. It uses clear formatting with 'NOTE:', 'USE THIS TOOL WHEN:', and 'DO NOT USE:'—every sentence earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple interface (1 param, no output schema) and available annotations, the description covers all essential aspects: what it returns, key pruning behavior, accepted input formats, and when to use. No critical information is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'flow' parameter. The description mentions accepting ID or name, which echoes the schema but adds no additional details. Baseline 3 is appropriate since the schema fully documents the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get details about a specific scraping flow' and enumerates what is returned (blocks with full config, selectors, variables, edges, metadata). It explicitly distinguishes from the sibling 'list all flows' with 'DO NOT USE: to list all flows (use scrapeer_list_flows)'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'USE THIS TOOL WHEN' conditions (know flow by name/ID, inspect selectors/block config, debugging) and an explicit 'DO NOT USE' with an alternative tool. This gives the agent clear decision guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_run_resultsA
Read-onlyIdempotent

Get the variables and per-block output previews from a completed run. USE THIS TOOL WHEN: scrapeer_get_run_status shows "completed" and you need the scraped output. DO NOT USE: if the run is still active (check status first). Returns the final variables map (scraped values written by Extract/Collect/Variable blocks) and block_previews - one envelope per block at the (blockId, loopContextHash) grain. Each envelope is {kind:"single", data, truncated} for non-looped blocks or {kind:"iterated", iterations:[...], iterationsTruncated} for blocks that ran inside a loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesThe execution ID returned by scrapeer_run_flow or scrapeer_run_flow_and_wait.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds valuable behavioral context: it explains the return structure in detail (envelope kinds, loop handling, truncation), and the condition that the run must be completed. This goes beyond annotations to fully disclose what the agent should expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose. The 'USE THIS TOOL WHEN' and 'DO NOT USE' sections are concise and scannable. The return type explanation is detailed but every sentence serves a purpose, avoiding fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no output schema, the description fully specifies the return payload (variables map and block_previews envelope format). It also clarifies the relationship to scrapeer_get_run_status and addresses loop handling. With only one parameter and rich annotations, the description is complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter, execution_id, including its source. The description enhances this by adding the requirement that the execution_id must reference a 'completed run', which is a meaningful semantic constraint not present in the schema. However, it does not add format or syntax details beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Get the variables and per-block output previews from a completed run.' It specifies both the resource (run results) and the verb (get), and distinguishes it from siblings like scrapeer_get_run_status and scrapeer_get_run_steps by focusing on output contents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided: 'USE THIS TOOL WHEN: scrapeer_get_run_status shows "completed" and you need the scraped output. DO NOT USE: if the run is still active (check status first).' This clearly states when to use, when not to use, and implies checking status first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_run_statusA
Read-onlyIdempotent

Check the status of a cloud run. USE THIS TOOL WHEN: you started a run with scrapeer_run_flow and need to check if it's done, or you're monitoring a run that was started elsewhere (web app, schedule). DO NOT USE: to get results (use scrapeer_get_run_results after status is "completed").

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesThe execution ID returned by scrapeer_run_flow or scrapeer_run_flow_and_wait.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds context about status being 'completed' but doesn't describe return format or side effects. No contradiction, but little extra beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is compact, front-loaded with purpose, and structured into use/when-not-to-use. Every sentence provides value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is a simple status check with a single well-documented parameter, read-only annotations, and sibling context. Description covers purpose, usage conditions, and exclusions, sufficient for effective selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage: the only parameter execution_id is described as returned by scrapeer_run_flow or scrapeer_run_flow_and_wait. The description does not add additional parameter details, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Check the status of a cloud run', clearly identifying the verb and resource. It also distinguishes from siblings by directing users to scrapeer_get_run_results for results, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (after starting a run with scrapeer_run_flow or monitoring runs started elsewhere) and when not to use (to get results, use scrapeer_get_run_results). This is full guidance with an alternative named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_get_run_stepsA
Read-onlyIdempotent

Get block-by-block execution breakdown of a run. USE THIS TOOL WHEN: a run failed and you need to know which block caused the error, or you want to understand execution timing, or you want to see which blocks have preview envelopes before calling scrapeer_get_run_results. DO NOT USE: to get the actual scraped values (use scrapeer_get_run_results).

ParametersJSON Schema
NameRequiredDescriptionDefault
execution_idYesThe execution ID returned by scrapeer_run_flow or scrapeer_run_flow_and_wait.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, covering safety expectations. The description adds behavioral context by noting what the breakdown includes (block errors, timing, preview envelopes) beyond what annotations express. It doesn't detail output structure, but annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first states purpose, second gives specific use cases, third clarifies what not to use it for. No wasted words, and key decisions are front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the description communicates the return concept (block-level breakdown with execution timing and preview envelope presence). It references relevant sibling tools and gives enough context to invoke correctly. Slightly more detail on output shape would push it to 5, but it is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes the single parameter, execution_id, including its UUID format and what returns it (scrapeer_run_flow or scrapeer_run_flow_and_wait). The description itself doesn't add parameter-level details, but schema coverage is 100%, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') with a clear resource ('block-by-block execution breakdown of a run'), immediately conveying the tool's scope. It explicitly differentiates itself from scrapeer_get_run_results by contrasting block-level details vs. actual scraped values.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'USE THIS TOOL WHEN' conditions and a 'DO NOT USE' exclusion naming the alternative tool. This gives the agent clear decision criteria for selecting this tool over most siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_list_flowsA
Read-onlyIdempotent

List your saved scraping flows. USE THIS TOOL WHEN: you need to find a flow ID, the user says "list my flows/scrapers", or you need to discover available flows before running one. DO NOT USE: to get details about a specific flow (use scrapeer_get_flow).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of items to return. Default 20, max 100.
offsetNoNumber of items to skip for pagination. Default 0.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds minimal behavioral context (e.g., 'saved' implies persistence) but does not disclose return format, pagination behavior, or additional side effects, which is acceptable given the annotations and simple nature of the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, followed by structured usage guidance. Every sentence earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two optional parameters, good annotations, and no output schema, the description fully covers purpose, usage context, and alternatives. The schema handles parameter specifics, and the read-only nature is already disclosed by annotations, making this contextually complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, with clear descriptions for limit and offset. The main description does not add parameter details, but since the schema already provides full meaning, the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List your saved scraping flows.' It uses a specific verb and resource, and explicitly distinguishes from the sibling tool by saying 'DO NOT USE: to get details about a specific flow (use scrapeer_get_flow).'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use scenarios: 'when you need to find a flow ID, the user says "list my flows/scrapers", or you need to discover available flows before running one.' Also gives a clear exclusion and names the alternative tool, making the usage guidance unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_list_runsA
Read-onlyIdempotent

List execution history. USE THIS TOOL WHEN: user asks about past runs, wants to see execution history, or you need to find a specific run. Supports filtering by status and flow. DO NOT USE: to get details of a specific run (use scrapeer_get_run_status or scrapeer_get_run_results).

ParametersJSON Schema
NameRequiredDescriptionDefault
flowNoFilter runs by flow name or ID. Accepts either a UUID or a flow name.
limitNoMaximum number of items to return. Default 20, max 100.
offsetNoNumber of items to skip for pagination. Default 0.
statusNoFilter by execution status.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context: it is a listing operation for history, supports filtering by status/flow, and is not for retrieving run details. It does not describe pagination or ordering, but the annotation coverage lowers the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a clear one-sentence purpose, followed by explicit capitalized usage guidelines. No filler or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with complete schema documentation and strong annotations, the description plus schema provide sufficient context. It lacks an output schema and does not specify the response shape, but the explicit distinction from detail-oriented sibling tools helps set expectations. This is adequate for the tool's moderate complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with meaningful descriptions for all four parameters (flow, limit, offset, status). The description only restates filtering by status and flow, adding no new semantic information beyond the schema. The baseline of 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List execution history,' which is a specific verb+resource statement. It clearly distinguishes itself from sibling tools by explicitly saying to use scrapeer_get_run_status or scrapeer_get_run_results for details of a specific run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'USE THIS TOOL WHEN' conditions (past runs, execution history, finding a specific run) and a 'DO NOT USE' instruction with named alternative tools. This leaves no ambiguity about when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_patch_flowA
Destructive

Apply a list of granular patch operations to a flow's graph: add_block, update_block_custom, remove_block, add_edge, remove_edge. PREFERRED over scrapeer_update_flow for incremental edits - smaller blast radius and validated per-op server-side. USE THIS TOOL WHEN: making targeted changes (adding a block to an existing flow, fixing a selector, rewiring an edge). DO NOT USE: when the change touches most of the flow at once (use scrapeer_update_flow). Always call scrapeer_get_block_catalog first; ALWAYS call scrapeer_get_flow on this flow earlier in the session so the MCP server can attach the version stamp for optimistic concurrency. Returns the post-patch flow plus a summary of each operation's effect.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowYesThe flow ID (UUID) or flow name. If a name is provided, it will be resolved to an ID. If multiple flows match the name, all matches are returned so the user can choose.
operationsYesList of patch operations to apply, in order.
baseProjectEventIDNoVersion stamp from the last scrapeer_get_flow on this flow. Auto-populated when available.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description adds critical behavior: per-operation server-side validation, optimistic concurrency via version stamp, and the return value (post-patch flow plus operation summary). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (PREFERRED, USE THIS TOOL WHEN, DO NOT USE, ALWAYS calls) and every sentence contributes meaningful guidance. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with nested operation objects and no output schema, the description covers preconditions, concurrency, validation, and return value. It gives the agent all necessary context to invoke the tool successfully and understand consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters in detail (100% coverage). The description adds value by explaining the purpose of baseProjectEventID ('so the MCP server can attach the version stamp for optimistic concurrency') and emphasizing that operations are applied in order, which supplements the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's function: 'Apply a list of granular patch operations to a flow's graph' and lists the specific operation types. It clearly differentiates from the sibling tool scrapeer_update_flow by positioning this as the preferred option for incremental edits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use and when-not-to-use guidance: 'USE THIS TOOL WHEN: making targeted changes... DO NOT USE: when the change touches most of the flow at once (use scrapeer_update_flow).' It also gives mandatory preconditions (call scrapeer_get_block_catalog and scrapeer_get_flow) with reasoning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_run_flowA

Trigger a cloud run of a scraping flow. Returns immediately with an execution ID. Accepts either a flow ID (UUID) or a flow name. USE THIS TOOL WHEN: you want to start a run and manage polling yourself, or you want to trigger multiple runs in parallel. DO NOT USE: if you want results in one call (use scrapeer_run_flow_and_wait instead). The run executes in Scrapeer's cloud.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowYesThe flow ID (UUID) or flow name. If a name is provided, it will be resolved to an ID. If multiple flows match the name, all matches are returned so the user can choose.
max_creditsNoMaximum credits to spend on this run. The run will fail if the estimated cost exceeds this limit.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations do not provide safety hints (all false), so the description carries the burden. It adds valuable behavioral context: immediate return, asynchronous execution, cloud-based running, and name resolution behavior with multiple matches. These go beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise, front-loaded with the action, and uses clear sections (USE THIS/DO NOT USE). No wasted words; each sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async trigger tool, the description covers key aspects: return value (execution ID), execution location (cloud), and follow-up behavior (polling yourself). It doesn't explicitly mention how to poll, but sibling tools and usage guidance imply it. Complete enough given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. Description mentions accepting flow ID or name but does not add significant extra detail beyond the schema's parameter descriptions. No new semantics for parameters are introduced.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool 'Trigger a cloud run of a scraping flow' with a specific verb and resource. It distinguishes from sibling scrapeer_run_flow_and_wait by noting it returns immediately with an execution ID and is for async/manual polling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides 'USE THIS TOOL WHEN' and 'DO NOT USE' conditions, naming the alternative scrapeer_run_flow_and_wait. This gives clear guidance on when to choose this tool over its sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_run_flow_and_waitA

Execute a scraping flow and wait for results. This is the recommended way to run flows. Accepts either a flow ID (UUID) or a flow name. USE THIS TOOL WHEN: user says "run my scraper", "scrape X", "execute my flow", or you need data from a pre-built flow. DO NOT USE: to check status of an already-running flow (use scrapeer_get_run_status), to list available flows (use scrapeer_list_flows first to find the flow). Triggers a cloud run, polls until complete, and returns structured results.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowYesThe flow ID (UUID) or flow name. If a name is provided, it will be resolved to an ID. If multiple flows match the name, all matches are returned so the user can choose.
max_creditsNoMaximum credits to spend on this run.
timeout_secondsNoMaximum seconds to wait for completion. Default 300 (5 min). Set 0 to return immediately after triggering.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, non-idempotent, non-destructive operation. The description adds that it 'Triggers a cloud run, polls until complete, and returns structured results', providing behavioral context beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections, front-loaded purpose, and no fluff. Slightly long but every sentence serves a purpose, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex run-and-wait operation without an output schema, the description covers key aspects: what it triggers, how it waits, and how to disambiguate from siblings. It could detail the return structure but 'structured results' is acceptable given the explicit usage guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so schema already documents all three parameters. The description adds minimal parameter context beyond what the schema provides, mentioning flow ID/name resolution but not max_credits or timeout_seconds semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Execute' and resource 'scraping flow', clearly stating it waits for results. It distinguishes itself from siblings by being 'the recommended way' and explicitly excluding status checking and listing flows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'USE THIS TOOL WHEN' and 'DO NOT USE' sections provide explicit use cases and alternatives, naming specific sibling tools (scrapeer_get_run_status, scrapeer_list_flows). This is exactly the level of guidance needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_update_flowA
Destructive

Replace a flow's entire definition with the supplied flow JSON. WARNING: this overwrites the WHOLE flow - every block, edge, and config. PREFER scrapeer_patch_flow for incremental edits (adding a block, changing one selector). USE THIS TOOL WHEN: you need to apply a wholesale rewrite (e.g. importing a flow from elsewhere) or the change touches most of the flow at once. Always call scrapeer_get_block_catalog first to know valid block types and config keys, and consider scrapeer_validate_flow to dry-run. Optimistic concurrency: the MCP server automatically attaches the version stamp from your last scrapeer_get_flow on this flow. If the flow was modified elsewhere since, the call returns 409 - re-fetch with scrapeer_get_flow and retry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe complete replacement flow. WARNING: this overwrites the entire flow definition - prefer scrapeer_patch_flow for incremental changes.
flowYesThe flow ID (UUID) or flow name. If a name is provided, it will be resolved to an ID. If multiple flows match the name, all matches are returned so the user can choose.
baseProjectEventIDNoVersion stamp from the last scrapeer_get_flow on this flow. Auto-populated by the MCP server when you've called scrapeer_get_flow earlier in the session - only set this manually if you need to override the cached value.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only offer destructiveHint=true, but the description adds crucial context: it overwrites the WHOLE flow (every block, edge, config) and explains optimistic concurrency behavior (version stamp, 409 conflict, re-fetch retry). This substantially exceeds what annotations provide and aligns with them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense yet efficiently structured: purpose, warning, alternative, use-case, prerequisites, and concurrency are each one sentence that earns its place. No fluff, and only slightly long due to necessary safety information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, complex operation with nested objects and no output schema, the description covers all critical aspects: purpose, overwrite scope, prerequisites, conflict handling, and alternative. The combination of annotations, schema, and description leaves no major knowledge gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description reinforces the overwrite warning in data but adds no meaning beyond schema. It references block catalog for node types, but that is usage guidance rather than parameter semantics, so no uplift.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool replaces a flow's entire definition with supplied JSON, explicitly identifying the resource and action. It distinguishes itself from sibling scrapeer_patch_flow by positioning itself for wholesale rewrites, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use guidance ('USE THIS TOOL WHEN: you need to apply a wholesale rewrite...') and when-not-to ('PREFER scrapeer_patch_flow for incremental edits'). Also directs users to scrapeer_get_block_catalog for valid types and scrapeer_validate_flow for dry-run, going beyond basic alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrapeer_validate_flowA
Read-onlyIdempotent

Dry-run validate a flow without saving it. USE THIS TOOL WHEN: you've constructed a flow and want to check whether it will be accepted by the gateway before calling scrapeer_create_flow / scrapeer_update_flow. Returns { ok, errors[], warnings[] }. Errors block save; warnings are advisory. DO NOT USE: to validate a stored flow (no persistent flow lookup - pass the flow JSON directly).

ParametersJSON Schema
NameRequiredDescriptionDefault
flowYesReactFlowJSON-style flow payload - the same shape returned by scrapeer_get_flow. Use scrapeer_validate_flow to dry-run before writing.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds valuable context: it doesn't persist, returns { ok, errors[], warnings[] }, and explains that errors block save. This goes beyond the structured data without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and uses clear signposting (USE WHEN, DO NOT USE, returns). Every sentence contributes real value without fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter validation tool, the description covers what it does, when to use it, what it returns, and how errors/warnings behave. No output schema exists, but the return format is explicitly stated, making it complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with detailed descriptions for nodes, edges, and defaults. The description adds a useful cross-reference ('same shape returned by scrapeer_get_flow') and emphasizes the dry-run usage, slightly enhancing the schema's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('validate') and resource ('flow') with the scope 'dry-run without saving it', clearly distinguishing it from create, update, and run tools. It also names sibling tools for context, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'USE THIS TOOL WHEN' for pre-save checks, and 'DO NOT USE' for stored flows, with alternatives named (scrapeer_create_flow / scrapeer_update_flow). This leaves no ambiguity about when to invoke it.

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. Dates show when Glama detected each change.

  1. 15 tool updatesv0.1.1
    • First observedscrapeer_cancel_run
    • First observedscrapeer_create_flow
    • First observedscrapeer_get_account
    • First observedscrapeer_get_block_catalog
    • First observedscrapeer_get_flow
    • First observedscrapeer_get_run_results
    • First observedscrapeer_get_run_status
    • First observedscrapeer_get_run_steps
    • First observedscrapeer_list_flows
    • First observedscrapeer_list_runs
    • First observedscrapeer_patch_flow
    • First observedscrapeer_run_flow
    • First observedscrapeer_run_flow_and_wait
    • First observedscrapeer_update_flow
    • First observedscrapeer_validate_flow

TDQS

A4.5/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: flows, runs, account, and block catalog are separate. The two run tools are clearly differentiated (immediate vs wait), and update_flow vs patch_flow are distinguished by scope (full replace vs granular ops). No two tools appear to do the same thing.

Naming Consistency5/5

All tools follow a consistent scrapeer_verb_noun pattern in snake_case (list_flows, get_flow, run_flow, get_run_status, create_flow). Even compound names like run_flow_and_wait and get_block_catalog maintain the pattern, making the set highly predictable.

Tool Count5/5

15 tools is within the ideal 3-15 range and each tool earns its place by covering a distinct aspect of flow and run lifecycle management. The count feels well-scoped for a scraping platform, not bloated or thin.

Completeness4/5

The tool set covers flow management (list, get, create, update, patch, validate) and run management (run, wait, status, results, steps, list, cancel) plus account and block catalog. The main gap is the lack of a delete_flow tool, but core workflows are otherwise well covered.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Scrapeer/scrapeer-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server