evident
The Evident server is an agent-agnostic web extraction and fetch layer that provides tools to fetch, extract, and verify web content with a focus on transparent confidence scoring and structured data extraction.
fetch: Fetches any URL through a resilience ladder (static to rendered) and returns markdown or raw HTML, along with confidence, method, and tier information.
extract: Extracts structured data from any URL using an LLM (requires
ANTHROPIC_API_KEY) with a caller-supplied JSON schema and optional instructions.list_recipes: Lists all registered deterministic extraction recipes (e.g., for job boards like Greenhouse, Lever, Ashby) for high-confidence platform-specific parsing.
use_recipe: Invokes a specific recipe by ID to fetch data for a given slug/identifier, attaching a human-readable entity name.
health_check: Proactively verifies that a recipe or URL is still working and returning the expected data shape, preventing silent breakage.
Provides a deterministic, high-confidence extraction recipe for Greenhouse ATS job postings (e.g. ats_greenhouse), allowing structured data extraction from Greenhouse-powered career sites.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@evidentextract company contact info and pricing from https://stripe.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Evident
Evident is not another scraper. Best-in-class open-source scraping/rendering engines already exist (Crawl4AI, Playwright). Evident orchestrates them behind a resilience ladder, scores every result's trustworthiness, and lets you extract structured data from any site — not just ones someone hand-wrote a parser for — via a versioned, community-contributable recipe system.
Full vision, architecture, and roadmap:
docs/VISION.md.
Why
Most extraction tools give you clean text and let you figure out whether to trust it. Evident's whole design centers on one missing piece: every result carries a confidence score and a method explaining how it was produced, so an autonomous agent — not a human — can decide whether to act on it.
What
confidenceactually measures today: which code path produced a result (recipe match vs. LLM extraction vs. raw fetch, official API vs. reverse-engineered, fully-rendered vs. partial content) — a provenance/method signal, not a correctness signal. It is deterministic and internally consistent (a recipe match always outscores raw fetch, for example), but it is not yet calibrated against any ground truth — nothing in the pipeline compares an extracted value to what's actually correct. Treat a 0.9 as "produced by a method that's usually reliable," not as "90% likely to be factually right." Calibration against a held-out benchmark is tracked as future work indocs/VISION.md§9.
Related MCP server: Haunt API
Quickstart
git clone https://github.com/Kaushalendra-Marcus/evident
cd evident
python -m venv .venv && source .venv/bin/activate
pip install -e ".[all]"
# Run the MCP server (stdio) — works with Claude Desktop, Claude Code, Cursor,
# or any other MCP-compatible client
evident-mcpAdd to your MCP client config (example for Claude Desktop):
{
"mcpServers": {
"evident": {
"command": "/absolute/path/to/.venv/bin/evident-mcp"
}
}
}Not using an MCP client? Same engine, plain Python:
import asyncio
from evident.core import ladder
async def main():
result = await ladder.run("https://example.com")
record = ladder.to_record(result)
print(record.confidence, record.method)
print(record.data.get("markdown", "")[:500])
asyncio.run(main())Tools (MCP) / functions (SDK)
Tool | What it does |
| Universal fetch, escalates the resilience ladder automatically |
| Structured extraction against any caller-supplied schema — works on any site |
| Discover built-in, verified extraction recipes |
| Invoke a deterministic, high-confidence recipe (e.g. |
| Proactively check whether a recipe or URL is still working |
Optional dependencies
Evident's core (Tier 1 static fetch) has minimal dependencies on purpose. Heavier capabilities are opt-in:
pip install "evident[render]" # Tier 2: JS-rendered pages via Crawl4AI/Playwright
pip install "evident[llm]" # extract(): LLM-based schema extraction (bring your own ANTHROPIC_API_KEY)
pip install "evident[api]" # REST API interface
pip install "evident[all]" # everything, plus dev/test toolingIf render isn't installed and Tier 1 fails, fetch() reports failure_reason: dependency_missing instead of crashing — Tier-1-only installs stay fully usable for the large share of the web that's server-rendered.
Contributing
Contributions are welcome. The single most valuable — and lowest-friction — contribution is a recipe: one YAML metadata file plus one small async fetcher function, no need to understand the resilience ladder or confidence engine. See docs/RECIPE_GUIDE.md for the recipe walkthrough, and CONTRIBUTING.md for the development setup, the two project rules every change must satisfy (a test that would have caught the bug; no unverified "it works" claims), and how to run the checks CI runs.
Testing
pip install -e ".[dev]"
pytestTests use recorded/mocked HTTP responses (respx) so they run deterministically without live network access — this was the single biggest gap in earlier hand-rolled scraping projects this one grew out of, and it's non-negotiable here.
Status
Early / pre-1.0. Tier 1 (static fetch) and the recipe registry (Greenhouse, Lever, Ashby) are implemented and unit-tested against mocked fixtures. Tier 2 (rendered fetch via Crawl4AI) is implemented and has been smoke-tested against a live page. LLM-based extract() is implemented but requires your own ANTHROPIC_API_KEY and hasn't been live-tested end-to-end yet — see docs/VISION.md roadmap for what's next.
Security
Evident's whole job is server-side fetching of caller-supplied URLs — treat it accordingly. The shipped code protects part of that surface and deliberately leaves the rest to your own deployment.
What the code protects. Every fetch path — fetch(), extract(), health_check(), the resilience ladder (Tier 1 and Tier 2), and the recipe fetchers — enforces a built-in SSRF guard. A URL whose host resolves to a non-public address (loopback, RFC1918 private ranges, link-local including the cloud metadata endpoint 169.254.169.254, and multicast/reserved/unspecified ranges) is refused before any connection is opened, as is any non-http(s) scheme. Hostnames are resolved and the resulting IPs are checked — not string-matched — so a DNS-rebinding name that points at an internal address is still blocked. A refused URL returns a diagnosable ssrf_blocked result rather than failing silently. See src/evident/core/ssrf.py.
What the code does not protect (by design, for now). The REST API and Docker image ship with no authentication and no rate limiting (docker-compose.yml publishes port 8000 directly). This is a deliberate scope decision for a self-hosted, single-operator tool, not an oversight — so:
Do not expose the REST API directly to the public internet. Run it behind your own reverse proxy with auth, or keep it on localhost / a private network, if you use
evident.api.restor the Docker image.The MCP server (stdio, single local user) has no such network exposure and is the lowest-risk way to run Evident today.
Full security posture and how to report a vulnerability: SECURITY.md. Please report security issues through GitHub's private vulnerability reporting — not a public issue or PR with exploit details.
License
Apache-2.0 — see LICENSE. Deliberately not AGPL, to stay commercial-use-friendly.
Available Tools
5 toolsextractA
Fetch a URL and extract structured fields matching a caller-supplied
JSON schema, using an LLM — works on ANY site, not just ones with a
dedicated recipe. Use list_recipes first if you suspect a faster,
higher-confidence deterministic recipe already exists for this site.
Args:
url: The URL to extract structured data from.
json_schema: A JSON Schema (as a JSON string) describing the fields
to extract, e.g. '{"type":"object","properties":{"price":
{"type":"number"},"title":{"type":"string"}}}'.
instructions: Optional extra guidance for the extraction model.
Requires ANTHROPIC_API_KEY to be set in the environment — this tool
will return a diagnosable failure (not a crash) if it isn't.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| json_schema | Yes | ||
| instructions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries full behavioral burden and does well: it discloses that the tool uses an LLM (hence slower/less deterministic), requires ANTHROPIC_API_KEY, and specifies failure behavior (diagnosable failure, not crash). This is meaningful operational context beyond the schema. It could note potential cost/latency implications but already covers the key operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a purpose paragraph followed by an Args section. The json_schema example is slightly verbose but earns its place since it demonstrates the exact expected format. One minor inefficiency: the API-key disclosure could be more concise, but the overall structure is clean and front-loaded with the primary purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex (LLM-based, 3 params including a nested JSON schema string), and despite no annotations, the description covers purpose, fallback behavior, an example, auth requirement, and failure mode. The output schema is present, so return-value documentation isn't required. A note on typical latency or cost of LLM extraction would be a nice addition, but the core operational needs are satisfied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It does: url (URL to extract from), json_schema (JSON Schema string with a concrete example), and instructions (optional guidance). The json_schema example is particularly valuable since the schema's title 'Json Schema' alone is insufficient for an agent to construct a valid value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (fetch+extract), the resource (URL with structured fields), and the mechanism (LLM-based, works on ANY site). It explicitly distinguishes itself from the sibling `list_recipes`/`use_recipe` tools, noting the alternative is for sites with dedicated deterministic recipes. This is specific and well-differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use directive: use `list_recipes` first if a deterministic recipe may exist, otherwise use this tool for generic extraction. This directly addresses the usage decision relative to its sibling tools and provides clear guidance on the alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchA
Fetch a URL through the resilience ladder (Tier 1 static -> Tier 2 rendered, escalating only when the failure mode suggests it'll help).
Args:
url: The URL to fetch.
mode: "markdown" returns clean readable content (default).
"raw" also includes the raw HTML alongside the markdown.
Returns a JSON object with the extracted content plus `confidence`,
`method` (which tier/strategy produced it), and `tier` — always
check `confidence` before trusting the result for anything important.
On failure, `failure_reason` explains why (never a silent empty result).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| mode | No | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does well here: discloses the return shape (confidence, method, tier), instructs the agent to check confidence before trusting, and guarantees no silent empty results on failure (failure_reason). This is rich, actionable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with a clear one-line summary, then formatted Args section, then return/failure details. Every sentence earns its place — no fluff, front-loaded with the key purpose statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only 2 simple params and an output schema, this is a complex tool (multi-tier escalation). The description covers the fetch strategy, both parameters, the return contract, confidence guidance, and failure semantics. Exceptionally complete for its complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description must compensate fully. It documents both parameters: url (clear from name/schema) and mode, explaining markdown vs raw semantics with clear defaults. The mode explanation adds real value beyond the schema's bare type/default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource ("Fetch a URL") with specific mechanism described (resilience ladder with tier escalation). Distinguishes itself from sibling extract tool by being the URL-fetching primitive, and references a distinctive multi-tier strategy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes the escalation behavior (static -> rendered, escalating when failure suggests it helps), giving an agent context on how the tool self-optimizes. Doesn't explicitly name alternatives or say when NOT to use it, but the clear scope of the tool makes this a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkB
Proactively verify a recipe or a raw URL is still working, rather than discovering breakage only when a real search silently returns zero results. Pass either a recipe id (checks with a known-good test slug isn't available generically, so this reports whether the endpoint itself is reachable and returning the expected top-level shape) or a plain URL (runs it through the ladder and reports the outcome).
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that this is a verification/reporting operation (non-mutating), and partially explains behavior: checks endpoint reachability and 'expected top-level shape' for recipes, and 'runs through the ladder' for URLs. However, 'the ladder' is undefined jargon, and the odd parenthetical about 'known-good test slug' is confusing and doesn't clarify what a failed check actually does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the purpose well, but the parenthetical about 'known-good test slug isn't available generically' is confusing, self-referential, and nearly unparseable. This sentence should be rewritten or removed since it undermines clarity without adding actionable value. The description is somewhat rambling and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is an output schema present, so return-value details are covered structurally. The tool has only 1 parameter which is reasonably explained, but the parenthetical confusion and the undefined 'ladder' concept leave notable gaps. Given the absent annotations and moderate complexity of dual-target behavior, the description should be more explicit about what constitutes a healthy versus broken result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only 1 parameter (target) with 0% schema description coverage, so the description must compensate. It does explain that target accepts either a recipe id or a plain URL and differentiates the behavior for each. However, it doesn't describe the expected format of the target (how to distinguish a recipe id from a URL, any prefix/ID format), leaving some ambiguity for the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: verify a recipe or raw URL is still working, and distinguishes it from the silent-failure alternative of discovering breakage only after a real search. It names the two input forms (recipe id or plain URL) and what each checks. However, it doesn't explicitly name sibling tools like fetch or use_recipe to differentiate, and the purpose is somewhat muddled by the parenthetical about 'known-good test slug isn't available generically'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys when to use it (proactively verify before discovering breakage), and distinguishes recipe-id checks from URL checks. However, it doesn't explicitly state when NOT to use it or name alternative tools (fetch, use_recipe, extract) to clarify boundaries. The usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesA
List every registered extraction recipe (platform-specific, verified
parsers — e.g. Greenhouse, Lever, Ashby job boards). Check this before
calling extract with a manual schema: a matching recipe is faster and
higher-confidence than LLM extraction.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It conveys that the tool is a read-only listing operation (implicitly safe, non-destructive) and frames recipes as 'verified parsers' with a speed/confidence advantage. It doesn't explicitly state return format, but the presence of an output schema partially covers return-value disclosure. For a simple list op with no annotations, this is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver complete value with zero waste. The first sentence states the purpose with concrete examples, and the second provides actionable usage guidance that ties into a sibling tool (extract). Every clause earns its place; no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is parameterless with a clean purpose and an output schema present, the description is complete. It explains what the tool returns (registered extraction recipes) and how to use it in the workflow (before extract with manual schema). The presence of an output schema relieves the description from detailing return structure. Nothing meaningful is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool has 0 parameters, so per the rubric the baseline is 4. There is no schema info to add value beyond, and the tool genuinely doesn't need parameters. The description focuses entirely on output semantics rather than inputs, which is appropriate for a parameterless list operation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific purpose: 'List every registered extraction recipe (platform-specific, verified parsers — e.g. Greenhouse, Lever, Ashby job boards).' The verb 'List' clearly identifies the action and the resource (extraction recipes) is precisely scoped. It distinguishes from siblings by naming the resource type and examples, making it unambiguous what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: 'Check this before calling `extract` with a manual schema: a matching recipe is faster and higher-confidence than LLM extraction.' This tells the agent exactly when to use this tool (before extract) and explains the rationale, effectively framing it as a prerequisite decision step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_recipeA
Invoke a specific recipe by id (see list_recipes) against one
entity's slug/identifier on that platform.
Args:
recipe_id: e.g. "ats_greenhouse", "ats_lever", "ats_ashby".
slug: The platform-specific identifier (e.g. a Greenhouse board
token — the part of boards.greenhouse.io/<slug>).
entity_name: A human-readable name to attach to results (e.g. the
company name), since the raw API responses often don't include it.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| recipe_id | Yes | ||
| entity_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description gives useful hints (raw API responses often don't include entity name, hence entity_name param) but doesn't disclose side effects, whether it writes to a system, rate limits, auth requirements, what gets persisted/attached, or what happens on invocation—whether results are stored or merely returned. For an 'invoke' tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-organized, with each parameter getting its own brief docstring line with concrete examples. The prose is efficient with minimal waste. It could be slightly more front-loaded about the overall action, but the docstring-style format is clean and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is an output schema present, which partially reduces the burden on the description for return-value explanation. The description explains the three parameters well and covers the invocation semantics. However, it omits behavioral context that matters for a recipe invocation: does it write/update data, is it safe/idempotent, are there prerequisites beyond a valid recipe_id? With no annotations, these gaps make the description feel incomplete for a tool that evidently has side effects worth understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It does well: recipe_id gets concrete examples (ats_greenhouse, ats_lever, ats_ashby), slug gets a Greenhouse board token example with the boards.greenhouse.io/<slug> URL pattern, and entity_name gets its rationale (results often lack company name) plus an example. This adds meaningful value well beyond the bare schema field titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: invoke a specific recipe by id against one entity's slug/identifier on that platform. The verb 'invoke' plus the resource (recipe by id) is specific. It distinguishes somewhat from siblings by referencing list_recipes as the source for recipe ids, though it doesn't explicitly contrast with fetch/extract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description references list_recipes as the source for recipe ids, giving implicit guidance on how to obtain valid recipe_id values. It provides clear contextual use (invoking recipes against a platform entity). However, it doesn't explicitly state when NOT to use this tool or name specific alternatives, though the sibling context (fetch/extract/list_recipes) makes the distinction reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
extract - First observed
fetch - First observed
health_check - First observed
list_recipes - First observed
use_recipe
TDQS
Scored across 5 tools
The tools mostly have distinct purposes: fetch grabs raw content, extract does structured LLM extraction, recipes are deterministic parsers, health_check verifies things. There's some boundary fuzziness between fetch and extract (both fetch a URL), and between extract and use_recipe (both produce structured data), but descriptions strongly clarify which to use when.
Tools use consistent snake_case naming with imperative verbs (fetch, extract, list, use, health_check). 'list_recipes' and 'use_recipe' pair well, and 'health_check' is clear. Minor inconsistency: health_check is a compound noun rather than verb_noun, and 'extract'/'fetch' are bare verbs without object nouns, though still readable.
Five tools is well-scoped for a web-scraping/extraction server. Each tool serves a distinct layer of the pipeline (fetching, LLM extraction, deterministic recipes, recipe invocation, health verification), with no redundant or padding tools.
The surface covers the full extraction lifecycle: discover recipes (list_recipes), use them (use_recipe), fall back to generic extraction (extract), basic fetching (fetch), and verification (health_check). Minor gap: no listing or discovery of available entities/boards beyond recipes, and no way to retrieve cached/past results, but the core workflow is complete.
Maintenance
Related MCP Connectors
- mcpOAuthcom.sequentum
Turn the web into structured, reliable, actionable enterprise data for AI Agents
Web scraping for AI agents. Extract text and metadata from any URL worldwide. $0.005/page.
Cloud scraping & crawling API for AI agents. Turn any URL into clean, LLM-ready markdown.
Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceThe web data platform for AI agents. Fetch, search, crawl, extract, monitor, and screenshot any URL. 55+ domain extractors, 65-98% token savings. 7 MCP tools included.332 npm12AGPL 3.0
- AlicenseAqualityFmaintenanceStructured web extraction for AI agents. Pass any URL and a prompt, get clean JSON data back. Native MCP server with 100 free requests/month.3794 npmMIT
- AlicenseAqualityDmaintenanceStructured web context infrastructure for AI agents. Extract reliable schema-guided JSON from websites using Claude-powered parsing, Browserless fallback rendering, and MCP-native workflows.11MIT
- AlicenseNot gradedqualityDmaintenanceOpen-source web scraper and extraction MCP server with JavaScript rendering, markdown output, PDF/DOCX parsing, structured errors, and validated extraction contract diagnostics for agents.2AGPL 3.0