Skip to content

Spicrawl

by OfficialSpicrawl · remote · local (npm) · no sign-in to list tools · v0.1.8 · published by GitHub user OfficialSpicrawl

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

Deletes · 3Final · 1Changes · 11

24 tools: 3 can delete or cancel things, 1 do something that can't be undone, 11 change things and 9 only read.

Scanned Oct 21, 2026

11 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http officialspicrawl https://mcp.spicrawl.com/mcp

Findings

Matches of fixed checks, with the text they matched.

7 warn4 info
  • The input schema at properties.actions.items.anyOf[1].properties.timeout_ms.$ref contains a 52-character base64 string.

    Matched text

    inputSchema.properties.actions.items.anyOf[1].properties.timeout_ms.$ref: "#/properties/actions/items/anyOf/0/properties/timeout_ms"

    What this check looks for
  • The input schema at properties.actions.items.anyOf[1].properties.on_error.$ref contains a 47-character base64 string.

    Matched text

    inputSchema.properties.actions.items.anyOf[1].properties.on_error.$ref: "#/properties/actions/items/anyOf/0/properties/on_error"

    What this check looks for
  • The input schema at properties.actions.items.anyOf[1].properties.label.$ref contains a 50-character base64 string.

    Matched text

    inputSchema.properties.actions.items.anyOf[1].properties.label.$ref: "#/properties/actions/items/anyOf/0/properties/label"

    What this check looks for
  • The server marks "spicrawl_scrape" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "retrieve": a word for reading.

    What this check looks for
  • The server marks "spicrawl_usage" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • The server marks "spicrawl_requests_list" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "spicrawl_requests_list" says "request": a word for a change.

    What this check looks for
Show 5 more findings
  • The server marks "spicrawl_request_get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "spicrawl_request_get" says "request": a word for a change.

    What this check looks for
  • The input schema at properties.actions.items.anyOf[1].properties.secret.description mentions "credential".

    Matched text

    inputSchema.properties.actions.items.anyOf[1].properties.secret.description: "A credential: redacted from logs and the request log..."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...he next page. Never includes the stored credentials."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...f its stored context. Never returns the credentials themselves (use spicrawl_session_contex..."

    What this check looks for
  • The description mentions "credentials".

    Matched text

    description: "...ssion — cookies, localStorage and other credentials — plus its fingerprint and domain score..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

24 tools

