{"name":"com.agishub/web-scraper","slug":"agishub-web-scraper","title":null,"description":"10 pay-per-call web tools: markdown, CSS scrape, links, crawl, screenshot, PDF, browser.","url":"https://mcp.market/server/agishub-web-scraper","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"scraping","tags":["scraping"],"presence":{"score":23,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-09-11T07:30:22.000Z","license":"MIT"},"uptime":{"percent":100,"checks":2,"ok":2,"last_checked_at":"2026-09-19T21:01:15.543Z","last_ok_at":"2026-09-19T21:01:15.543Z","latency_ms":501},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/agishub/agishub-mcp","website":"https://agishub.com","version":"3.0.0","remotes":[{"type":"streamable-http","url":"https://api.agishub.com/mcp/web"}],"packages":[],"tools":[{"name":"browser","description":"Drive a headless browser: open a URL and run an ordered list of steps — click, type, press keys, wait, extract text and screenshot. For flows the plain scraper can't reach (logins, forms, multi-step pages).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Starting URL to open in a headless browser."},"steps":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["click","type","press","wait","extract_text","screenshot"],"description":"What to do."},"selector":{"type":"string","description":"CSS selector (for click/type/wait-for/extract_text)."},"text":{"type":"string","description":"Text to type (type), or key to press (press, e.g. 'Enter')."},"ms":{"type":"integer","minimum":0,"maximum":10000,"description":"Milliseconds to wait (wait, when no selector given)."}},"required":["action"],"additionalProperties":false},"maxItems":20,"description":"Ordered actions to perform after the page loads."},"screenshot":{"type":"boolean","description":"Also return a final full-page PNG screenshot (base64)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crawl","description":"Crawl multiple pages of a site, respecting link depth and domain limits. Returns async job_id; results include markdown or HTML per page. Use it to fetch and process many pages of content at once.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Root domain URL to crawl (e.g., https://example.com)."},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":100,"description":"Maximum pages to crawl (default 100, max 100 per call). Returns 202 with job_id for async processing. For larger sites, issue several calls: each one is priced the same, so 1.000 pages cost ten calls."},"max_depth":{"type":"integer","exclusiveMinimum":0,"maximum":10,"description":"Maximum link depth from root (default 2, max 10). Depth 0 = root only, depth 1 = root + direct children."},"formats":{"type":"array","items":{"type":"string","enum":["markdown","html"]},"description":"Output formats per page (default ['markdown']). 'html' adds raw HTML."},"same_domain":{"type":"boolean","description":"Only crawl URLs on the same domain (default true). Subdomain links are excluded when false."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"crawl_status","description":"Check the status of a crawl started with crawl, and retrieve its pages once finished. Free: the crawl itself was already paid for when it was queued.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"Job ID returned from POST /v1/crawl, used to check status and retrieve results."}},"required":["job_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"extract","description":"Fetch any public web page and return its main content as clean, token-efficient Markdown (title, description, headings, links, lists). Set render:true to execute JavaScript first for single-page apps or JS-heavy pages that would otherwise come back empty. Built for RAG and for agents that need to read the contents of a URL.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full http/https URL of the page to extract."},"render":{"type":"boolean","description":"Render JavaScript with a headless browser before extracting (default false). Enable for SPAs / JS-heavy pages that return empty content otherwise. Slower."},"include_links":{"type":"boolean","description":"Keep hyperlinks in the markdown output (default true)."},"include_images":{"type":"boolean","description":"Keep images as markdown (default false)."},"max_chars":{"type":"integer","exclusiveMinimum":0,"description":"Truncate the markdown to at most this many characters (sets truncated:true)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"extract_structured","description":"AI-powered structured extraction: give a URL plus a natural-language prompt and/or a JSON Schema, and get back clean structured JSON (e.g. product name, price, rating). Renders the page in a headless browser first, so it works on SPAs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full http/https URL of the page to extract data from."},"prompt":{"type":"string","description":"Natural-language instruction of what to extract, e.g. 'the product name, price and rating'. Provide this and/or a schema."},"schema":{"type":"object","additionalProperties":{},"description":"Optional JSON Schema object describing the exact shape of the data to return. When given, the output is constrained to it."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"links","description":"Return every hyperlink on a JavaScript-rendered page as a list of absolute URLs, with options to keep only visible links or only same-site links. Backed by a headless browser. Use it to map a site or seed a crawler.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full http/https URL of the page to read links from."},"visible_only":{"type":"boolean","description":"Return only links visible in the rendered layout (default false)."},"exclude_external":{"type":"boolean","description":"Drop links pointing to other domains, keeping only same-site links (default false)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"map","description":"Discover all URLs reachable from a domain within a link depth limit. Returns a flat list of absolute URLs, respects robots.txt crawl delays. Use it to map a site's structure before crawling.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Root domain URL to map (e.g., https://example.com)."},"limit":{"type":"integer","exclusiveMinimum":0,"maximum":200,"description":"Maximum URLs to return (default 100, max 200 per call). Respects robots.txt crawl-delay."},"include_subdomains":{"type":"boolean","description":"Include URLs from subdomains (default false, same domain only)."},"search":{"type":"string","description":"Optional regex or plain string to filter results (case-insensitive)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"pdf","description":"Render a public URL or a raw HTML string into a PDF document, returned base64-encoded. Backed by a headless browser. Use for invoices, reports, receipts and any HTML-to-PDF need.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public http/https URL to render to PDF. Provide this OR html."},"html":{"type":"string","description":"Raw HTML string to render to PDF. Provide this OR url."},"landscape":{"type":"boolean","description":"Landscape orientation (default false = portrait)."},"format":{"type":"string","enum":["A4","Letter","Legal","A3","A5","Tabloid"],"description":"Paper size (default A4)."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"scrape","description":"Extract specific elements from a JavaScript-rendered page by CSS selector. Give a list of selectors (e.g. 'h1', '.price', 'a.product') and get back the text and attributes of every match. Backed by a headless browser, so it works on SPAs and JS-heavy pages.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full http/https URL of the page to scrape."},"selectors":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":20,"description":"CSS selectors to extract, e.g. ['h1', 'a.product', '.price']. Returns the text and attributes of every match per selector."}},"required":["url","selectors"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"screenshot","description":"Capture a PNG screenshot of any public URL — full page or just the viewport, at a chosen size — returned base64-encoded. Backed by a headless browser.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Public http/https URL to capture."},"full_page":{"type":"boolean","description":"Capture the entire scrollable page instead of just the viewport (default false)."},"width":{"type":"integer","exclusiveMinimum":0,"description":"Viewport width in pixels (default 1280)."},"height":{"type":"integer","exclusiveMinimum":0,"description":"Viewport height in pixels (default 800)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"snapshot","description":"Capture several representations of a page in one call — rendered HTML plus a PNG screenshot by default, and optionally Markdown and the accessibility tree. Backed by a headless browser. Saves round-trips when an agent needs both the content and a visual of a page.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Full http/https URL to capture."},"formats":{"type":"array","items":{"type":"string","enum":["html","screenshot","markdown","accessibilityTree"]},"description":"Which representations to return (default ['html','screenshot']). Add 'markdown' and/or 'accessibilityTree' as needed."},"full_page":{"type":"boolean","description":"Capture the full scrollable page in the screenshot instead of just the viewport (default false)."},"width":{"type":"integer","exclusiveMinimum":0,"description":"Viewport width in pixels (default 1280)."},"height":{"type":"integer","exclusiveMinimum":0,"description":"Viewport height in pixels (default 800)."}},"required":["url"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-19T20:27:42.827Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:27:42.777Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":17,"max":20,"notes":["remote reachable in 2446ms"]},"poisoning":{"score":15,"max":15,"notes":["11 tool descriptions checked"]},"auth":{"score":10,"max":15,"notes":["open endpoint, read-only tools"]},"maintenance":{"score":15,"max":15,"notes":["last push 9 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","website matches verified namespace"]}},"findings":[],"inputs":{"probes":[{"url":"https://api.agishub.com/mcp/web","reachable":true,"authRequired":false,"latencyMs":2446,"serverInfo":{"name":"web-scraper","version":"3.0.0"}}],"packages":[],"repo":{"found":true,"owner":"agishub","repo":"agishub-mcp","archived":false,"pushedAt":"2026-09-11T07:30:22Z","stars":0,"forks":0,"openIssues":0,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/302189868?v=4","ownerCreatedAt":"2026-07-10T15:27:36Z","license":"MIT"},"icon":{"url":"https://agishub.com/icon.png?icon.1n8oao5g8u_my.png","source":"registry","width":512,"height":512},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-11T07:30:22.000Z","score":23}}}},"grade_history":[{"kind":"restore","fromGrade":"B","toGrade":"A","reason":"score 88","createdAt":"2026-09-19T20:27:45.446Z"}],"reviews":[]}