Skip to main content
Glama
diffbot-mcp

diffbot-mcp

Official

Crawl Website

crawl
Destructive

Extracts all pages from a seed URL into markdown or typed JSON for site-wide page discovery and structured data collection through background jobs.

Instructions

Crawls a website from a seed URL and extracts every page it finds into markdown or typed JSON. Prefer when a task needs to discover a catalog of pages from an entire site, or deep search a site for structured data (e.g. all product inventory, all press releases, PDFs). Crawls run in the background. start returns a job name, poll status until is_running is false, then read results or urls. list and delete manage jobs. API docs: https://www.diffbot.com/docs/crawl/

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "crawl"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNoSeed URL (start)
hopsNoLink depth from seed
actionNostart needs url; others need job_namestart
formatNo`markdown` for readable text; `json` for typed fields such as title, author, date, price, imagesmarkdown
offsetNoRows to skip (urls, results)
job_nameNoJob handle; generated on start if omitted
page_typeNoOverride auto-detection; rarely needed
crawl_delayNoSeconds between requests per domain
max_resultsNoMax rows (urls, results)
obey_robotsNoHonor robots.txt
use_proxiesNoCrawl with Diffbot proxy; try when site blocks the crawler
max_to_crawlNoMax pages visited
custom_headersNoExtra HTTP headers, newline separated
max_to_processNoMax pages extracted
restrict_domainNoStay on the seed's domain
url_crawl_patternNoOnly visit URLs containing this
url_process_patternNoOnly extract URLs containing this, e.g. /blog/

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, openWorldHint=true, and non-idempotent; the description adds behavior the annotations cannot convey, namely that crawls run asynchronously as background jobs with a start/poll/read lifecycle and that deletion is available. It does not state what `delete` permanently removes or note cost/quota implications, so it is strong but not complete.

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 purpose and usage guidance are front-loaded, followed by the job lifecycle, then a docs link — a sensible order with no filler. The action enumeration mildly repeats the schema enum, but it earns its place by conveying the order of operations.

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?

With 17 optional parameters, an output schema, and destructive annotations, the description covers the essential operational model (async jobs, polling, result retrieval, delete) and points to external docs. The remaining gap is the absence of any warning about what `delete` destroys or about crawl scope/cost limits, which matters for a destructive open-world tool.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds sequencing meaning the schema does not: `start` returns a job name, `status` is polled until is_running is false, then `results`/`urls` are read, and `list`/`delete` are for job management. That materially clarifies how the `action` enum should be driven, though individual numeric knobs (hops, max_to_crawl, crawl_delay) are left entirely to the schema.

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

Purpose4/5

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

The description opens with a specific verb and resource ('Crawls a website from a seed URL') and names the output forms ('markdown or typed JSON'). It distinguishes itself by scope ('an entire site' vs. single-page work) without naming a specific sibling tool, so it is clear but not fully differentiated by name.

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

Usage Guidelines4/5

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

It gives a concrete preference rule: use this when a task needs to discover a catalog of pages from a whole site or deep-search a site for structured data, with examples (product inventory, press releases, PDFs). No explicit when-not condition or named alternative (e.g. extract or search_web) is provided, so it stops short of a full routing rule.

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