Skip to main content
Glama
crawlbrulee

@crawlbrulee/mcp

Official
by crawlbrulee

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CRAWLBRULEE_API_KEYYesapi key sent as Authorization: Bearer …. get one at https://crawlbrulee.com.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
scrapeA

Fetch a single URL via the crawlbrulee scraping API and return the requested content (markdown, cleaned HTML, raw HTML, links, images, screenshot, page metadata in metadata). Use this for one-shot page extraction. For full-site discovery use the map tool first. Check page_status_code before you trust the content: it is the HTTP status the site answered with for the final page. A page the site served is a successful result whatever its status, so a 404 or 503 page comes back with its content, not as an error. A 404 means the markdown is the site's "not found" page, not the page you asked for. 2xx and 4xx pages are billed, except 403, 407, 408, 429 and 451; 5xx pages are never billed. If the site cannot be reached at all the tool returns a target_unreachable error (HTTP 502, not billed): retry later or check the URL. Screenshot URLs in the response are signed download links — the agent can fetch them when needed. The response also carries response_meta.usage: total_credit_cost = engine_credit_cost × proxy_multiplier + screenshot_slicing_credit_cost, plus engine and proxy (the resolved tier — never auto). engine is the billed engine (http, browser, screenshot, cache); a cache hit is represented by engine: "cache". credits and screenshot_slices are the old, deprecated names of total_credit_cost and screenshot_slicing_credit_cost. Extraction is capped per page: 30,000 links, 10,000 inline images and 10,000,000 characters of HTML. A page past a cap is truncated rather than refused, and the response warnings array names which one (links_truncated, inline_images_truncated, raw_html_truncated) — so treat that output as incomplete. Use cleanup to control what is removed before any output is built: ads_and_popups (on by default) drops ads, cookie banners and chat widgets, and exclude_selectors removes anything else. It shapes markdown, cleaned_html, links, images and the screenshot, and NEVER raw_html — so request raw_html when you need the page exactly as it arrived. warnings also reports a section whose extraction failed outright (links_unavailable, inline_images_unavailable, metadata_unavailable): that field comes back omitted or empty while the rest of the scrape succeeded, so do NOT conclude the page had no links/images/metadata — re-run the scrape instead. An empty field with no such warning does mean the page had none.

scrape_asyncA

Submit a scrape job to run ASYNCHRONOUSLY and return a job_id immediately, instead of holding the connection open. Use this for long-running scrapes (heavy JS rendering, full-page screenshots of long pages) — for a quick one-shot fetch prefer the synchronous scrape tool, which blocks and returns the page directly. Poll the job with scrape_status and fetch the page with scrape_result once done. Optionally attach a per-job completion webhook: we deliver a single signed scrape.complete POST to your endpoint when the job finishes (HTTPS required in production), and echoes your opaque webhook.metadata back in the delivery (under data.metadata, alongside data.page_status_code (on success) and data.response_meta.usage).

scrape_statusA

Look up the current lifecycle status of an async scrape job submitted via scrape_async. Returns the job state (pending, running, done, failed), with an error message when it failed and a response_meta.usage block (total_credit_cost and its parts, billed engine, resolved proxy tier) once it is done. A job whose page the site served ends done even when that page is a 404 or 503 — read page_status_code in the result. A job that could not reach the site at all ends failed (the error text is a general message, not the reason) and is not billed; retry later or check the url. Poll this until the status is done, then call scrape_result to fetch the page. If you registered a completion webhook on submit you can skip polling and react to the delivery instead.

scrape_resultA

Fetch the extracted content of a completed async scrape job (the same result shape as the synchronous scrape tool: markdown, cleaned HTML, raw HTML, links, images, screenshot, page metadata in metadata, and response_meta.usage). Errors if the job is still pending/running — check scrape_status first (status done) before calling this. Check page_status_code before you trust the content: it is the HTTP status the site answered with for the final page. A page the site served is a successful result whatever its status, so a 404 or 503 page comes back with its content, not as an error. A 404 means the markdown is the site's "not found" page, not the page you asked for. 2xx and 4xx pages are billed, except 403, 407, 408, 429 and 451; 5xx pages are never billed. Screenshot URLs are signed download links.

mapA

Build (or fetch a cached) link-map for a website by combining sitemap discovery with homepage link extraction. Returns paginated lists of discovered URLs, each item just { url }. Filterable by link type (internal / external / subdomain). Use this to enumerate a site before scraping selected pages. max_urls (default 5000, max 100000) is a discovery budget, not a trim at the end: discovery stops as soon as that many URLs are found, so a smaller value is a faster, cheaper crawl. A map stopped that way returns exactly max_urls links with response_capped false — the signal that the site has more is response_meta.truncation.discovery_cap_reason. When that is "max_urls", ask again with a higher max_urls to get more; "unread_files" means a sitemap file could not be read this time and is often temporary, so asking again later can return more; "time", "file_budget", "depth" and "file_size" mean the site itself is big, slow or deep and a retry will not help. discovery_capped says discovery stopped early, sitemaps_skipped how many sitemap files were skipped or only partly read. limit (default 5000, max 10000) only pages the answer. Returned URLs are normalized the same way scrape normalizes its returned url, so map-then-scrape stays on one host. Results are ordered with the most useful links first. The response carries response_meta.usage: total_credit_cost = engine_credit_cost × proxy_multiplier, plus engine and proxy (the resolved tier, never auto); credits is the old, deprecated name of total_credit_cost. Map has no screenshot slicing and no page_status_code: it reads many files, not one page. A map that found nothing because the site answered only with statuses we don't bill (a 5xx, for example), or not at all, is empty and free. If the site cannot be reached, the tool can return a target_unreachable error (HTTP 502, not billed): retry later or check the URL.

usageA

Return the current billing-cycle usage for the authenticated organization: total / used / available credits, used quota percent, max concurrency, and cycle reset time. Call this before launching large scrape jobs to confirm available credit.

whoamiA

Return the organization name, token name, and truncated token preview for the API key currently configured on the MCP server. Useful for confirming which account is in use before performing credit-consuming operations.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: scrape (sync), scrape_async (async submit), scrape_status (poll), scrape_result (fetch result), map (site discovery), whoami (account identity), and usage (billing). The async pipeline tools are cleanly separated by their lifecycle stage, and no two tools could be reasonably confused.

Naming Consistency4/5

All names use snake_case and the scrape family shares a consistent prefix (scrape, scrape_async, scrape_status, scrape_result). Minor deviation exists because some tools are noun-like (usage, status) while others are verb-like (scrape, map), but overall the pattern is predictable.

Tool Count5/5

Seven tools is well-scoped for a scraping/crawling API, covering synchronous scraping, asynchronous job management, site mapping, and account/billing introspection. Each tool earns its place and the set is neither bloated nor thin.

Completeness4/5

The surface covers the core lifecycle: single-page scrape, async submit/poll/fetch, site map, and account usage. A minor gap is the lack of a batch or whole-site crawl operation that would let an agent scrape multiple discovered URLs in one call, though map-then-scrape workflows are workable.

Maintenance

ActivityActive
ResponsivenessNo issues