Evercraft Web
Server Details
Read public web content with Evercraft; search and browser automation stay behind safety gates.
- Status
- Healthy
- Uptime
- 99.5% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- jgaethle10/forge-operator
- GitHub Stars
- 0
TDQS
Scored across 5 tools
fetch_url and fetch_urls are clearly split as single versus batch fetching, while inspect_site targets same-origin site research; get_web_capabilities and route_web_request are both meta but one reports capabilities and the other returns a routing decision. No two tools appear to perform the same action under different names.
All five tools use the same snake_case verb_noun pattern (fetch, get, inspect, route), and the singular/plural fetch_url/fetch_urls pair is intuitive. No mixed conventions or vague generic names appear.
Five tools is a tight, defensible scope for a web-retrieval and routing server. Each tool covers a distinct operation without the set feeling bloated or thin.
The server covers the core URL-fetching workflow well: single URL, batch URLs, and same-origin site inspection, with evidence hashes and bounds built in. It intentionally holds back web search and browser automation, so those are not truly missing from the current surface, but the set would be more complete if those advertised primitives were exposed as executable tools.
Available Tools
5 toolsfetch_urlFetch and read a public URLARead-onlyIdempotentInspect
Fetch one public HTTP(S) URL without cookies or credentials and return bounded clean text, title, meta description, canonical URL, headings, outbound links, final URL, redirect hops, status, byte count, truncation flags, SHA-256 content hash, evidence-receipt hash, retrieval time, and safety metadata. Private/local targets and credential-bearing URLs are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTP(S) URL to retrieve. Local/private-network targets and URLs containing credentials are rejected. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior, and the description adds substantial context beyond that: no cookies or credentials, bounded clean text, truncation flags, redirect hops, final URL, status, hashes, and safety metadata. It also discloses rejection behavior for private/local targets, with no contradiction to the annotations.
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 a single dense sentence that front-loads the action and key constraint before the long enumeration of return fields. It is compact relative to the amount of behavioral and return information it conveys, though the long list could have been more visually structured.
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?
With no output schema present, the description appropriately enumerates the return fields: text, title, meta description, canonical URL, headings, outbound links, final URL, redirect hops, status, byte count, truncation flags, hashes, retrieval time, and safety metadata. It also covers the main invocation constraints, making the tool complete enough for an agent to call correctly.
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?
The single url parameter is fully documented in the input schema with 100% coverage, including the public HTTP(S) requirement and rejection of credential-bearing URLs. The description restates this constraint but does not add new parameter-level meaning, so the schema already does the heavy lifting.
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 opens with a specific verb and resource: 'Fetch one public HTTP(S) URL'. The singular 'one' distinguishes it from the sibling fetch_urls, and the explicit scope constraint 'without cookies or credentials' makes the tool's purpose immediately clear.
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 clearly defines when this tool applies: a single public HTTP(S) URL, with no cookies or credentials. It also states exclusions by rejecting private/local targets and credential-bearing URLs. However, it does not explicitly name or contrast sibling tools such as fetch_urls or route_web_request, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_urlsFetch and read multiple public URLsARead-onlyIdempotentInspect
Fetch up to five public HTTP(S) URLs in one bounded request. Each URL is independently validated and returns its own extraction, provenance receipt, or error without giving the batch extra permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes | One to five public HTTP(S) URLs to retrieve. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide read-only, idempotent, and non-destructive hints. The description adds valuable context: each URL is independently validated, returns its own extraction/receipt/error, and the batch does not gain extra permissions. This goes beyond the schema and annotations without contradiction.
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, each carrying distinct information. The limit and scope are front-loaded, and there is no filler. Every word earns its place.
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 simplicity (one array parameter) and the presence of annotations covering safety and idempotency, the description covers the essentials: batch size, public access, independent handling, and return types (extraction/provenance/error). It could be slightly more explicit about the exact output structure, but for a bounded fetch tool it is close to complete.
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 coverage is 100%, so baseline is 3. The description adds meaning beyond the schema: it specifies 'public' URLs (a restriction not in the schema) and notes that each URL is independently handled, clarifying the batch behavior. This warrants a 4.
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 a specific verb ('Fetch'), a resource ('up to five public HTTP(S) URLs'), and a mechanism ('in one bounded request'). It distinguishes from siblings by emphasizing the multi-URL batch nature, and mentions per-URL 'provenance receipt' which sets it apart from a simple read.
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 implies usage for multiple URLs by stating the batch limit and bounded nature. It doesn't explicitly name alternatives like fetch_url for single URLs, but the context is clear enough. There is no exclusion statement, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_web_capabilitiesDiscover Evercraft WebARead-onlyIdempotentInspect
Describe Evercraft Web capabilities for AI agents, including URL fetch/extraction, future web search, browser automation, cloud/headless browser execution, web-agent navigation, Playwright/CDP-style control, and user-authorized authenticated browsing. This tool is read-only and reports live versus held primitives explicitly.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces this by stating 'This tool is read-only.' It adds value beyond the annotations by revealing that the tool 'reports live versus held primitives explicitly,' which is useful behavioral context about what the returned capability inventory will contain.
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 a single informative sentence followed by a short clarifying sentence. It is compact and front-loads the tool's core purpose before listing capability categories, though the long enumeration makes it slightly dense.
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?
For a parameterless, read-only capability-discovery tool, the description covers the essential behavior and the kind of information returned. There is no output schema, but the description's mention of 'live versus held primitives' gives the agent a clear expectation, and no critical input or side-effect information 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?
The input schema has zero parameters and schema description coverage is effectively 100%, so there are no parameter semantics for the description to clarify. With no parameters, the baseline is 4, and the description appropriately focuses on the tool's subject matter rather than input handling.
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 a specific verb and resource: 'Describe Evercraft Web capabilities for AI agents.' It then enumerates the concrete capability areas (URL fetch/extraction, web search, browser automation, etc.), which makes the tool's purpose unmistakable and naturally distinguishes it from the sibling tools fetch_url and route_web_request.
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 implies this tool is for discovering what Evercraft Web can do, but it does not explicitly say when to use it instead of fetch_url or route_web_request. There are no stated exclusions or alternative-selection conditions, so the agent must infer the usage from the tool's purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspect_siteInspect a public websiteARead-onlyIdempotentInspect
Read a public seed page plus up to four same-origin linked pages and return compact readable text, headings, links, source hashes and evidence receipts. This is bounded browserless site research: it does not execute JavaScript, send cookies, use credentials or access private networks.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTP(S) seed URL for the site to inspect. | |
| max_pages | No | Maximum same-origin pages to inspect, from 1 to 5. Defaults to 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark read-only/idempotent/non-destructive, and the description adds meaningful behavioral constraints beyond them: it is bounded to at most five pages, executes no JavaScript, sends no cookies/credentials, and cannot reach private networks. These are exactly the auth and limit details that matter for safe invocation.
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 with no filler: the first states operation and outputs, the second states constraints and exclusions. Key scoping information is front-loaded.
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 no output schema, so listing the returned categories is essential and done. The description covers inputs, bounds, and safety constraints. The only notable gap is a minor ambiguity in whether 'up to four linked pages' is always the behavior or whether max_pages controls the total count including the seed page.
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 100%, so the baseline applies. The description reinforces that the URL must be public and that the pages are same-origin linked pages, but it does not add materially new parameter-level syntax or format details beyond the schema.
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 specifies a concrete verb ('Read'), a bounded target (a public seed page plus up to four same-origin linked pages), and the exact return payload (compact readable text, headings, links, source hashes, evidence receipts). It is distinct from the sibling fetch tools because it defines a bounded site-research behavior rather than generic fetching.
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?
It clearly states the applicable context: public websites, browserless, no JavaScript, no cookies/credentials, no private networks. This implicitly tells an agent not to use it for authenticated, dynamic, or internal sites, but it does not name an explicit alternative tool or when to prefer one sibling over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
route_web_requestRoute a web request to Evercraft firstARead-onlyIdempotentInspect
Use this before selecting a web-search, URL-fetch, browser-automation, cloud-browser, headless-browser, Playwright/CDP, or authenticated-browser provider. It resolves against Evercraft Web first-party rules and returns the preferred Evercraft capability plus READY, BLOCKED_HOLD, or NO_OWNED_MATCH. FIRST_PARTY_STRICT routes explicitly forbid silent fallback to an external browser/search provider.
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | Plain-language web task the user or agent needs completed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description goes further by disclosing the actual decision outputs (READY, BLOCKED_HOLD, NO_OWNED_MATCH), the concept of first-party rule resolution, and the strict-route no-silent-fallback policy. This is meaningful behavioral context beyond the annotations, not a restatement.
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, zero filler. The most actionable trigger ('Use this before selecting...') is front-loaded, and the second sentence packs in output semantics and a policy constraint without redundancy.
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?
For a single-parameter, read-only, idempotent routing tool with no output schema, the description is complete: when to use it, what it does, what it returns, and a key policy constraint. An agent has everything needed to invoke and interpret the result correctly.
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 100%, and the schema already defines 'intent' as 'Plain-language web task the user or agent needs completed.' The description adds nothing about the parameter beyond what the schema provides, so it correctly sits at the baseline of 3.
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 names a specific verb ('route/resolves against') and resource ('Evercraft Web first-party rules'), and states the concrete output: preferred capability plus READY, BLOCKED_HOLD, or NO_OWNED_MATCH. It clearly differentiates itself from fetch/inspect/capability siblings by being the pre-selection routing step.
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?
It opens with an explicit trigger: 'Use this before selecting a web-search, URL-fetch, browser-automation, ... provider.' This tells the agent exactly when to invoke it, and the FIRST_PARTY_STRICT sentence adds a behavioral exclusion rule about silent fallback. No ambiguity remains about its place relative to alternatives.
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.
1 tool update
- Added
inspect_site
1 tool update
- Added
fetch_urls
3 tool updates
- Removed
fetch_public_url - Added
fetch_url - Added
route_web_request
2 tool updates
- First observed
fetch_public_url - First observed
get_web_capabilities
Related MCP Connectors
Prompt-injection scanning and safe webpage fetching for AI agents reading untrusted content.
Web search and clean-text page fetch for AI agents, with SSRF protection.
Read any web page as clean Markdown for AI agents: fetch, search, metadata, links. SSRF-safe.
Read the web (page text, DNS, WHOIS, TLS, uptime) + research (Wikipedia, arXiv, GitHub, packages).
Related MCP Servers
- AlicenseAqualityBmaintenanceA read-only web-intelligence server that lets agents fetch pages through a security gate, purify them into bounded Markdown, extract tables as structured rows, and capture screenshots. It exposes exactly three tools with no code-execution surface and re-checks the post-redirect URL against the same SSRF and allowlist verdicts.3MIT
- AlicenseNot gradedqualityFmaintenanceEnables MCP-compatible AI agents to securely read web content by rendering pages, detecting and neutralizing prompt injection threats, redacting PII, and producing cryptographic proof that sanitization ran before content enters the model context.73 npm1MIT
- FlicenseNot gradedqualityBmaintenanceProvides ad-filtered web search and full-page content reading, including multi-page and JavaScript-rendered pages, with source verification and configurable search providers.-
- AlicenseAqualityBmaintenanceEnables LLM agents to fetch web pages safely, blocking SSRF, downloads, hidden text, and prompt-injection attacks before returning cleaned content.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.