Skip to main content
Glama

Server Details

Web data for AI agents. Spicrawl MCP lets agents fetch public web pages as clean Markdown, HTML, text, screenshots, PDFs, or structured JSON. It handles JavaScript-heavy pages and browser actions like clicking, filling forms, and scrolling.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A4.2/5.0

Scored across 27 tools

Disambiguation4/5

Tools are cleanly partitioned by resource prefix (batch, session, browser, docs, request, usage) and each verb targets a distinct action. The few soft overlaps — batch_results vs batch_task_content vs batch_status, and session_release vs session_delete — are disambiguated by their descriptions (paginated finished-item list vs single-seq payload vs metadata; release vs permanent delete).

Naming Consistency4/5

Nearly all tools follow a predictable spicrawl_<resource>_<verb> snake_case pattern (batch_submit, session_create, docs_read, usage_summary). Minor deviations: the singular request_get paired with plural requests_list, and the bare spicrawl_scrape without a resource segment, slightly break the pattern but remain readable.

Tool Count4/5

At 27 tools it is slightly above the comfortable range, but the surface spans genuinely broad domains (batch, browser, sessions, docs, usage, requests) so most tools earn their place. The 9-tool batch cluster is the largest but each member covers a distinct lifecycle step.

Completeness5/5

Full lifecycle coverage across domains: scraping, complete batch management (submit/add/close/cancel/retry/status/results/content/list), full session lifecycle (create/get/list/context/release/delete), remote browser connect/control/live-view, docs search/read/index, and usage plus reconciliation. There are no obvious workflow dead ends.

Available Tools

27 tools
spicrawl_batch_add_itemsAdd URLs to an open batch jobAInspect

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 }.

Inputs: job_id (required), urls, wait, items, +9 more. Returns: job, items_added, items_dispatched

spicrawl_batch_cancelCancel a batch jobA
DestructiveIdempotent
Inspect

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.

Inputs: job_id (required). Returns: id, name, open, params, +20 more

spicrawl_batch_closeClose an open batch jobA
Idempotent
Inspect

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.

Inputs: job_id (required). Returns: id, name, open, params, +20 more

spicrawl_batch_listList batch jobsA
Read-onlyIdempotent
Inspect

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.

Inputs: limit, cursor, status. Returns: batches, next_cursor

spicrawl_batch_resultsRead a batch job's resultsA
Read-onlyIdempotent
Inspect

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).

Inputs: job_id (required), limit, cursor, status. Returns: results, next_cursor

spicrawl_batch_retryRetry a batch job's failed itemsAInspect

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 }.

Inputs: job_id (required). Returns: job, items_reset, items_dispatched

spicrawl_batch_statusCheck a batch job's statusA
Read-onlyIdempotent
Inspect

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.

Inputs: job_id (required). Returns: id, name, open, params, +20 more

spicrawl_batch_submitSubmit a batch scrape jobAInspect

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.

Inputs: name, open, urls, wait, +16 more. Returns: id, name, open, params, +20 more

spicrawl_batch_task_contentRead one batch item's contentA
Read-onlyIdempotent
Inspect

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.

Inputs: seq (required), job_id (required). Returns: content

spicrawl_browser_connect_urlBrowser (CDP) connect URLAInspect

Mints a single-use connect URL for Spicrawl's remote browser (GET /v1/browser, a DevTools Protocol (CDP) WebSocket) so YOUR code can drive it with any CDP client, using the URL as the browser WebSocket endpoint. It calls POST /v1/browser/token and returns a ws:// or wss:// URL carrying a short-lived token, never the API key: the URL works ONCE, within 60 seconds, and only with the options given here (editing them in the URL is refused), so call this right before connecting and again for every new session. Prefer sending the key as an Authorization header when the client supports headers on the WebSocket upgrade: then connect to the plain /v1/browser URL with 'Authorization: Bearer ' and no token is needed. The key must carry the browser scope. Parameter errors are reported when minting. The result's session_id names the session once connected: when a page needs a person (a login, a one-time code, a captcha), pass it to spicrawl_browser_live_view for a link they can open, and to spicrawl_browser_control to see when they hand control back.

