# ContextFetch

> Web search and any page as LLM-ready Markdown for AI agents. Free keyless tier, no signup.

- name: dev.contextfetch/mcp
- version: 1.0.1
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 81/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/dev.contextfetch%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/dev.contextfetch%2Fmcp/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "contextfetch": {
      "type": "http",
      "url": "https://api.contextfetch.dev/mcp",
      "headers": {
        "x-api-key": "${X_API_KEY}"
      }
    }
  }
}
```

Placeholders to fill: `${X_API_KEY}`.

## Trust

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

## Quality 81/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 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: 86 (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
- pass `tools.annotations`: 13 of 13 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: contextfetch_balance (destructiveHint, idempotentHint); search (destructiveHint, idempotentHint); contextfetch_search (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 2,222 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 0 of the 7 days needed

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

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: dependencies not resolved yet

- tools: 13, about 2,222 tokens to load them all
- tool set hash: 989e3c8d56c71375b9065ad5812209dc
- badge: [![protogrid quality](https://protogrid.dev/badge/dev.contextfetch/mcp.svg)](https://protogrid.dev/servers/dev.contextfetch/mcp)
- 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._

## Dependencies

- npm @contextfetch/mcp@1.0.1: pending

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.contextfetch.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm @contextfetch/mcp@1.0.1 secrets: CONTEXTFETCH_API_KEY

## Tools (13)

- `contextfetch_answer`: Answer a question with passages quoted verbatim from the web, never generated: searches, scores every passage of the top pages with a cross-encoder and returns the best ones with [n] citations to their sources. Use it for quick factual lookups; the quotes may not fully answer an open-ended question. Costs 1 credit.
- `contextfetch_auto_reload`: Turn auto-reload on or off, or change it: when credits drop below `threshold`, the saved card buys `pack` again, up to `monthly_max_usd` per month. Needs an API key and a card saved at checkout. The monthly cap cannot be raised above $500 here.
- `contextfetch_balance`: Show the API key's remaining credits, daily burn rate (7-day average) and auto-reload settings, including the last auto-reload error if a payment failed. Needs an API key (Authorization: Bearer); free.
- `contextfetch_crawl`: Crawl one website from a start URL and get its pages as Markdown: same-site links only, up to `max_depth` hops (<= 3) and `limit` pages (<= 50). Pass `query` to rank the pages by relevance and return only their relevant passages. Costs 1 credit per page returned.
- `contextfetch_deep_research`: Same as contextfetch_research (kept for existing clients): up to 3 sub-queries run server-side, sources deduped and ranked against the question, one Markdown evidence pack with numbered sources and query-pruned passages. Each sub-query is one search and costs 1 credit. You SHOULD pass your own `sub_queries` (up to 3 distinct angles on the question) for better coverage. If omitted, they are derived from `query`: the query itself, query + "documentation", and query + "benchmark" when it asks about speed, performance or comparisons, else query + "example".
- `contextfetch_extract_url`: Fetch a public web page (docs, articles, GitHub files, arXiv papers) as clean Markdown with tables preserved. Pass `query` to get only the passages relevant to it instead of the whole page.
- `contextfetch_find_similar`: Find pages similar to a given URL (alternatives, related docs, competing libraries), excluding the source domain. Returns titles, URLs and the most relevant passages as Markdown.
- `contextfetch_get_free_key`: Get a free ContextFetch API key (no signup, no payment) with starter credits, for when the keyless daily limit runs out. One key per network, ever: keep the key it returns and use it as `Authorization: Bearer <key>`.
- `contextfetch_map`: List a website's URLs without fetching its pages: its sitemaps (from robots.txt, else /sitemap.xml) plus the start page's links, same site only, up to `limit` (<= 5,000). Use it to find the right pages before contextfetch_extract_url or contextfetch_crawl. Costs 1 credit.
- `contextfetch_research`: Research a question in one call, server-side: runs up to 5 web searches (sub-queries) concurrently, dedupes the pages by URL, ranks them all against the question with a cross-encoder and returns one Markdown evidence pack with numbered [n] sources and their query-pruned passages, quoted verbatim (no generated text). Costs 1 credit per sub-query. Pass your own `sub_queries` (distinct angles on the question) for better coverage; if omitted they are derived from `query`: the query, query + "documentation", and query + "benchmark" (speed or comparison questions) or + "example".
- `contextfetch_search`: Search the web and get LLM-ready Markdown. Each result has its title, URL and only the passages relevant to the query (cross-encoder pruned context), so it costs far fewer tokens than raw pages. Use for current events, documentation, APIs, research and fact checking.
- `fetch`: Fetch the full text of a search result by its id (a URL). Returns {id, title, text, url, metadata} as JSON.
- `search`: Search the web. Returns {results: [{id, title, url}]} as JSON; pass an id to `fetch` for the page text.