Deletes or cancels 3Claude Code: deny
  • spicrawl_batch_cancelCancel 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 `ca…No findings

    Why it is in this group

    • The name "spicrawl_batch_cancel" says "cancel": a word for removing or ending something.
    • The description says "Cannot be undone".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_session_deletePermanently delete a session and its stored state, including the record itself (prefer spicrawl_session_release if you only want to stop using it).No findings

    Why it is in this group

    • The name "spicrawl_session_delete" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_session_releaseEnd a session when you are done with it: frees its exit IP and browser state; it can no longer be used with spicrawl_scrape.No findings

    Why it is in this group

    • The description says "cannot be recovered".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • spicrawl_usageBilling-grade usage for your org over a date window, from the daily rollup (usage_daily), grouped by day, project, engine, feature or key.1 finding

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "spicrawl_usage" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 11Claude Code: ask
  • spicrawl_batch_add_itemsAppend URLs to a batch job that was submitted with `open: true`.No findings

    Why it is in this group

    • The name "spicrawl_batch_add_items" says "add": a word for a change.
    Description, as the server wrote it
    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 }`.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • spicrawl_batch_closeStop an open batch job accepting items, so it completes once its queued work drains.No findings

    Why it is in this group

    • The name "spicrawl_batch_close" says "close": a word for a change.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_batch_retryRe-queue every FAILED item of a batch job so it runs again (succeeded items are untouched; a job with no failures is returned unchanged).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    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 }`.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • spicrawl_batch_submitSubmit many URLs to be scraped as one asynchronous job, with shared settings applied to every URL.No findings

    Why it is in this group

    • The name "spicrawl_batch_submit" says "submit": a word for a change.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • spicrawl_docs_indexThe docs' llms.txt: every Spicrawl documentation page with its title, a one-line description and its Markdown URL.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • spicrawl_request_getThe full log record of one past API call by its request id.1 finding

    Why it is in this group

    • The name "spicrawl_request_get" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "spicrawl_request_get" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "spicrawl_request_get" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_requests_listRecent 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/en…1 finding

    Why it is in this group

    • The name "spicrawl_requests_list" says "request": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "spicrawl_requests_list" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "spicrawl_requests_list" says "request": a word for a change.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_scrapeRetrieve a web page and return its content as markdown (default), text, HTML, a JSON envelope, or a printed PDF.5 findings

    Why it is in this group

    • The description's first verb is "retrieve": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Info

      The input schema at properties.actions.items.anyOf[1].properties.secret.description mentions "credential".

      Matched text

      inputSchema.properties.actions.items.anyOf[1].properties.secret.description: "A credential: redacted from logs and the request log..."

      What this check looks for
    • Warn

      The input schema at properties.actions.items.anyOf[1].properties.timeout_ms.$ref contains a 52-character base64 string.

      Matched text

      inputSchema.properties.actions.items.anyOf[1].properties.timeout_ms.$ref: "#/properties/actions/items/anyOf/0/properties/timeout_ms"

      What this check looks for
    • Warn

      The input schema at properties.actions.items.anyOf[1].properties.on_error.$ref contains a 47-character base64 string.

      Matched text

      inputSchema.properties.actions.items.anyOf[1].properties.on_error.$ref: "#/properties/actions/items/anyOf/0/properties/on_error"

      What this check looks for
    • Warn

      The input schema at properties.actions.items.anyOf[1].properties.label.$ref contains a 50-character base64 string.

      Matched text

      inputSchema.properties.actions.items.anyOf[1].properties.label.$ref: "#/properties/actions/items/anyOf/0/properties/label"

      What this check looks for
    • Warn

      The server marks "spicrawl_scrape" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The description's first verb is "retrieve": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • spicrawl_session_createCreate a session: a persistent browser identity (cookie jar, localStorage, a fixed rendering tier and, by default, a sticky exit IP) that survives across scrapes.No findings

    Why it is in this group

    • The name "spicrawl_session_create" says "create": a word for a change.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • spicrawl_usage_reconciliationDrift 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 anyt…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_usage_summaryA compact current-period summary of your org's usage (totals as of now, from the daily rollup).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 9Claude Code: allow
  • spicrawl_batch_listList this API key's project's batch jobs, newest first, with status and progress.No findings

    Why it is in this group

    • The name "spicrawl_batch_list" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_batch_resultsReturn 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}/c…No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_batch_statusReturn one batch job with its status and progress (total/completed/succeeded/failed/remaining, credits charged).No findings

    Why it is in this group

    • The name "spicrawl_batch_status" says "status": a word for reading.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_batch_task_contentReturn the full payload one item of a batch job produced, by its `seq` (items are numbered from 0 in submission order).No findings

    Why it is in this group

    • The description's first verb is "return": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_docs_readFetches one Spicrawl documentation page as Markdown.No findings

    Why it is in this group

    • The name "spicrawl_docs_read" says "read": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • spicrawl_session_contextReturn the full stored state of a LIVE session — cookies, localStorage and other credentials — plus its fingerprint and domain scores.1 finding

    Why it is in this group

    • The description's first verb is "return": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...ssion — cookies, localStorage and other credentials — plus its fingerprint and domain score..."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_session_getReturn one session's metadata: status, `engine` (its rendering tier), proxy/exit, usage count, expiry, lease holder, and a summary of its stored context.1 finding

    Why it is in this group

    • The name "spicrawl_session_get" says "get": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...f its stored context. Never returns the credentials themselves (use spicrawl_session_contex..."

      What this check looks for
    Description, as the server wrote it
    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).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • spicrawl_session_listList this API key's project's sessions, newest first.1 finding

    Why it is in this group

    • The name "spicrawl_session_list" says "list": a word for reading.

    Findings

    • Info

      The description mentions "credentials".

      Matched text

      description: "...he next page. Never includes the stored credentials."

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.1.8. Values in angle brackets are yours to fill in.

claude mcp add --transport http officialspicrawl https://mcp.spicrawl.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__officialspicrawl__spicrawl_batch_list",
      "mcp__officialspicrawl__spicrawl_batch_status",
      "mcp__officialspicrawl__spicrawl_batch_results",
      "mcp__officialspicrawl__spicrawl_batch_task_content",
      "mcp__officialspicrawl__spicrawl_session_list",
      "mcp__officialspicrawl__spicrawl_session_get",
      "mcp__officialspicrawl__spicrawl_session_context",
      "mcp__officialspicrawl__spicrawl_docs_search",
      "mcp__officialspicrawl__spicrawl_docs_read"
    ],
    "ask": [
      "mcp__officialspicrawl__spicrawl_scrape",
      "mcp__officialspicrawl__spicrawl_batch_submit",
      "mcp__officialspicrawl__spicrawl_batch_retry",
      "mcp__officialspicrawl__spicrawl_batch_add_items",
      "mcp__officialspicrawl__spicrawl_batch_close",
      "mcp__officialspicrawl__spicrawl_session_create",
      "mcp__officialspicrawl__spicrawl_usage",
      "mcp__officialspicrawl__spicrawl_usage_summary",
      "mcp__officialspicrawl__spicrawl_usage_reconciliation",
      "mcp__officialspicrawl__spicrawl_requests_list",
      "mcp__officialspicrawl__spicrawl_request_get",
      "mcp__officialspicrawl__spicrawl_docs_index"
    ],
    "deny": [
      "mcp__officialspicrawl__spicrawl_batch_cancel",
      "mcp__officialspicrawl__spicrawl_session_release",
      "mcp__officialspicrawl__spicrawl_session_delete"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as officialspicrawl. Review it before you use it.