# Backfill Fetch

> Pay-per-fetch web extraction for agents: POST a URL, get clean markdown. x402 USDC on Base.

- name: top.backfill/backfill-fetch
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 95/100
- quality: 73/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/top.backfill%2Fbackfill-fetch
- tools: https://api.protogrid.dev/v1/servers/top.backfill%2Fbackfill-fetch/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "backfill-fetch": {
      "type": "http",
      "url": "https://backfill.top/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 98
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-95% +updated-5d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 73/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: extract_data (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); fetch_page (readOnlyHint, destructiveHint, idempotentHint, openWorldHint)
- pass `tools.token_cost`: about 388 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 5 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 2, about 388 tokens to load them all
- tool set hash: e9010c1bc149b2368d5aaffec6103914
- badge: [![protogrid quality](https://protogrid.dev/badge/top.backfill/backfill-fetch.svg)](https://protogrid.dev/servers/top.backfill/backfill-fetch)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://backfill.top/mcp (streamable-http, auth none, reachable true, uptime30d 0.95454544)

## Packages

_none_

## Tools (2)

- `extract_data`: Extract structured data from a web page, returned as JSON matching a JSON Schema you supply, via Backfill Extract. The service fetches the URL (a plain fetch first, with escalation when the plain fetch returns a bot wall or a JavaScript shell) and extracts the data described by the schema. Extraction is always a paid call (x402, USDC on Base: $0.15 fresh, $0.05 for a cached result), so a call over MCP returns an error directing you to the paid HTTP API at POST https://backfill.top/v1/extract; payment is never attempted over MCP.
- `fetch_page`: Fetch a web page and return its readable content as clean markdown, via Backfill Fetch. The service fetches the URL (a plain fetch first, with escalation when the plain fetch returns a bot wall or a JavaScript shell) and extracts the content. Calls are answered free when the fetch is free — a plain fetch inside the daily allowance, or a cache hit inside the free cache allowance. When serving the page would require payment (x402, USDC on Base), the call returns an error directing you to the paid HTTP API at POST https://backfill.top/v1/fetch; payment is never attempted over MCP.
