protogrid

Search / io.github.carsonroell-debug/steadyfetch

SteadyFetch

not classified

Reliable web fetching for AI agents with retry, circuit breaker, caching, and anti-bot bypass

v0.1.1 · active · descriptor JSON · versions

Not classified yet.The remote endpoints have not been probed successfully, or the listing has nothing to connect to.
Quality77good
Trust36of 100
Uptime, 30 days93%
Latency p50409 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "steadyfetch": {
      "type": "http",
      "url": "https://steadyfetch-production.up.railway.app/mcp"
    }
  }
}
claude mcp add --transport http steadyfetch https://steadyfetch-production.up.railway.app/mcp
[mcp_servers.steadyfetch]
url = "https://steadyfetch-production.up.railway.app/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "steadyfetch": {
      "type": "remote",
      "url": "https://steadyfetch-production.up.railway.app/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "steadyfetch": {
      "type": "http",
      "url": "https://steadyfetch-production.up.railway.app/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=steadyfetch&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc3RlYWR5ZmV0Y2gtcHJvZHVjdGlvbi51cC5yYWlsd2F5LmFwcC9tY3AifQ%3D%3D"
}
{
  "servers": {
    "steadyfetch": {
      "type": "http",
      "url": "https://steadyfetch-production.up.railway.app/mcp"
    }
  }
}
{
  "mcpServers": {
    "steadyfetch": {
      "httpUrl": "https://steadyfetch-production.up.railway.app/mcp"
    }
  }
}
extensions:
  "steadyfetch":
    enabled: true
    name: "steadyfetch"
    type: streamable_http
    uri: "https://steadyfetch-production.up.railway.app/mcp"
    timeout: 300

Quality 77 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene71 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • fail
    tools.annotationsno tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: cache_stats (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); clear_cache (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); fetch_url (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 637 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependencies67 · weight 15
  • fail
    deps.known_vulns2 advisories to act on (malicious, or rated high or critical with a fix available): GHSA-2g87-pp6c-29x5 in [email protected] (indirect, fixed in 3.14.4), GHSA-5wr8-gcqf-gqf3 in [email protected] (indirect, fixed in 3.14.4); 3 more of lower severity or without a fix
  • pass
    deps.mcp_sdk_versionmcp 2.2.0, no known advisory
  • pass
    deps.resolvable[email protected] resolved: 108 packages

5 tools, about 637 tokens to load them all · tool set cd88e123e356 · checked 2026-10-20 14:54 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 36 / 100

no-repository
provenance35
liveness0
freshness45
hygiene80

-unreachable(6 failures) -stale-203d -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] PyPI107 dependencies, resolved · MCP SDK mcp 2.2.0 · advisories checked 2026-10-19

advisoryseveritypackagefixed in
GHSA-2g87-pp6c-29x5aiohttp: Multiple instances of excessive or unbounded memory/CPU usehigh[email protected]indirectfixed in 3.14.4
GHSA-5wr8-gcqf-gqf3aiohttp server lacks an initial request/header timeouthigh[email protected]indirectfixed in 3.14.4
GHSA-8mgp-746c-j5xpNLTK: Model-artifact APIs bypass pathsec and touch files outside allowed rootshigh[email protected]indirectno fix yet
GHSA-w8v5-vhqr-4h9vDiskCache has unsafe pickle deserializationmoderate[email protected]directno fix yet
GHSA-494j-54xm-rwp3AIOHTTP: Secure attribute not enforced for shared cookielow[email protected]indirectfixed in 3.14.4

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://steadyfetch-production.up.railway.app/mcp streamable-httpnoneno (6 failures)93%409 ms2025-11-252026-10-09
packageregistryversionruntimesecrets
steadyfetchpypi0.1.1–

Tools (5)

cache_statsGet cache statistics — size and item count. Useful for monitoring cache utilization and deciding when to clear.
check_domainCheck the health status of a domain. Returns the circuit breaker state: 'closed' (healthy), 'open' (failing), or 'half_open' (testing recovery). Use this before batch operations to avoid wasting time on domains that are down. Args: domain: The domain to check (e.g., 'example.com')
clear_cacheClear the entire fetch cache. Use when you need fresh data and don't want to rely on cached results.
fetch_markdownFetch a URL and return clean markdown text optimized for LLM consumption. Same reliability as fetch_url but returns only the markdown content, stripping HTML, scripts, and noise. Best for when you need the page content for analysis, summarization, or data extraction. Args: url: The URL to fetch use_cache: Whether to use cached results (default: true) wait_for: CSS selector to wait for before capturing
fetch_urlFetch a URL with full reliability — retry, circuit breaker, cache, and anti-bot bypass. Returns both raw HTML and clean markdown. Automatically retries on failure with exponential backoff, falls back to plain HTTP if browser fetch fails, and circuit-breaks domains that are consistently down. Args: url: The URL to fetch use_cache: Whether to use cached results (default: true, TTL 1 hour) js_render: Whether to render JavaScript (default: true, disable for speed) wait_for: CSS selector to wait for before capturing (e.g., '.results-loaded')

Schemas: list_tools.

Similar MCP servers

More from io.github.carsonroell-debug

Official server.json
{
  "name": "io.github.carsonroell-debug/steadyfetch",
  "title": "SteadyFetch",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://steadyfetch-production.up.railway.app/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.1.1",
  "packages": [
    {
      "version": "0.1.1",
      "transport": {
        "type": "stdio"
      },
      "identifier": "steadyfetch",
      "registryType": "pypi"
    }
  ],
  "description": "Reliable web fetching for AI agents with retry, circuit breaker, caching, and anti-bot bypass"
}