Inputs: proxy, engine, sticky_key, session_ttl, +2 more. Returns: url, notes, expires_at, session_id, +1 more

spicrawl_browser_controlWho controls a remote browserA
Idempotent
Inspect

Reads or changes who drives a connected remote browser: agent (your CDP connection) or human (a person in its live view, see spicrawl_browser_live_view). status reads it: poll it after sending a live-view link, and continue once controller is agent again. takeover hands control to the person before they ask (your input and navigation then fail with error -32001); release takes it back. The person can also take and give back control from the live view themselves.

Inputs: session_id (required), action. Returns: status, controller, expires_at, session_id

spicrawl_browser_live_viewLive view link for a remote browserAInspect

Gets a link a person can open to watch the remote browser your CDP connection is driving, and take control of it: the same tabs, cookies and page. Use it when a page needs a human: a login, a one-time code, a captcha. Send them live_view_url; they press "Take control", do the step, and give control back. While they have it, your connection's input and navigation commands fail with error -32001 (reading the page still works); poll spicrawl_browser_control (action status) until controller is agent, then carry on. The link works once and must be opened within 60 seconds; ask again for a new one. The session must still be connected. Watching costs nothing beyond the session itself.

Inputs: session_id (required). Returns: live_url, expires_in, session_id, single_use, +1 more

spicrawl_docs_indexList the Spicrawl docsA
Read-onlyIdempotent
Inspect

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.

Inputs: no named parameters. Returns: url, content, truncated

spicrawl_docs_readRead a Spicrawl docs pageA
Read-onlyIdempotent
Inspect

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.

Inputs: path (required). Returns: url, title, md_url, content, +2 more

spicrawl_request_getGet one requestA
Read-onlyIdempotent
Inspect

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.

Inputs: id (required). Returns: id, url, proxy, spans, +15 more

spicrawl_requests_listList recent requestsA
Read-onlyIdempotent
Inspect

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.

Inputs: limit, before, status, before_id, +2 more. Returns: data, page

spicrawl_scrapeScrape a URLAInspect

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 (a natural-language ai_extract is coming soon), 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, ai_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.

Inputs: url (required), mode, wait, cache, +35 more. Returns: pdf, url, data, links, +13 more

spicrawl_session_contextDump a session's stored contextA
Read-onlyIdempotent
Inspect

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.

Inputs: session_id (required). Returns: retired, warning, created_at, expires_at, +7 more

spicrawl_session_createCreate a browsing sessionAInspect

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).

Inputs: engine, rotate_ip, sticky_key, fingerprint, +6 more. Returns: id, lease, proxy, engine, +14 more

spicrawl_session_deleteDelete a sessionA
DestructiveIdempotent
Inspect

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.

Inputs: session_id (required), force. Returns: deleted, session_id

spicrawl_session_getGet a sessionA
Read-onlyIdempotent
Inspect

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).

Inputs: session_id (required). Returns: id, lease, proxy, engine, +14 more

spicrawl_session_listList sessionsA
Read-onlyIdempotent
Inspect

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.

Inputs: limit, cursor, engine, status. Returns: sessions, next_cursor

spicrawl_session_releaseRelease a sessionA
DestructiveIdempotent
Inspect

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.

Inputs: session_id (required), force. Returns: id, lease, proxy, engine, +14 more

spicrawl_usageUsage breakdownA
Read-onlyIdempotent
Inspect

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.

Inputs: to, from, metrics, group_by, +1 more. Returns: keys, groups, period, totals, +5 more

spicrawl_usage_reconciliationUsage reconciliationA
Read-onlyIdempotent
Inspect

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.

Inputs: day. Returns: day, drift, warnings, repairable, +2 more

spicrawl_usage_summaryUsage summaryA
Read-onlyIdempotent
Inspect

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.

Inputs: no named parameters. Returns: plan, period, credits, metrics, +6 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
      16
      9 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources