All docs
On this page

https://leancrawl.com/mcp is a stateless Streamable HTTP MCP server that exposes the whole API as tools — backed by the public API itself.

Setup

claude mcp add --transport http leancrawl https://leancrawl.com/mcp \
  -H "Authorization: Bearer ac-…"

Other clients (Cursor, Windsurf, …) accept the equivalent JSON config:

{ "leancrawl": { "url": "https://leancrawl.com/mcp",
    "headers": { "Authorization": "Bearer ac-…" } } }

Tools (26)

Every response reports its credit_cost; rates are listed in Credits. Check account_usage for balance before large crawls.

Capture

ToolUse
markdownRead a page as clean Markdown — default for LLM content
htmlFully rendered HTML after JS — only when you need raw markup
linksAll links on one page (url + anchor text)
mapDiscover site URLs without fetching — for URL discovery, never crawl_start
extractAI structured extraction → JSON (schema or prompt)
screenshotPage screenshot, returned inline as an image block
pdfPage rendered to PDF, returned inline as a resource block

Crawl

ToolUse
crawl_startAsync multi-page crawl → job_id; webhook pushes crawl.* events once to a user-provided URL
crawl_statusPoll status/progress; include_pages returns fetched pages on terminal states
crawl_cancelStop a running crawl — billed only for pages already fetched
crawl_listList jobs — recover a lost job_id

Monitor

ToolUse
monitor_createWatch a URL for changes every interval_minutes — recurring, NOT for one-off reads
monitor_listList monitors; find a monitor_id
monitor_getDetail + include_checks history; changed rows inline a diff excerpt
monitor_updatePause/resume, retune cadence, rename, ignore_patterns, webhook_id, wait_for
monitor_runTrigger one check now — result lands in check history
monitor_snapshotFull normalized markdown of one snapshot (latest ~10 kept)
monitor_deleteDelete monitor + check history + snapshots — irreversible

Notification channels

ToolUse
channel_listList notification channels — secrets are never shown
channel_createCreate a channel (slack/discord/telegram/feishu/wecom/dingtalk/email/custom) — custom returns signing_secret exactly once
channel_updateChange url/events/status/config/secrets — id and channel_type are kept
channel_rotateNew signing_secret in place (custom only) — shown once; old one dies immediately
channel_deliveriesLatest 50 delivery attempts — debug missing events
channel_resendRe-post a failed/dead delivery
channel_deleteDelete a channel — deliveries kept, monitors auto-detached
channel_testSend a notification.test event — verify wiring (10/hour per team)

Account

ToolUse
account_usageBalance, quota, in-flight reservations, this key's 30-day spend

screenshot/pdf artifacts are fetched server-side with your key and returned as image/resource blocks — agents never need to handle Bearer-auth URLs.

Failure semantics

  • initialize/tools/list work without a key; a missing/invalid key surfaces as an isError tool result with actionable text — never an HTTP 401, so MCP clients do not fall into OAuth discovery.
  • Every error message says whether the call was billed.

OAuth-based auth is not supported in this iteration.

monitor_create is the only recurring-spend tool: every check bills 1 credit forever until you monitor_update status="paused" or monitor_delete. It is not for one-off reads — use markdown for that. Agents cannot receive webhooks, so results arrive by polling monitor_get with include_checks=true; the first check runs at creation. monitor_run forces an immediate check (1 credit) and does not shift the schedule.