Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Authorization required, Bearer, issuer https://app.quanticdata.io
Authorization required, Bearer, issuer https://app.quanticdata.io
https://www.npmjs.com/package/quanticdata-mcp (package_npm) — from ard_catalog
Authorization required, Bearer, issuer https://app.quanticdata.io
Authorization required, Bearer, issuer https://app.quanticdata.io
Authorization required, Bearer, issuer https://app.quanticdata.io
Authorization not required → required, Bearer, issuer https://app.quanticdata.io
Added "unlock" (27 tools before, 28 now)
Replay any HTTP request (method, headers, body) through a residential exit with a real browser TLS fingerprint, retrying on a fresh IP when the target blocks it and escalating a blocked GET to a real browser. A page that is still blocked is returned flagged (`blocked`, `blockClass`, `vendor`), never as a silent 200; interactive captchas are not solved and arrive with blockClass "captcha". Returns the raw response: status, headers, body (bodyBase64 for binary), finalUrl. Use it when you need the origin's own response (JSON API, form POST, a page as-is) rather than scrape's Markdown.
Added "report" (26 tools before, 27 now)
Send feedback to the QuanticData team: a bug (a result that is wrong or empty after a retry, a broken parser, a blocked page that should work), a missing tool, site, option or collector, or a question about behaviour or pricing. Works WITHOUT an API key. Call it when a tool clearly failed at its job, when the user needs something no tool here covers, or when the user asks you to report something. Do NOT call it for a missing, rejected or unset API key, for the no-key trial or the balance being used up, for a network timeout, or for your own wrong input: those are fixed by the user, not by the…
Changed the definition of "search"
⟨579 unchanged words⟩ ":{"description":"Google Maps place id(for place_details — the hex '0x…:0x…' fid from maps/places results, a 'ChIJ…' place id or a numeric cid all work; served from Maps' place card over HTTP (name, address, phone, website, rating, reviews, category, weekly hours, open state)forinplace_detailsabout a second","type":"string"},"product_id":{"description":"Google Shopping product id (the product_id of a shopping result — the rendered grid carries it) for search_type=product: the seller list with price, old price, discount, stock and delivery per merchant. Without it, pass a query and the first productdetailsis opened.","type":"string"},"product_ids":{"description":"shopping only: render the Shopping grid so each result carries product_id/offer_id (the input of search_type=product). Costs a render; the default no-JS shopping page has no ids.","type":"boolean
Certificate changed, valid to 2026-12-21
Added "ai_visibility"; changed the definition of "batch", "batch_status", "collector_run_status" and 22 more (25 tools before, 26 now)
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"content_mode":{"description":"Per-URL ⟨11 unchanged words⟩ ,"full"],"type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨31 unchanged words⟩ ,"text"],"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"mode":{"description":"summary: per-URL metadata ⟨28 unchanged words⟩ type":"array"}},"required":["urls
Certificate recorded, valid to 2026-10-23
Authorization not required
First tool surface recorded: 25 tools (server version 0.9.0)
Showing the latest 15 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"include_content":{"description":"Include each item's full ⟨16 unchanged words⟩ by batch","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"since":{"description":"Item cursor from the ⟨10 unchanged words⟩ type":"integer"}},"required":["jobId","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"format":{"description":"Return rows as JSON ⟨6 unchanged words⟩ ,"csv"],"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"run_id":{"description":"The run id returned ⟨4 unchanged words⟩ type":"string"}},"required":["run_id","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"content_mode":{"description":"Per-page ⟨11 unchanged words⟩ ,"full"],"type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨52 unchanged words⟩ "minimum":1,"type":"integer"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"url":{"description":"Seed URL","format":"uri","type":"string"}},"required":["url","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"include_content":{"description":"Include each page's full ⟨15 unchanged words⟩ by crawl","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"since":{"description":"Page cursor from the ⟨10 unchanged words⟩ type":"integer"}},"required":["jobId","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"columns":{"description":"Columns ⟨42 unchanged words⟩ :"object"},"type":"array"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨36 unchanged words⟩ "integer"}},"type":"object"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"prompt":{"description":"What dataset you want, in ⟨47 unchanged words⟩ type":"string"}},"required":["prompt","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"jobId":{"description":"The dataset job id returned by create_dataset","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"mode":{"description":"summary: progress + ⟨24 unchanged words⟩ type":"integer"}},"required":["jobId","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨57 unchanged words⟩ bandwidth used)","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"prompt":{"description":"Free-text alternative to `fields` — ⟨37 unchanged words⟩ format":"uri","type":"string"}},"required":["context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"asn":{"description":"ASN ⟨17 unchanged words⟩ for any)","type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"Country code for geo ⟨107 unchanged words⟩ e.g. 'tmobile')","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"orderId":{"description":"The proxy service's orderId ⟨111 unchanged words⟩ type":"boolean"}},"required":["orderId","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"force":{"description":"Bypass the cooldown between heals","type":"boolean"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"preset_id":{"description":"The preset id","type":"string"}},"required":["preset_id","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"category":{"description":"Optional ⟨16 unchanged words⟩ ","maxLength":40,"type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"}},"required":["context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"}},"required":["context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"active":{"description":"true: ⟨9 unchanged words⟩ for all.","type":"boolean"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"limit":{"description":"Max services returned ( ⟨4 unchanged words⟩ "minimum":1,"type":"integer"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"offset":{"description":"Pagination offset (default ⟨22 unchanged words⟩ ","mobile_v2"],"type":"string"}},"required":["context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"group_by":{"description":"path: return the ⟨41 unchanged words⟩ "minimum":1,"type":"integer"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"search":{"description":"Only return URLs containing ⟨21 unchanged words⟩ type":"string"}},"required":["url","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false{"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"propertiesa user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"preset_id":{"description":"The preset id returned by save_parser_preset","type":"string"}},"required":["preset_id","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"Country code, required ⟨37 unchanged words⟩ ,"tree"],"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"planType":{"description":"The plan type to ⟨26 unchanged words⟩ type":"string"}},"required":["planType","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"async":{"description":"Force ⟨6 unchanged words⟩ to poll","type":"boolean"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"input":{"additionalProperties":{},"description":" ⟨13 unchanged words⟩ 20 })","type":"object"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"slug":{"description":"Collector slug from list_collectors ⟨5 unchanged words⟩ string"}},"required":["slug","input","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"auto_heal":{"description":"Regenerate ⟨7 unchanged words⟩ is set)","type":"boolean"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"fields":{"additionalProperties":{"type":"string" ⟨10 unchanged words⟩ same shape","type":"object"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"name":{"description":"A name you'll recognise ⟨56 unchanged words⟩ string"}},"required":["name","parser","context","llm_model"],"type":"object"}
before
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"actions":{"description":"Ordered browser interactions before capture (forces a render). Each is one object: {\"click\":\"#sel\"}, {\"clickText\":\"Accept\"} (click by visible text — dismiss a consent wall without knowing its CSS), {\"type\":{\"selector\":\"#q\",\"text\":\"shoes\"}}, {\"scroll\":\"bottom\"}, {\"wait\":1000}, {\"waitForSelector\":\".results\"}. Add \"optional\":true to skip a miss, or \"timeoutMs\":N to bound one action.","items":{"additionalProperties":{},"type":"object"},"maxItems":20,"type":"array"},"ai_prompt":{"description":"Natural-language instruction — the LLM turns the page into structured JSON","type":"string"},"ai_schema":{"additionalProperties":{},"description":"JSON Schema for deterministic AI extraction; returned under payload.ai.data","type":"object"},"app_state":{"anyOf":[{"type":"boolean"},{"enum":["auto","raw"],"type":"string"}],"description":"Mine the page's own hydration state (Next.js __NEXT_DATA__, Nuxt, embedded JSON islands) into payload.metadata.appState. This is where SPAs keep the real data — prices behind a picker, stock, download counts, listings — even when the DOM shows only a shell, so it often answers the question without a browser render. true/'auto': pruned to the informative parts (recommended). 'raw': the complete blobs, up to 512KB."},"chunk":{"additionalProperties":false,"description":"Segment the output into payload.chunks[] for RAG/vector-DB ingestion — each chunk carries its heading path and token count. Fences and tables are never split.","properties":{"by":{"enum":["heading","sentence","tokens"],"type":"string"},"overlap":{"maximum":100000,"minimum":0,"type":"integer"},"size":{"maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"content_mode":{"description":"smart (default): whole page minus nav/footer/cookie chrome. article: Readability main article only (news/blogs). full: entire body as-is.","enum":["smart","article","full"],"type":"string"},"content_modes":{"description":"Return several content scopes from ONE fetch under payload.contents (e.g. compare smart vs full)","items":{"enum":["smart","article","full"],"type":"string"},"maxItems":3,"type":"array"},"cookies":{"additionalProperties":{"type":"string"},"description":"Cookies to send as name→value — the simple way to scrape behind a login","type":"object"},"country":{"description":"ISO country code for the proxy exit, e.g. 'us'","maxLength":2,"minLength":2,"type":"string"},"engine":{"description":"auto (default): TLS tier, escalate to browser on block. tls: never escalate — exactly what a pure HTTP bot (no JS) sees, right for SEO checks. render: force browser.","enum":["auto","tls","fetch","render"],"type":"string"},"extract":{"additionalProperties":{},"description":"Structured-extraction schema: { field: \"css selector\" | { selector, attr, all, fns } }. `fns` is a transform pipeline run on the value — e.g. { \"price\": { \"selector\": \".price\", \"fns\": [\"amount_from_string\"] } } returns a number, not text. Functions: amount_from_string, amount_range_from_string, convert_to_float/int/str, trim, lower, upper, {regex_search|regex_find_all: \"pat\"}, {replace:{from,to}}, {join:\",\"}, {select_nth:0}, length, unique, max, min, average, product.","type":"object"},"fetch_resource":{"description":"Regex matched against the page's network requests: the first matching response's BODY becomes the result instead of the page HTML (e.g. '/api/products' to get an SPA's JSON directly). Forces a render. Fails with 504 if nothing matches.","maxLength":500,"type":"string"},"format":{"description":"Output format (default markdown)","enum":["markdown","html","text"],"type":"string"},"formats":{"description":"Additional formats to return together in payload.formats, e.g. ['markdown','text']","items":{"enum":["markdown","html","text"],"type":"string"},"maxItems":3,"type":"array"},"frontmatter":{"description":"Prepend YAML front-matter (title, url, canonical, description, author, date) so the markdown is self-contained for RAG/Obsidian pipelines","type":"boolean"},"highlights":{"description":"With `query`: also return the N most relevant passages in payload.highlights","maximum":20,"minimum":1,"type":"integer"},"html":{"description":"Convert HTML you already have instead of fetching: no proxy bandwidth is used, and the full parser pipeline still applies. Pass `url` too if you want relative links absolutized.","type":"string"},"images_mode":{"description":"inline (default) keeps ; 'alt' keeps only alt text; 'strip' removes images","enum":["inline","alt","strip"],"type":"string"},"include_links":{"description":"Return all de-duplicated absolute page links in payload.links","type":"boolean"},"links_mode":{"description":"Link rendering. inline (default): [text](url). footnote: URLs moved to a numbered reference list at the end. strip: keep only the link text — cuts 30-48% of the tokens on link-dense pages when you only need the prose.","enum":["inline","footnote","strip"],"type":"string"},"max_tokens":{"description":"Cap the markdown at ~this many tokens, cutting at a section boundary (never inside a table or code block) and noting how much was omitted","maximum":2000000,"minimum":200,"type":"integer"},"mode":{"description":"summary: return only metadata (title, description, canonical, contentLength, status, engine, bytes) with no page content — use this when auditing pages instead of reading them","enum":["summary"],"type":"string"},"parser":{"additionalProperties":false,"description":"Your own parsing rules, as CSS selector lists — use these when you know the page and don't want to rely on heuristics. include: keep ONLY these subtrees (targeted extraction, e.g. ['article.post']). exclude: delete site-specific chrome we kept. keep: protect a section (sidebar, dialog, form) that smart mode would strip.","properties":{"exclude":{"items":{"type":"string"},"maxItems":25,"type":"array"},"include":{"items":{"type":"string"},"maxItems":25,"type":"array"},"keep":{"items":{"type":"string"},"maxItems":25,"type":"array"}},"type":"object"},"preset_id":{"description":"Run a stored parser preset (see save_parser_preset) instead of passing `extract` selectors. Results land in payload.data exactly the same way, and the run is scored so the preset can detect decay and self-heal.","type":"string"},"query":{"description":"What you are looking for on the page. Keeps only the relevant sections (BM25 scoring over blocks, headings preserved) — the way to read one fact off a huge page without spending its whole token budget.","maxLength":512,"type":"string"},"render":{"description":"Force the headless browser (JS execution)","type":"boolean"},"reveal_hidden":{"description":"Render tier only: before capturing, open <details>/accordions and click through every tab, appending each revealed panel to the page. Use it for tabbed code samples or spec accordions where a plain render captures only the visible variant.","type":"boolean"},"summary_sections":{"description":"Append 'Links on this page' / 'Images on this page' sections — handy when deciding the next hop","type":"boolean"},"toc":{"description":"Prepend a table of contents built from the page headings","type":"boolean"},"url":{"description":"The page URL to scrape (optional only when you pass `html` to convert)","format":"uri","type":"string"},"xhr":{"description":"Record the page's XHR/fetch traffic (URL, method, status, response body) into payload.xhr. Forces a browser render. An SPA's own JSON API is usually far cleaner than its DOM — use this to DISCOVER the API, then fetch_resource to return it directly.","type":"boolean"}},"type":"object"}after
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"actions":{"description":"Ordered browser interactions before capture (forces a render). Each is one object: {\"click\":\"#sel\"}, {\"clickText\":\"Accept\"} (click by visible text — dismiss a consent wall without knowing its CSS), {\"type\":{\"selector\":\"#q\",\"text\":\"shoes\"}}, {\"scroll\":\"bottom\"}, {\"wait\":1000}, {\"waitForSelector\":\".results\"}. Add \"optional\":true to skip a miss, or \"timeoutMs\":N to bound one action.","items":{"additionalProperties":{},"type":"object"},"maxItems":20,"type":"array"},"ai_prompt":{"description":"Natural-language instruction — the LLM turns the page into structured JSON","type":"string"},"ai_schema":{"additionalProperties":{},"description":"JSON Schema for deterministic AI extraction; returned under payload.ai.data","type":"object"},"app_state":{"anyOf":[{"type":"boolean"},{"enum":["auto","raw"],"type":"string"}],"description":"Mine the page's own hydration state (Next.js __NEXT_DATA__, Nuxt, embedded JSON islands) into payload.metadata.appState. This is where SPAs keep the real data — prices behind a picker, stock, download counts, listings — even when the DOM shows only a shell, so it often answers the question without a browser render. true/'auto': pruned to the informative parts (recommended). 'raw': the complete blobs, up to 512KB."},"chunk":{"additionalProperties":false,"description":"Segment the output into payload.chunks[] for RAG/vector-DB ingestion — each chunk carries its heading path and token count. Fences and tables are never split.","properties":{"by":{"enum":["heading","sentence","tokens"],"type":"string"},"overlap":{"maximum":100000,"minimum":0,"type":"integer"},"size":{"maximum":100000,"minimum":1,"type":"integer"}},"type":"object"},"content_mode":{"description":"smart (default): whole page minus nav/footer/cookie chrome. article: Readability main article only (news/blogs). full: entire body as-is.","enum":["smart","article","full"],"type":"string"},"content_modes":{"description":"Return several content scopes from ONE fetch under payload.contents (e.g. compare smart vs full)","items":{"enum":["smart","article","full"],"type":"string"},"maxItems":3,"type":"array"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"cookies":{"additionalProperties":{"type":"string"},"description":"Cookies to send as name→value — the simple way to scrape behind a login","type":"object"},"country":{"description":"ISO country code for the proxy exit, e.g. 'us'","maxLength":2,"minLength":2,"type":"string"},"engine":{"description":"auto (default): TLS tier, escalate to browser on block. tls: never escalate — exactly what a pure HTTP bot (no JS) sees, right for SEO checks. render: force browser.","enum":["auto","tls","fetch","render"],"type":"string"},"extract":{"additionalProperties":{},"description":"Structured-extraction schema: { field: \"css selector\" | { selector, attr, all, fns } }. `fns` is a transform pipeline run on the value — e.g. { \"price\": { \"selector\": \".price\", \"fns\": [\"amount_from_string\"] } } returns a number, not text. Functions: amount_from_string, amount_range_from_string, convert_to_float/int/str, trim, lower, upper, {regex_search|regex_find_all: \"pat\"}, {replace:{from,to}}, {join:\",\"}, {select_nth:0}, length, unique, max, min, average, product.","type":"object"},"fetch_resource":{"description":"Regex matched against the page's network requests: the first matching response's BODY becomes the result instead of the page HTML (e.g. '/api/products' to get an SPA's JSON directly). Forces a render. Fails with 504 if nothing matches.","maxLength":500,"type":"string"},"format":{"description":"Output format (default markdown)","enum":["markdown","html","text"],"type":"string"},"formats":{"description":"Additional formats to return together in payload.formats, e.g. ['markdown','text']","items":{"enum":["markdown","html","text"],"type":"string"},"maxItems":3,"type":"array"},"frontmatter":{"description":"Prepend YAML front-matter (title, url, canonical, description, author, date) so the markdown is self-contained for RAG/Obsidian pipelines","type":"boolean"},"highlights":{"description":"With `query`: also return the N most relevant passages in payload.highlights","maximum":20,"minimum":1,"type":"integer"},"html":{"description":"Convert HTML you already have instead of fetching: no proxy bandwidth is used, and the full parser pipeline still applies. Pass `url` too if you want relative links absolutized.","type":"string"},"images_mode":{"description":"inline (default) keeps ; 'alt' keeps only alt text; 'strip' removes images","enum":["inline","alt","strip"],"type":"string"},"include_links":{"description":"Return all de-duplicated absolute page links in payload.links","type":"boolean"},"links_mode":{"description":"Link rendering. inline (default): [text](url). footnote: URLs moved to a numbered reference list at the end. strip: keep only the link text — cuts 30-48% of the tokens on link-dense pages when you only need the prose.","enum":["inline","footnote","strip"],"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"max_tokens":{"description":"Cap the markdown at ~this many tokens, cutting at a section boundary (never inside a table or code block) and noting how much was omitted","maximum":2000000,"minimum":200,"type":"integer"},"mode":{"description":"summary: return only metadata (title, description, canonical, contentLength, status, engine, bytes) with no page content — use this when auditing pages instead of reading them","enum":["summary"],"type":"string"},"parser":{"additionalProperties":false,"description":"Your own parsing rules, as CSS selector lists — use these when you know the page and don't want to rely on heuristics. include: keep ONLY these subtrees (targeted extraction, e.g. ['article.post']). exclude: delete site-specific chrome we kept. keep: protect a section (sidebar, dialog, form) that smart mode would strip.","properties":{"exclude":{"items":{"type":"string"},"maxItems":25,"type":"array"},"include":{"items":{"type":"string"},"maxItems":25,"type":"array"},"keep":{"items":{"type":"string"},"maxItems":25,"type":"array"}},"type":"object"},"preset_id":{"description":"Run a stored parser preset (see save_parser_preset) instead of passing `extract` selectors. Results land in payload.data exactly the same way, and the run is scored so the preset can detect decay and self-heal.","type":"string"},"query":{"description":"What you are looking for on the page. Keeps only the relevant sections (BM25 scoring over blocks, headings preserved) — the way to read one fact off a huge page without spending its whole token budget.","maxLength":512,"type":"string"},"render":{"description":"Force the headless browser (JS execution)","type":"boolean"},"reveal_hidden":{"description":"Render tier only: before capturing, open <details>/accordions and click through every tab, appending each revealed panel to the page. Use it for tabbed code samples or spec accordions where a plain render captures only the visible variant.","type":"boolean"},"summary_sections":{"description":"Append 'Links on this page' / 'Images on this page' sections — handy when deciding the next hop","type":"boolean"},"toc":{"description":"Prepend a table of contents built from the page headings","type":"boolean"},"url":{"description":"The page URL to scrape (optional only when you pass `html` to convert)","format":"uri","type":"string"},"xhr":{"description":"Record the page's XHR/fetch traffic (URL, method, status, response body) into payload.xhr. Forces a browser render. An SPA's own JSON API is usually far cleaner than its DOM — use this to DISCOVER the API, then fetch_resource to return it directly.","type":"boolean"}},"required":["context","llm_model"],"type":"object"}{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"accommodation_type":{"description":"Hotels: ⟨76 unchanged words⟩ :"integer"},"type":"array"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code, ⟨166 unchanged words⟩ "maxLength":10,"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"location":{"description":"Search from this location ⟨360 unchanged words⟩ ,"maxLength":512,"type":"string"}},"required":["context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨43 unchanged words⟩ "maxLength":10,"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"max_tokens":{"description":"Maximum estimated tokens in ⟨35 unchanged words⟩ type":"integer"}},"required":["query","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"browser":{"description":"Fetch-path ⟨5 unchanged words⟩ ,"safari"],"type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code, ⟨48 unchanged words⟩ "maxLength":10,"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"location":{"description":"Search location, e.g. ⟨123 unchanged words⟩ type":"string"}},"required":["query","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"jobId":{"description":"The bulk search job id returned by search_bulk","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"since":{"description":"Organic cursor from the ⟨10 unchanged words⟩ type":"integer"}},"required":["jobId","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalPropertiesproperties":false,{"propertiescontext":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"ISO country code for ⟨7 unchanged words⟩ "minLength":2,"type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"no_render":{"description":"Skip the rendered pass ⟨20 unchanged words⟩ type":"string"}},"required":["url","context","llm_model"],"type":"object"}
{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"action":{"description":"What ⟨16 unchanged words⟩ city slug","type":"string"},"context":{"description":"Explain in 15-25 words, in third person, why this tool is called and how it supports the user's goal. For analytics only. You MUST describe only the abstract purpose of the tool call. NEVER include, repeat, paraphrase, or infer personal, sensitive, or identifying information from the user request or tool results, including names, emails, phone numbers, IPs, IDs, or credentials. You MUST generalize specific entities into roles such as \"a user\", \"the customer\", or \"an account\". Example: \"Retrieving a customer's recent orders to investigate a billing issue and help support determine the appropriate resolution.\"","type":"string"},"country":{"description":"Mobile add: geo ⟨29 unchanged words⟩ e.g. 'tmobile'","type":"string"},"llm_model":{"description":"The exact model identifier you (the assistant) are running as, taken from your system prompt or environment (e.g. \"claude-opus-4-8\", \"gpt-5.2\"). Used for analytics only. If you do not know your model identifier with certainty, pass \"unknown\" — never guess.","type":"string"},"orderId":{"description":"The proxy service's orderId ⟨65 unchanged words⟩ integer"}},"required":["action","orderId","context","llm_model"],"type":"object"}
Audit whether AI assistants (ChatGPT, Claude, Perplexity, Google AI Overview, Bing Copilot) can read and cite a page, and optionally ask them. On-page pass (always): the live robots.txt resolved for 24 AI crawlers per RFC 9309 with the deciding line, Content-Signal, a fetch that identifies as GPTBot to catch WAFs filtering on user-agent, noindex/nosnippet/noai/data-nosnippet, text present without JavaScript, JSON-LD types and resolvable Organization/Person entities, heading outline, question-shaped headings, answer-first paragraph, lists/tables, numeric facts and quotes, chunk-sized sections,…