Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Spicrawl

REMOTE · MCP.SPICRAWL.COM · 2 COMPONENTS

Web scraping MCP server: any URL to Markdown or JSON, with JavaScript rendering and batch jobs.

+42 this week 75 Trust /100

Last scanned (3 hours ago)

Scores higher than 68% of remote servers

Reachable. Last reached 17 Oct 2026.

Category Web Scraping

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
Transport & Reachability100
Schema Quality & AI Usability65
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5555 tokens (~231/item across 24 items; 24 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management13
  • Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 25 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Oct 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 13 Oct 26 +40
    • Transport: unverified → pass ▲ security
    • Injection markers: unverified → pass ▲ security
    • First check of Judged manipulation: pass security
    • Authorization: Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. security
    • MCP protocol: unverified → pass ▲ functional
    • Tool coverage: unverified → 100 ▲ functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 100 functional
    • First check of Tool coverage: 100 functional
    • First check of Tool coverage: 100 functional
  • 10 Oct 26 33

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 17 Oct 2026 · Probed https://mcp.spicrawl.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=spicrawl.com CN=YR1,O=Let's Encrypt,C=US 26 Sept 2026 25 Dec 2026 RSA 2048 SHA256-RSA 64d3405a442085baab8eb025b9470395e49
SANs: *.spicrawl.com, spicrawl.com
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.spicrawl.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
spicrawl.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Challenged, unverified

The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.

Result Challenged, unverified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer realm="spicrawl-mcp"

Bearer realm="spicrawl-mcp"

Protected resource metadata

Retrieved No
Problem no_resource_metadata

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.spicrawl.com/mcp Verified 200
http (plaintext) http://mcp.spicrawl.com/mcp HTTPS enforced 301 https://mcp.spicrawl.com/mcp
MCP tools · 24 exposed · ~5,503 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
spicrawl_batch_add_items ~397

Append URLs to a batch job that was submitted with `open: true`. Same item vocabulary as `spicrawl_batch_submit` (EITHER `urls` or `items`, not both, plus shared settings for these new items). Fails with CONFLICT if the job is closed or finished. Not idempotent: calling twice adds the URLs twice. Returns `{ job, items_added, items_dispatched }`.

NameTypeReqDescription
block_resourcesarray–Resource types to block while rendering, e.g. ["image","font","media"].
custom_headersobject–Extra request headers sent with every URL.
formatstring–Output format for every item (`response_format`). spicrawl_batch_submit defaults to 'markdown', the same as spicrawl_scrape; an item's own `response_format` overrides it.
itemsarray–Long form: one /v1/scrape request object per item. Besides `url` and `external_id`, any /v1/scrape field (e.g. `js_render`, `wait_for`, `response_format`) overrides the shared setting for that item o…
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
main_content_onlyboolean–Strip each page to its main article.
max_costinteger–Ceiling in credits for ONE item (not the whole job — see credit_budget).
renderboolean–Render every URL with a browser (`js_render`).
urlsarray–Shorthand: URLs scraped with the shared settings and no per-item overrides. Mutually exclusive with `items`.
waitinteger–Milliseconds to wait after load (rendered scrapes).
wait_forstring–CSS selector to wait for before capturing (rendered scrapes).
NameTypeReqDescription
items_addednumber–Items written to the job.
items_dispatchednumber–Of those, how many reached the dispatch queue now; do not re-add the rest.
jobobject–The job as it stands after the call.

No examples provided.

spicrawl_batch_cancel ~103

Cancel a batch job: items not yet started are cancelled and will never run; items already finished keep their results; items already running finish first, so the job comes back `cancelling` and moves to `cancelled` when they drain. Cannot be undone — resubmit to run the URLs again. Returns the job object.

NameTypeReqDescription
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
NameTypeReqDescription
cancel_requested_atstring|null–ISO-8601 time a cancel was accepted.
concurrencynumber–Effective per-job concurrency after the server's clamping.
error_codestring|null–Machine code of a job-level failure.
error_messagestring|null–Human-readable job-level failure reason.
estimated_creditsnumber–Credits reserved at submission (a hold, not a charge; compare with progress.credits_charged).
estimated_credits_micronumber–Same as estimated_credits in micro-credits.
failure_thresholdnumber|null–Failed-item count that aborts the job, when set.
finished_atstring|null–ISO-8601 time the job reached a terminal status.
idstringyesJob id. Pass it as `job_id` to the other spicrawl_batch_* tools.
max_attemptsnumber–Effective attempts per item.
namestring|null–The label given at submission, if any.
openboolean|null–True while the job accepts appended items (it will not complete until closed).
params––The job-level scrape settings as stored.
prioritynumber–Effective scheduling priority.
progressobject–Live item counters and the credits charged so far.
project_idstring–Project the API key belongs to.
results_expire_atstring|null–ISO-8601 deadline after which results answer 410 Gone.
results_urlstring–API path of the job's results: /v1/batch/{id}/results.
started_atstring|null–ISO-8601 time the first item started.
statusstring–Lifecycle: queued, running, paused, cancelling, completed, failed or cancelled. Keep polling while queued/running/paused/cancelling; stop at completed, failed or cancelled.
status_urlstring–API path to poll for this job: /v1/batch/{id}.
submitted_atstring–ISO-8601 time the job was accepted.
total_itemsnumber–Number of items in the job.
warnings––Decisions made on the caller's behalf at submission (a clamped concurrency, items not yet queued).

No examples provided.

spicrawl_batch_close ~68

Stop an open batch job accepting items, so it completes once its queued work drains. Idempotent (closing a closed job succeeds). Returns the job object.

NameTypeReqDescription
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
NameTypeReqDescription
cancel_requested_atstring|null–ISO-8601 time a cancel was accepted.
concurrencynumber–Effective per-job concurrency after the server's clamping.
error_codestring|null–Machine code of a job-level failure.
error_messagestring|null–Human-readable job-level failure reason.
estimated_creditsnumber–Credits reserved at submission (a hold, not a charge; compare with progress.credits_charged).
estimated_credits_micronumber–Same as estimated_credits in micro-credits.
failure_thresholdnumber|null–Failed-item count that aborts the job, when set.
finished_atstring|null–ISO-8601 time the job reached a terminal status.
idstringyesJob id. Pass it as `job_id` to the other spicrawl_batch_* tools.
max_attemptsnumber–Effective attempts per item.
namestring|null–The label given at submission, if any.
openboolean|null–True while the job accepts appended items (it will not complete until closed).
params––The job-level scrape settings as stored.
prioritynumber–Effective scheduling priority.
progressobject–Live item counters and the credits charged so far.
project_idstring–Project the API key belongs to.
results_expire_atstring|null–ISO-8601 deadline after which results answer 410 Gone.
results_urlstring–API path of the job's results: /v1/batch/{id}/results.
started_atstring|null–ISO-8601 time the first item started.
statusstring–Lifecycle: queued, running, paused, cancelling, completed, failed or cancelled. Keep polling while queued/running/paused/cancelling; stop at completed, failed or cancelled.
status_urlstring–API path to poll for this job: /v1/batch/{id}.
submitted_atstring–ISO-8601 time the job was accepted.
total_itemsnumber–Number of items in the job.
warnings––Decisions made on the caller's behalf at submission (a clamped concurrency, items not yet queued).

No examples provided.

spicrawl_batch_list ~101

List this API key's project's batch jobs, newest first, with status and progress. Returns `{ batches: [...], next_cursor? }`; pass `next_cursor` back as `cursor` for the next page.

NameTypeReqDescription
cursorstring–`next_cursor` from a previous page, verbatim.
limitinteger–Page size (default 50, max 200).
statusstring–Only jobs in this status.
NameTypeReqDescription
batchesarrayyesJobs, newest first (empty when there are none).
next_cursorstring|null–Pass back as `cursor` for the next page; absent on the last page.

No examples provided.

spicrawl_batch_results ~194

Return a page of FINISHED items of a batch job (one record per item: seq, url, external_id, status, error, and content, or a `result_url` API path (GET /v1/batch/{id}/tasks/{seq}/content, same key) for large bodies). Unfinished items are not listed yet. Returns `{ results: [...], next_cursor? }`; pass `next_cursor` back as `cursor` for the next page. Results expire after the job's retention window (410 Gone).

NameTypeReqDescription
cursorstring–`next_cursor` from a previous page, verbatim.
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
limitinteger–Page size (default 500, max 5000).
statusstring–Only items that finished with this status.
NameTypeReqDescription
next_cursorstring|null–Pass back as `cursor` for the next page; absent on the last page.
resultsarrayyesFinished items of the job, in seq order.

No examples provided.

spicrawl_batch_retry ~78

Re-queue every FAILED item of a batch job so it runs again (succeeded items are untouched; a job with no failures is returned unchanged). Returns `{ job, items_reset, items_dispatched }`.

NameTypeReqDescription
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
NameTypeReqDescription
items_dispatchednumber–Of those, how many reached the dispatch queue now; the rest are recovered automatically.
items_resetnumber–Failed items reset to queued (0 means nothing had failed).
jobobject–The job as it stands after the call.

No examples provided.

spicrawl_batch_status ~91

Return one batch job with its status and progress (total/completed/succeeded/failed/remaining, credits charged). Poll this after `spicrawl_batch_submit`; once status is `completed`, `failed` or `cancelled`, read `spicrawl_batch_results`.

NameTypeReqDescription
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
NameTypeReqDescription
cancel_requested_atstring|null–ISO-8601 time a cancel was accepted.
concurrencynumber–Effective per-job concurrency after the server's clamping.
error_codestring|null–Machine code of a job-level failure.
error_messagestring|null–Human-readable job-level failure reason.
estimated_creditsnumber–Credits reserved at submission (a hold, not a charge; compare with progress.credits_charged).
estimated_credits_micronumber–Same as estimated_credits in micro-credits.
failure_thresholdnumber|null–Failed-item count that aborts the job, when set.
finished_atstring|null–ISO-8601 time the job reached a terminal status.
idstringyesJob id. Pass it as `job_id` to the other spicrawl_batch_* tools.
max_attemptsnumber–Effective attempts per item.
namestring|null–The label given at submission, if any.
openboolean|null–True while the job accepts appended items (it will not complete until closed).
params––The job-level scrape settings as stored.
prioritynumber–Effective scheduling priority.
progressobject–Live item counters and the credits charged so far.
project_idstring–Project the API key belongs to.
results_expire_atstring|null–ISO-8601 deadline after which results answer 410 Gone.
results_urlstring–API path of the job's results: /v1/batch/{id}/results.
started_atstring|null–ISO-8601 time the first item started.
statusstring–Lifecycle: queued, running, paused, cancelling, completed, failed or cancelled. Keep polling while queued/running/paused/cancelling; stop at completed, failed or cancelled.
status_urlstring–API path to poll for this job: /v1/batch/{id}.
submitted_atstring–ISO-8601 time the job was accepted.
total_itemsnumber–Number of items in the job.
warnings––Decisions made on the caller's behalf at submission (a clamped concurrency, items not yet queued).

No examples provided.

spicrawl_batch_submit ~604

Submit many URLs to be scraped as one asynchronous job, with shared settings applied to every URL. Give EITHER `urls` or `items`, not both (at least one URL, unless `open` is true). Returns the job object (id, status, estimated_credits, progress). Poll with `spicrawl_batch_status`, read with `spicrawl_batch_results` or `spicrawl_batch_task_content`. Use this instead of many `spicrawl_scrape` calls when you have tens or thousands of URLs. Set `open: true` to keep the job accepting more URLs via `spicrawl_batch_add_items`; an open job never finishes until you call `spicrawl_batch_close`.

NameTypeReqDescription
block_resourcesarray–Resource types to block while rendering, e.g. ["image","font","media"].
concurrencyinteger–Max items in flight at once for this job (may be capped by the server; see warnings).
credit_budgetinteger–Ceiling on the WHOLE job, in credits; the run aborts when it would exceed this.
custom_headersobject–Extra request headers sent with every URL.
failure_thresholdinteger–Abort the job once this many items have failed.
formatstring–Output format for every item (`response_format`). spicrawl_batch_submit defaults to 'markdown', the same as spicrawl_scrape; an item's own `response_format` overrides it.
itemsarray–Long form: one /v1/scrape request object per item. Besides `url` and `external_id`, any /v1/scrape field (e.g. `js_render`, `wait_for`, `response_format`) overrides the shared setting for that item o…
main_content_onlyboolean–Strip each page to its main article.
max_attemptsinteger–Per-item retry attempts on failure.
max_costinteger–Ceiling in credits for ONE item (not the whole job — see credit_budget).
namestring–A human label for the job.
openboolean–Keep the job accepting items after submission (append with spicrawl_batch_add_items, finish with spicrawl_batch_close).
priorityinteger–Scheduling priority of the job relative to your other jobs.
renderboolean–Render every URL with a browser (`js_render`).
urlsarray–Shorthand: URLs scraped with the shared settings and no per-item overrides. Mutually exclusive with `items`.
waitinteger–Milliseconds to wait after load (rendered scrapes).
wait_forstring–CSS selector to wait for before capturing (rendered scrapes).
webhook_endpoint_idstring–Id of a registered webhook endpoint notified (with the job object) when the job completes.
NameTypeReqDescription
cancel_requested_atstring|null–ISO-8601 time a cancel was accepted.
concurrencynumber–Effective per-job concurrency after the server's clamping.
error_codestring|null–Machine code of a job-level failure.
error_messagestring|null–Human-readable job-level failure reason.
estimated_creditsnumber–Credits reserved at submission (a hold, not a charge; compare with progress.credits_charged).
estimated_credits_micronumber–Same as estimated_credits in micro-credits.
failure_thresholdnumber|null–Failed-item count that aborts the job, when set.
finished_atstring|null–ISO-8601 time the job reached a terminal status.
idstringyesJob id. Pass it as `job_id` to the other spicrawl_batch_* tools.
max_attemptsnumber–Effective attempts per item.
namestring|null–The label given at submission, if any.
openboolean|null–True while the job accepts appended items (it will not complete until closed).
params––The job-level scrape settings as stored.
prioritynumber–Effective scheduling priority.
progressobject–Live item counters and the credits charged so far.
project_idstring–Project the API key belongs to.
results_expire_atstring|null–ISO-8601 deadline after which results answer 410 Gone.
results_urlstring–API path of the job's results: /v1/batch/{id}/results.
started_atstring|null–ISO-8601 time the first item started.
statusstring–Lifecycle: queued, running, paused, cancelling, completed, failed or cancelled. Keep polling while queued/running/paused/cancelling; stop at completed, failed or cancelled.
status_urlstring–API path to poll for this job: /v1/batch/{id}.
submitted_atstring–ISO-8601 time the job was accepted.
total_itemsnumber–Number of items in the job.
warnings––Decisions made on the caller's behalf at submission (a clamped concurrency, items not yet queued).

No examples provided.

spicrawl_batch_task_content ~144

Return the full payload one item of a batch job produced, by its `seq` (items are numbered from 0 in submission order). Cheaper than paging results when you need one URL's output. A CONFLICT error means either the item has not finished yet (poll `spicrawl_batch_status` and ask again) or it finished as failed (it will never produce content; the message says which). NOT_FOUND means no such seq.

NameTypeReqDescription
job_idstringyesThe batch job id returned by spicrawl_batch_submit or spicrawl_batch_list.
seqintegeryesThe item's sequence number (0-based, submission order).
NameTypeReqDescription
content––The item's document when it is text (markdown, text or html) or any non-object JSON value. An item whose payload is a JSON object is returned as that object's own fields instead.

No examples provided.

spicrawl_docs_index ~73

The docs' llms.txt: every Spicrawl documentation page with its title, a one-line description and its Markdown URL. Use it to find the right page when a search does not, or to get an overview of what is documented; read a page with spicrawl_docs_read. No parameters.

Input schema present but exposes no named parameters.

NameTypeReqDescription
contentstringyesThe index (llms.txt): one line per page with its title, description and Markdown URL.
truncatedbooleanyesTrue when the content was cut at the size cap; the content says so at its end.
urlstringyesWhere the document lives on the docs site.

No examples provided.

spicrawl_docs_read ~183

Fetches one Spicrawl documentation page as Markdown. `path` may be a page path (`guides/anti-bot`), a docs URL from spicrawl_docs_search (url or md_url), or either with a `#anchor` (the whole page is returned; the anchor names the section to look at). Only pages on the Spicrawl docs (https://docs.spicrawl.com/docs) can be read. Pages over 60000 characters are truncated, and the text says so. Don't know the path? Use spicrawl_docs_search, or spicrawl_docs_index (llms.txt) for the list of every page.

NameTypeReqDescription
pathstringyesPage path (`guides/anti-bot`, `errors#AUTH_INVALID_KEY`) or a full docs URL, as returned by spicrawl_docs_search.
NameTypeReqDescription
contentstringyesThe document as Markdown.
md_urlstring–The Markdown source it was read from.
sectionstring–The #anchor that was asked for, without the #. The whole page is returned.
titlestring–The page's first heading, when it has one.
truncatedbooleanyesTrue when the content was cut at the size cap; the content says so at its end.
urlstringyesWhere the document lives on the docs site.

No examples provided.

spicrawl_docs_search ~211

Full-text search over the Spicrawl documentation (guides, API reference, errors, limits). Use it to look up a parameter name, value or combination for a spicrawl_* tool, or to explain an error a spicrawl_* tool returned: search the error code itself (e.g. `ERR::UPSTREAM::CHALLENGE`) and the result also carries a direct link to that code's entry on the errors page. Returns the best-matching pages, each with its title, the matching sections (heading, a short snippet, URL) and md_url; then call spicrawl_docs_read with a page's md_url or url to read it in full.

NameTypeReqDescription
limitinteger–Maximum pages to return, 1-20. Default 8.
querystringyesWhat to look for: a feature, parameter, error code or question, e.g. 'wait_for selector' or 'ERR::AUTH::INSUFFICIENT_SCOPE'.
NameTypeReqDescription
error_codeobject–Present when the query is an error code (ERR::AREA::NAME).
hintstring–What to try when there are no results.
querystringyesThe search text, as sent.
resultsarrayyesMatching pages, most relevant first. Empty when nothing matched.

No examples provided.

spicrawl_request_get ~172

The full log record of one past API call by its request id. Every response carries its id in the X-Request-Id header (and error bodies carry it too), so this is the tool for debugging a failed or slow scrape: it shows status, error_code/error_detail, attempts, the engine and proxy (tier, country, provider, sticky) actually used, whether and how the target blocked it (vendor/signal/rule), per-stage latency spans and credits charged. Returns not_found both for unknown ids and for ones older than your retention window, and for another project's request unless your key has the `read` scope.

NameTypeReqDescription
idstringyesThe request id (a ULID, from X-Request-Id or a spicrawl_requests_list row's `id`).
NameTypeReqDescription
attemptsnumber–Dispatch attempts including retries.
blockedobject–Present only when a bot challenge was detected.
bytes_innumber––
bytes_outnumber––
created_atstring–When the request arrived, RFC 3339 UTC.
credits_micronumber–Credits charged in micro-credits (1 credit = 1000000); 0 unless success.
enginestring–The rendering tier that served it: fetch, js or browser. Absent when refused before a tier was chosen.
error_codestring–The problem code the caller got, e.g. ERR::UPSTREAM::CHALLENGE. Absent on success.
error_detailstring––
featuresobject–Features the request used; free-form.
http_statusnumber–The target's HTTP status; absent when no response was received.
idstringyesThe request id (X-Request-Id).
project_idstring––
proxyobject–What proxy was asked for versus what served. Never an exit IP or credentials.
proxy_bytesnumber––
spansobject–Latency in milliseconds per stage; null means not measured. Stages do not sum to total_ms.
statusstring–Terminal outcome: success, failed, timeout, blocked, rejected or cancelled. Only success is charged.
urlstring–The target URL as requested.
url_hoststring––

No examples provided.

spicrawl_requests_list ~320

Recent API calls in your key's project, newest first, each with project_id, status, engine, http_status, error_code/error_detail, attempts, URL, proxy used, latency spans (queue/engine/upstream/total ms), block detection and credits. Use it to find failing calls (only_errors=true) or to spot patterns across a target. all_projects=true lists every project in your organization instead (needs a key with the `read` scope; 403 ERR::AUTH::INSUFFICIENT_SCOPE otherwise). Records only exist within the retention window reported in page.retention_hours / page.retained_since; an empty page means nothing in that window. Paginate by passing page.next_before and page.next_before_id back as before and before_id while page.has_more is true, keeping all_projects the same. Not billing-grade: use spicrawl_usage for totals.

NameTypeReqDescription
all_projectsboolean–Every project in your organization, not just the key's own. Needs the `read` scope. Keep it the same across pages.
beforestring–Cursor: RFC 3339 timestamp, exactly as returned in page.next_before. Pass together with before_id.
before_idstring–Cursor: request id, exactly as returned in page.next_before_id.
limitinteger–Rows per page, 1-200. Default 50.
only_errorsboolean–Only requests whose status is anything other than 'success'.
statusstring–Only requests with this outcome.
NameTypeReqDescription
dataarray–Request records, newest first. Can be shorter than limit while page.has_more is true.
pageobject–Paging cursor and the retention window.

No examples provided.

spicrawl_scrape ~1,403

Retrieve a web page and return its content as markdown (default), text, HTML, a JSON envelope, or a printed PDF. Handles the fetch vs. browser decision, charset decoding, and PDF-to-text for you. Optionally extract structured data with CSS selectors (`extract`) or `autoparse`, return discovered `links`, take a `screenshot`, or scope the DOM with `include_tags`/`exclude_tags`. Each successful call is billed in credits (a failure costs 0). Results are cached by default, and a cache hit is billed like the fetch that stored it (the cache saves time, not credits); set `cache=false` for time-sensitive pages. With the defaults it only reads the page. A `method` other than GET, HEAD or OPTIONS, and the `actions` that click, fill or run scripts on the page, can change state on the target site: set them only when the user asks for that. For markdown, text and HTML it returns `{ content }`. With `format: "json"`, or when `extract`, `autoparse`, `links`, `screenshot` or `network_capture` is set, it returns the JSON envelope: `content`, the site's `status`, `credits`, `engine` (the rendering tier: `fetch`, `js` or `browser`), `warnings` and `data` for extraction. Screenshots come back as image content blocks; each `screenshots` entry in the JSON keeps its metadata and says which block holds it. A PDF comes back as a resource content block, with its size, the rendering tier and the credits in the JSON.

NameTypeReqDescription
actionsarray–Browser steps run in order before capture (render only). Each step is {type, ...fields}. Examples: [{"type":"click","selector":"#load-more"},{"type":"wait_for","selector":".item:nth-child(20)","timeo…
allowed_status_codesarray–Target statuses to treat as success instead of an error (e.g. [404] to capture a not-found page).
autoparseboolean–Return the structured data the page publishes about itself (JSON-LD, OpenGraph, Twitter Card, microdata). No selectors; survives redesigns.
block_resourcesarray–Resource types the browser should not load, e.g. ["fonts","media","images"] (render only). Faster and cheaper.
cacheboolean–Serve a recent cached result if fresh (on by default). A hit is billed at the same price as the fetch that stored it: the cache saves time, not credits. Set false only when you need live data.
cache_ttlinteger–Max age in seconds of a cached copy to accept (0 forces a fresh fetch; capped at 48h). Freshness only: a hit is billed like a fetch.
custom_headersobject–Extra request headers sent to the target, e.g. {"Accept-Language":"de"}.
exclude_tagsarray–CSS selectors to remove (e.g. ['nav','.ad','#cookie']).
extractobject–Selector-based extraction: a map of field -> CSS/XPath selector, e.g. {"title":"h1","price":".amount"}. Returns structured `data`. Precise and cheap when you know the page structure.
formatstring–Output format. 'markdown' (default) is best for feeding to an LLM; 'html' returns the raw document; 'json' returns a structured envelope; 'pdf' prints the page in a full browser (routed there for you…
impersonateboolean–Fetch tier only: present a real browser's TLS/JA3 + HTTP/2 fingerprint to clear passive bot gates. On by default; set false to send a plain client handshake.
include_tagsarray–CSS selectors to KEEP (everything else is dropped).
linksboolean–Also return the page's discovered links as an absolute, de-duplicated list.
main_content_onlyboolean–Strip the page to its main article, dropping nav/footer/aside. Defaults on for markdown.
max_costinteger–Refuse (rather than run) a request that would cost more than this many credits.
methodstring–HTTP method sent to the target (default GET; no request body can be sent). Anything but GET, HEAD or OPTIONS can change state on the target site: use it only when the user asks.
modestring–Routing mode. `auto` lets the platform escalate fetch -> browser as needed, billing only the rung that worked.
network_captureobject–Record the API responses the PAGE fetched while rendering — often cleaner JSON than the DOM. Render only.
original_statusboolean–Return the target's own HTTP status instead of 200 for a successful scrape.
parse_pdfboolean–Turn a PDF target into text/markdown (default true). false refuses PDFs.
proxystring–Your own proxy URL to egress through. Takes precedence over the pool; no surcharge.
proxy_verifyboolean–Verify `proxy` is reachable before using it.
renderboolean–Render with a real browser (executes JavaScript). Use for single-page apps or pages whose content is painted client-side. Costs more than the default fetch tier.
screenshotboolean–Capture a screenshot (requires render).
screenshot_formatstring–Screenshot image format.
screenshot_fullpageboolean–Capture the whole page, not just the viewport.
screenshot_qualityinteger–Screenshot quality 1-100 (lossy formats).
screenshot_selectorstring–Capture only the element matching this CSS selector.
session_idstring–Run inside a session from spicrawl_session_create: same exit IP and browser state (cookies, localStorage) across calls.
urlstringyesThe absolute URL to retrieve.
waitinteger–Milliseconds to wait after load before capturing (render only).
wait_forstring–CSS selector to wait for before capturing (render only).
wait_for_timeoutinteger–Max milliseconds to wait for `wait_for`.
NameTypeReqDescription
contentstring–The page in the requested format (markdown, text or html); absent for a PDF.
creditsnumber–Credits charged for this call.
data––Output of `extract` or `autoparse`.
diagnostics––Which rendering tiers were tried, after an escalation.
empty_fields––`extract` rules that matched nothing: usually a broken selector.
enginestring–Rendering tier that produced the page: fetch, js or browser.
final_urlstring–URL after redirects; may be empty.
headers––The target's response headers.
links––The page's links, absolute and de-duplicated, when `links` was set.
network––Responses the page fetched, when `network_capture` was set.
pdfobject–Present for format=pdf: the file itself is a resource content block.
proxy_sourcestring–Whose exit carried the request: pool, custom or direct.
screenshots––Metadata of each screenshot; the images are separate image content blocks.
statusnumber–The target site's HTTP status (not this call's). Anything but 200/404/410 is charged 0.
truncatedboolean–The target body exceeded the size cap and was cut.
urlstring–The requested URL.
warnings––Advisories about the call, e.g. an ignored option.

No examples provided.

spicrawl_session_context ~100

Return the full stored state of a LIVE session — cookies, localStorage and other credentials — plus its fingerprint and domain scores. The `session_context` object can be passed to spicrawl_session_create to clone the session. The result contains secrets (login cookies): do not echo it to the user or logs unless asked.

NameTypeReqDescription
session_idstringyesThe session id returned by spicrawl_session_create or spicrawl_session_list.
NameTypeReqDescription
created_atstring–Creation time, RFC 3339 UTC.
domain_scoresobject–Per-domain standing, keyed by domain. Omitted when empty.
expires_atstring–Current expiry, RFC 3339 UTC.
fingerprint––Stored browser fingerprint; null when none.
last_used_atstring|null–Last use, RFC 3339 UTC; null if never used.
retiredstring–Why the session was retired; absent while usable.
schema_versioninteger––
session_contextobject–Cookies and storage: secrets. Pass it as `session_context` to spicrawl_session_create to clone the session.
session_idstringyesThe session id.
usage_countinteger––
warningstring–The API's reminder that this state dies with the session.

No examples provided.

spicrawl_session_create ~312

Create a session: a persistent browser identity (cookie jar, localStorage, a fixed rendering tier and, by default, a sticky exit IP) that survives across scrapes. Use it for multi-step flows — log in, then fetch pages behind the login — by passing the returned `id` as `session_id` to every `spicrawl_scrape` call that should share the state. The rendering tier is fixed for the session's lifetime and every scrape on the session runs on it. Leave `engine` out and one is chosen for you. Release the session with `spicrawl_session_release` when done. Returns the session object (id, engine, status, sticky_key, proxy, expires_at).

NameTypeReqDescription
domain_scoresobject–Seed per-domain error scores (usually copied from a spicrawl_session_context dump).
enginestring–Rendering tier fixed for the session's lifetime. Optional: leave it out and one is chosen for you. `fetch` is plain HTTP; `js` is JavaScript rendering and refuses `actions`, `block_resources`, screen…
session_contextobject–Seed the session's state (cookies, storage) — e.g. the `session_context` object from spicrawl_session_context, to clone a session.
ttl_secondsinteger–Idle lifetime in seconds (min 30, default 1800; the organization's maximum is enforced, not clamped).
NameTypeReqDescription
context––Size summary of the stored context (counts only, no secrets); null once the session is not active.
created_atstring–Creation time, RFC 3339 UTC.
domain_scoresobject–Per-domain standing, keyed by domain. Omitted when empty.
enginestring–Rendering tier the session is bound to: fetch, js or browser.
expires_atstring–Current expiry (slides on use), RFC 3339 UTC.
fingerprintobject–Browser fingerprint, as stored.
hard_expires_atstring–Fixed ceiling the expiry never passes, RFC 3339 UTC.
idstringyesSession id; pass it as `session_id` to spicrawl_scrape.
last_used_atstring|null–Last successful scrape, RFC 3339 UTC; null if never used.
leaseobject–Present only while a scrape holds the session; release and delete are refused until it lapses unless `force`.
project_idstring–Project the session belongs to.
proxyobject–The session's exit intent (never an IP or endpoint).
released_atstring–Release time, on released sessions, RFC 3339 UTC.
retiredstring–Why the session was taken out of service (expired, usage_exhausted, explicit); absent while usable.
statusstring–active, released or expired; derived from the clock, and only `active` sessions can be used.
sticky_keystring–Exit pin in use (empty when rotate_ip was set).
usage_countinteger–Successful scrapes that used the session.
warningsarray–Decisions made on your behalf at creation, e.g. a TTL reduced to the organization maximum.

No examples provided.

spicrawl_session_delete ~121

Permanently delete a session and its stored state, including the record itself (prefer spicrawl_session_release if you only want to stop using it). Idempotent: deleting an already-deleted session succeeds. Refused while a scrape holds the session's lease unless `force` is true.

NameTypeReqDescription
forceboolean–Break an active lease (a scrape currently using the session). Only set when you know it is safe.
session_idstringyesThe session id returned by spicrawl_session_create or spicrawl_session_list.
NameTypeReqDescription
deletedbooleanyesAlways true on success (deleting an already-deleted session succeeds).
session_idstringyesThe id that was deleted.

No examples provided.

spicrawl_session_get ~86

Return one session's metadata: status, `engine` (its rendering tier), proxy/exit, usage count, expiry, lease holder, and a summary of its stored context. Never returns the credentials themselves (use spicrawl_session_context for that).

NameTypeReqDescription
session_idstringyesThe session id returned by spicrawl_session_create or spicrawl_session_list.
NameTypeReqDescription
context––Size summary of the stored context (counts only, no secrets); null once the session is not active.
created_atstring–Creation time, RFC 3339 UTC.
domain_scoresobject–Per-domain standing, keyed by domain. Omitted when empty.
enginestring–Rendering tier the session is bound to: fetch, js or browser.
expires_atstring–Current expiry (slides on use), RFC 3339 UTC.
fingerprintobject–Browser fingerprint, as stored.
hard_expires_atstring–Fixed ceiling the expiry never passes, RFC 3339 UTC.
idstringyesSession id; pass it as `session_id` to spicrawl_scrape.
last_used_atstring|null–Last successful scrape, RFC 3339 UTC; null if never used.
leaseobject–Present only while a scrape holds the session; release and delete are refused until it lapses unless `force`.
project_idstring–Project the session belongs to.
proxyobject–The session's exit intent (never an IP or endpoint).
released_atstring–Release time, on released sessions, RFC 3339 UTC.
retiredstring–Why the session was taken out of service (expired, usage_exhausted, explicit); absent while usable.
statusstring–active, released or expired; derived from the clock, and only `active` sessions can be used.
sticky_keystring–Exit pin in use (empty when rotate_ip was set).
usage_countinteger–Successful scrapes that used the session.
warningsarray–Decisions made on your behalf at creation, e.g. a TTL reduced to the organization maximum.

No examples provided.

spicrawl_session_list ~114

List this API key's project's sessions, newest first. Returns `{ sessions: [...], next_cursor? }`; pass `next_cursor` back as `cursor` for the next page. Never includes the stored credentials.

NameTypeReqDescription
cursorstring–`next_cursor` from a previous page, verbatim.
enginestring–Only sessions on this rendering tier.
limitinteger–Page size (default 50, max 200).
statusstring–Only sessions in this state.
NameTypeReqDescription
next_cursorstring–Pass back as `cursor` for the next page; absent on the last page.
sessionsarrayyesSessions on this page, newest first; may be short or empty under a `status` filter.

No examples provided.

spicrawl_session_release ~156

End a session when you are done with it: frees its exit IP and browser state; it can no longer be used with spicrawl_scrape. Its stored cookies and storage are purged and cannot be recovered; start a new session and log in again to continue. The record stays visible (status `released`) so its history can still be inspected. Refused while a scrape holds the session's lease unless `force` is true. Returns the session object.

NameTypeReqDescription
forceboolean–Break an active lease (a scrape currently using the session). Only set when you know it is safe.
session_idstringyesThe session id returned by spicrawl_session_create or spicrawl_session_list.
NameTypeReqDescription
context––Size summary of the stored context (counts only, no secrets); null once the session is not active.
created_atstring–Creation time, RFC 3339 UTC.
domain_scoresobject–Per-domain standing, keyed by domain. Omitted when empty.
enginestring–Rendering tier the session is bound to: fetch, js or browser.
expires_atstring–Current expiry (slides on use), RFC 3339 UTC.
fingerprintobject–Browser fingerprint, as stored.
hard_expires_atstring–Fixed ceiling the expiry never passes, RFC 3339 UTC.
idstringyesSession id; pass it as `session_id` to spicrawl_scrape.
last_used_atstring|null–Last successful scrape, RFC 3339 UTC; null if never used.
leaseobject–Present only while a scrape holds the session; release and delete are refused until it lapses unless `force`.
project_idstring–Project the session belongs to.
proxyobject–The session's exit intent (never an IP or endpoint).
released_atstring–Release time, on released sessions, RFC 3339 UTC.
retiredstring–Why the session was taken out of service (expired, usage_exhausted, explicit); absent while usable.
statusstring–active, released or expired; derived from the clock, and only `active` sessions can be used.
sticky_keystring–Exit pin in use (empty when rotate_ip was set).
usage_countinteger–Successful scrapes that used the session.
warningsarray–Decisions made on your behalf at creation, e.g. a TTL reduced to the organization maximum.

No examples provided.

spicrawl_usage ~308

Billing-grade usage for your org over a date window, from the daily rollup (usage_daily), grouped by day, project, engine, feature or key. group_by=key returns per API key (key_id, name, prefix, project_id) counters per metric per day, from usage_key_daily; keyless (dashboard) usage is not in it, and a project-scoped key sees only its own project's keys. Use it to answer 'how many requests/credits did I use, and where'. The window defaults to the last 30 days including today; `to` is EXCLUSIVE (a single day 2026-08-01 is from=2026-08-01, to=2026-08-02) and the window may not exceed 400 days. The response carries stale_seconds (age of the newest rollup row; null when the window is empty). Requires the key to have the `read` scope.

NameTypeReqDescription
fromstring–Inclusive start date, YYYY-MM-DD (UTC). Default: 29 days before today.
group_bystring–How to group the rows. Default 'day'.
metricsarray–Metrics to return. Omit for all of them.
project_idstring–Restrict to one project id (must be a valid Spicrawl identifier).
to––EXCLUSIVE end date, YYYY-MM-DD (UTC). Default: tomorrow, so today is included.
NameTypeReqDescription
group_bystring–The dimension used: day, project, engine, feature or key.
groups––The buckets, sorted by key. Empty (or missing for group_by=key) does not mean no usage: read totals.
keys––group_by=key only: one entry per API key, with its counters per UTC day.
periodobject–The window, as a half-open range of UTC days.
stale_secondsnumber|null–Age of usage_as_of in seconds; null when the window is empty. A large value means the rollup is behind.
totals––Billed quantities for the whole window. Authoritative; use these, not the sum of groups.
unattributed––The part of each total the groups do not explain.
usage_as_ofstring|null–When the newest rollup row in the window was written; null when the window is empty.
warningsarray–Caveats the numbers would otherwise hide.

No examples provided.

spicrawl_usage_reconciliation ~96

Drift report for ONE day: re-derives usage from that day's request log and compares it with the billed daily rollup, so you can see whether the rollup missed or double-counted anything. Defaults to yesterday (UTC); today is still accumulating and would always show drift. Requires the `read` scope.

NameTypeReqDescription
daystring–The UTC day to reconcile, YYYY-MM-DD. Default: yesterday.
NameTypeReqDescription
daystring–The UTC day reconciled.
drift––Disagreements; empty means no drift.
interpretationstring–What the drift can and cannot prove. Read it before acting on drift.
repairableboolean–Always false; nothing is repaired.
request_log_rowsnumber–Rows in the request log for the day; 0 means there was nothing to compare against.
warningsarray–Caveats the numbers would otherwise hide.

No examples provided.

spicrawl_usage_summary ~68

A compact current-period summary of your org's usage (totals as of now, from the daily rollup). No parameters. Use for a quick 'how much have I used so far'; use spicrawl_usage for a windowed breakdown. Requires the `read` scope.

Input schema present but exposes no named parameters.

NameTypeReqDescription
allowanceobject–The monthly allowance the API enforces. Omitted when it cannot be read (warnings says so).
credits––Metered usage against the plan's included credits. Micro-credits: 1 credit = 1000000.
metrics––Every billed metric for the period.
periodobject–The window, as a half-open range of UTC days.
period_elapsed_daysnumber–Whole days of the period elapsed; use it to pace consumption.
planobject––
stale_secondsnumber|null–Age of usage_as_of in seconds; null when the window is empty. A large value means the rollup is behind.
unattributed––Metric name -> quantity. credits are micro-credits (1 credit = 1000000), engine_ms milliseconds, bytes_* bytes, the rest counts.
usage_as_ofstring|null–When the newest rollup row in the window was written; null when the window is empty.
warningsarray–Caveats the numbers would otherwise hide.

No examples provided.

Install

How do I install the Spicrawl MCP server?

Spicrawl is a hosted endpoint at https://mcp.spicrawl.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.spicrawl.com

# add to Claude Code
claude mcp add --transport http officialspicrawl-mcp 'https://mcp.spicrawl.com/mcp'
Common questions

What is the Spicrawl MCP server?

Spicrawl is an MCP server listed in the public MCP registry as io.github.OfficialSpicrawl/mcp. Web scraping MCP server: any URL to Markdown or JSON, with JavaScript rendering and batch jobs. This page covers its hosted endpoint (https://mcp.spicrawl.com/mcp).

Is the Spicrawl MCP server safe to use?

Spicrawl scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Spicrawl MCP server expose?

Spicrawl exposes 24 tools: spicrawl_scrape, spicrawl_batch_submit, spicrawl_batch_list, spicrawl_batch_status, spicrawl_batch_results, and 19 more. Their descriptions and schemas cost roughly 5,503 tokens of context every time the server is loaded.

Does the Spicrawl MCP server require authentication?

Yes. Spicrawl asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Spicrawl MCP server still maintained?

Spicrawl is still listed as active in the MCP registry. We last reached this channel on 17 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.