contextfetch-mcp
Returns ready-to-use Stripe Checkout buy links for ContextFetch credit packs (instant, builder, scale) when credits run out or the free tier is exhausted, and supports configuring auto-reload, which re-purchases a pack against the card saved at checkout up to a monthly spending cap.
@contextfetch/mcp
MCP server for ContextFetch: neural web search and clean, LLM-ready Markdown for AI agents from $0.75 per 1,000 searches. Works with zero signup: no key needed for the free tier.
Install
Claude Code (one line, keyless):
claude mcp add contextfetch -- npx -y @contextfetch/mcpWith a paid key:
claude mcp add contextfetch -e CONTEXTFETCH_API_KEY=your_key -- npx -y @contextfetch/mcpCursor: add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": {
"contextfetch": {
"command": "npx",
"args": ["-y", "@contextfetch/mcp"],
"env": { "CONTEXTFETCH_API_KEY": "your_key" }
}
}
}Windsurf: add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"contextfetch": {
"command": "npx",
"args": ["-y", "@contextfetch/mcp"],
"env": { "CONTEXTFETCH_API_KEY": "your_key" }
}
}
}To use the free tier, drop the env block (or leave CONTEXTFETCH_API_KEY empty). The same JSON works in Claude Desktop's claude_desktop_config.json and in any other MCP client that launches stdio servers.
Requires Node.js 18 or newer.
Related MCP server: EnConvert MCP Server
Tools
Tool | Arguments | What it does | Cost |
|
| Web search. Each result comes back as title, URL and only the passages relevant to your query (cross-encoder pruned Markdown). | 1 credit |
|
| Any public page (docs, articles, GitHub files, arXiv) as clean Markdown with tables kept. With | 1 credit |
|
| Pages similar to a URL, excluding its own domain. | 1 credit |
|
| Server-side research: runs the sub-queries concurrently, dedupes pages by URL, ranks them all against | 1 credit per sub-query (max 5) |
|
| The earlier name of | 1 credit per sub-query (max 3) |
|
| Extractive answer: the best-scoring passages of the top pages, quoted verbatim with | 1 credit |
|
| Crawls one site from | 1 credit per page returned |
|
| Lists a site's URLs from its sitemaps and the start page's links without fetching the pages. | 1 credit |
| none | Remaining credits, burn rate (credits/day over the last 7 days) and auto-reload settings, including the last auto-reload error if a payment failed. Needs | free |
| none | Claims the network's free API key (2,500 searches, one per network) and uses it for the rest of the session. Give it to your user to keep in | free |
|
| Turns auto-reload on or off or changes it: when credits drop below | free |
All tools return Markdown text. Without a key, contextfetch_balance and contextfetch_auto_reload return a short message saying they need one, with the buy link. On the free tier, results start with a one-line notice showing how many free searches are left today. When the API reports them, a closing line shows latency (total and per stage: recall, fetch, rerank), whether the answer came from cache, and token savings (pruned tokens vs raw page tokens).
contextfetch_research sub-queries
Pass your own sub_queries (different angles on the question); the tool description tells the calling model to do so. If you omit them, the API derives them from query with fixed rules:
the query itself;
the query +
documentation;the query +
benchmarkwhen it mentions speed, performance, latency, memory or a comparison (vs,compare), otherwise the query +example.
A suffix the query already contains is skipped (so react useActionState example runs 2 searches, not 3). The whole research runs server-side in one /v1/research call that costs 1 credit per sub-query; a sub-query that fails is refunded and named in the header. If all fail, the tool returns the error.
Environment variables
Variable | Default | Meaning |
| unset | Your API key. Unset or empty uses the free keyless tier. |
|
| API base URL. Point it at your own engine if you self-host. |
Free tier and pricing
Pack | Price | Credits | Per 1,000 |
Keyless trial | $0 | 25 per day per IP | free, no signup |
Instant | $15 | 15,000 | $1.00 |
Builder (most popular) | $50 | 60,000 | $0.83 |
Scale | $150 | 200,000 | $0.75 |
One-time payments; credits never expire. Optional auto-reload re-buys a pack when your balance drops below a threshold, up to a monthly cap.
When credits or the free tier run out (HTTP 402), the tool returns the packs with prices and a one-click buy link each (recommended pack first), plus a line to pass on to your user. Buy links go straight to Stripe Checkout (card, Apple Pay, Google Pay): https://api.contextfetch.dev/buy/instant, /buy/builder, /buy/scale. Then set CONTEXTFETCH_API_KEY as shown above.
Retries and connections
Connection failures before the request is sent (refused, DNS, connect timeout), HTTP 429 and HTTP 5xx are retried with exponential backoff and jitter (about 0.25-0.5 s, then 0.5-1 s), at most 3 attempts per API call and 30 seconds in total, retries included. A 429 or 5xx with a Retry-After header waits exactly that long, unless that would pass the 30 second budget. 400, 401, 402, 422 and other 4xx responses are never retried. A connection that drops after the request was sent is not retried either, since the search may already have been billed. Connections are pooled and kept alive by Node's built-in fetch (undici), so there is no extra HTTP dependency.
Errors
Errors never crash the server; they come back as tool results with isError: true and a plain explanation: invalid key (401), out of credits or free limit reached (402, lists the packs with their buy links), no saved card for auto-reload (409, with the buy link), URL not allowed (400, only public http(s) URLs), a page contextfetch_extract_url could not fetch (with the reason, such as HTTP 404), rate limited (429), server errors (5xx), network failures, and a 30 second limit per call (retries included).
Develop
npm install
npm run build # compiles src/ to dist/ and marks dist/index.js executable
npm test # builds, then drives dist/index.js over stdio against a local mock API (no network)
CONTEXTFETCH_API_BASE=http://localhost:8000 node dist/index.jsPublish
Publishing @contextfetch/mcp needs the npm organization contextfetch (create it at npmjs.com and add the publishing account as a member). Then npm publish from this folder; publishConfig.access is already public and prepublishOnly builds first.
License
MIT
Available Tools
11 toolscontextfetch_answerContextFetch extractive answerARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The question. | |
| num_results | No | Pages searched for passages (1-10, default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnlyHint and openWorldHint, but the description adds the extraction mechanism (cross-encoder scoring over every passage of top pages), the output contract ([n] citations back to sources), the reliability caveat, and the billing behavior ('Costs 1 credit'). That is substantive context beyond what the structured fields provide.
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?
Three sentences, front-loaded with the defining trait (verbatim, never generated) before mechanism, caveat, and cost. The middle pipeline sentence is dense but earns its place by explaining result quality; nothing is redundant padding.
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, the description compensates by describing the return shape (best passages plus [n] citations) and the credit cost. For a two-parameter read tool whose safety profile is covered by annotations, nothing an agent needs to select or call it 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?
Schema description coverage is 100% and both parameters are already documented, so the baseline is 3. 'Top pages' and 'every passage of the top pages' loosely maps num_results to pages searched, but adds no syntax or semantics beyond the schema's own 'Pages searched for passages (1-10, default 5).'
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?
States a specific verb+resource: 'Answer a question with passages quoted verbatim from the web, never generated.' The 'never generated' clause distinguishes it from a generative research tool and from contextfetch_search, which the passage-scoring description implies returns pages rather than extracted quotes. An agent can pick this out from siblings without opening a schema.
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?
'Use it for quick factual lookups; the quotes may not fully answer an open-ended question' gives a positive trigger and a soft exclusion that steers open-ended work elsewhere. It falls short of naming the alternative sibling (e.g. contextfetch_research / deep_research) explicitly, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_auto_reloadContextFetch auto-reloadAIdempotentInspect
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 CONTEXTFETCH_API_KEY and a card saved at checkout. The monthly cap cannot be raised above $500 here.
| Name | Required | Description | Default |
|---|---|---|---|
| pack | No | Pack to buy: instant $15/15,000, builder $50/60,000, scale $150/200,000. | |
| enabled | Yes | true to turn auto-reload on, false to turn it off. | |
| threshold | No | Reload when credits drop below this (100-100,000, default 1,000). | |
| monthly_max_usd | No | Monthly spending cap in USD (at most 500). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag a non-read-only, idempotent, open-world operation; the description goes further by disclosing that real money is spent automatically, that a saved card is required, and that a $500 monthly ceiling applies. It stops short of saying whether omitted fields are preserved or reset on a partial update, which matters for a configuration-mutating tool.
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 tight sentences: the behavior and its trigger come first, prerequisites and the hard limit second. No filler, and the conditional logic is readable at a glance.
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 and full parameter documentation, the description covers the essentials for a billing-related mutation: what happens, what it costs, what credentials are needed, and what cannot be exceeded. Only the response shape and partial-update semantics are absent, which is acceptable but not 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 the baseline is 3; the description earns more by explaining the causal relationship between the parameters — threshold triggers the purchase of pack, bounded by monthly_max_usd. The $500 note largely restates the schema maximum.
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?
States a specific set of actions (turn on, turn off, change) on a specific resource (auto-reload) and explains the mechanism: below a credit threshold the saved card repurchases a pack up to a monthly cap. This is clearly distinct from siblings like contextfetch_balance or contextfetch_search.
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?
Gives clear prerequisites (CONTEXTFETCH_API_KEY and a card saved at checkout) and states the operating condition (credits dropping below the threshold). It does not name an alternative path for raising the cap beyond $500, but the in-tool limit is disclosed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_balanceContextFetch balanceARead-onlyInspect
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 CONTEXTFETCH_API_KEY; free. Check it before long jobs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the bar is lower; the description still adds real context by noting the required CONTEXTFETCH_API_KEY env var, that the call is free, and that a failed payment surfaces a last auto-reload error. It does not describe the response shape, which is a minor gap given no output schema.
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 dense sentences, front-loaded with what is returned, then the auth/cost constraint and usage trigger. No filler or repetition of the name.
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 zero-parameter read tool with no output schema, the description covers auth requirements, cost, what data is returned, and when to call it — everything an agent needs to invoke it 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 tool takes zero parameters, so the baseline is 4; the description correctly does not invent parameters and instead clarifies the implicit auth dependency (CONTEXTFETCH_API_KEY).
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?
States a specific verb (Show) and a precisely enumerated resource: remaining credits, 7-day burn rate, and auto-reload settings. This is clearly distinguishable from siblings like contextfetch_auto_reload (which would modify settings) and contextfetch_search.
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?
Gives a concrete trigger — 'Check it before long jobs' — and signals it is free, implying no credit cost for polling. It does not explicitly name an alternative or a when-not condition, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_crawlContextFetch site crawlARead-onlyInspect
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), robots.txt obeyed. Pass query to rank the pages by relevance and return only their relevant passages. Costs 1 credit per page returned.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) start URL. | |
| limit | No | Maximum pages to return (1-50, default 10). | |
| query | No | Optional topic: ranks pages and prunes each to the relevant passages. | |
| max_depth | No | Link hops from the start page (0-3, default 1). | |
| exclude_paths | No | Regexes; never follow links whose path matches one. | |
| include_paths | No | Regexes; only follow links whose path matches one, e.g. ["^/docs/"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/open-world profile, so the bar is lower; the description still adds billing behavior (1 credit per page returned), robots.txt compliance, and hard scope caps. Return format is disclosed as Markdown. It stops short of describing pagination or failure behavior, keeping it from a 5.
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 waste, front-loaded with what is retrieved before the constraints and optional query behavior. Every clause carries information.
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, the description still names the return form (Markdown pages) and the credit cost, while the schema carries all parameter detail. An agent has enough to invoke and predict the 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?
Schema coverage is 100%, so the schema already documents all six parameters, including the depth and limit bounds. The description repeats those caps and glosses the query ranking/pruning behavior, adding only marginal meaning 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?
States a specific verb (crawl) and resource (one website from a start URL) plus the output form (pages as Markdown). An agent can distinguish this from extract_url (single page) and map (link discovery) without opening either schema.
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?
Gives scoping conditions (same-site links only, robots.txt obeyed) and explains the query mode, which implies usage. But it never names an alternative sibling (e.g. extract_url or map) or states when NOT to crawl, leaving the agent to infer routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_deep_researchContextFetch deep researchARead-onlyInspect
Same as contextfetch_research (kept for existing setups): 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" (a suffix the query already contains is skipped).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The research question. | |
| sub_queries | No | Up to 3 search queries covering different angles of the question. Strongly recommended. | |
| num_results_per_query | No | Results per sub-query (1-25, default 5; at most 10 are used). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/openWorldHint annotations, it discloses credit cost per sub-query (1 credit each), server-side execution, deduping/ranking behavior, and the exact derivation logic used when sub_queries is omitted. This is substantial behavioral context the annotations cannot convey.
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?
A single dense paragraph that front-loads the alias note and output shape before the parameter-usage guidance. Every clause carries information, though the fallback-derivation sentence is long and slightly nested.
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, the description fully specifies the return artifact (one Markdown evidence pack, numbered sources, pruned passages) plus cost and query-derivation rules. An agent has everything needed to invoke it 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 coverage is already 100%, so the baseline is 3. The description goes beyond it by explaining how sub_queries is synthesized (query itself, + 'documentation', + 'benchmark' or 'example' with suffix-skip rules) and by tying sub-query count to credit consumption, adding real semantic 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?
States precisely what the tool produces: a single Markdown evidence pack with numbered sources and query-pruned passages, built from up to 3 server-side sub-queries. It also positions itself relative to a sibling by declaring it is an alias of contextfetch_research kept for existing setups.
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?
Gives a strong explicit recommendation ('You SHOULD pass your own sub_queries... for better coverage') and explains the fallback when omitted. It does not, however, tell the agent when to prefer this over contextfetch_research, contextfetch_search or contextfetch_answer, so the alternative-selection guidance is only partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_extract_urlContextFetch URL to MarkdownARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to read. | |
| query | No | Optional question or topic; returns only the relevant passages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and open-world scope are covered. The description adds useful behavior — Markdown conversion with table preservation and a filtering mode that shrinks the response — but says nothing about limits, truncation, or what happens on JS-rendered or paywalled pages.
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, with the core capability front-loaded and the optional mode explained second. Nothing could be cut without losing information.
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 two-parameter, annotated, read-only fetch tool, the description covers purpose, content types, output shape, and the optional filtering mode — enough to call it correctly. The remaining gap is operational edge cases, which matters somewhat given the open-world hint but is not required to invoke it.
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 both parameters are already documented in the schema. The description's explanation of `query` (returns only relevant passages instead of the whole page) is a slight reframing rather than new semantics; `url` gets only the implicit 'must be public' constraint already in 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?
States a specific verb and resource (fetch a public web page) and names concrete content archetypes (docs, articles, GitHub files, arXiv papers) plus the output format (clean Markdown, tables preserved). It does not distinguish itself from the nearby crawl/map siblings, so an agent must still infer that this is the single-page reader.
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 second sentence establishes a clear conditional: pass `query` for relevant passages instead of the whole page, which is genuine usage guidance for that parameter. There is no explicit 'use this instead of X' routing against siblings such as contextfetch_crawl or contextfetch_search, and no stated when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_find_similarContextFetch find similar pagesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL to find similar pages for. | |
| num_results | No | Number of results to return (1-25, default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish that this is a read-only, open-world call, so the safety profile is covered. The description adds real behavior beyond that: results exclude the source domain, and the return payload is titles, URLs and the most relevant passages rendered as Markdown. That return-shape disclosure is genuinely useful and not present in the structured fields.
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?
A single sentence that front-loads the core action, adds intent examples in a compact parenthetical, and closes with the return format. Nothing is wasted and no backtracking is required.
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, and the description compensates by summarizing the return payload. For a two-parameter read-only lookup tool with full annotation coverage, an agent has enough to call it correctly; only pagination/truncation limits for the passage text are left unstated.
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% with both parameters fully documented, including the 1-25 range and default for num_results, so the schema does the heavy lifting. The description mentions the URL input implicitly but adds no format constraints or extra meaning beyond what the schema already states, making the baseline 3 correct.
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?
States a specific verb+resource: finding pages similar to a given URL, with parenthetical examples of the intent (alternatives, related docs, competing libraries). This clearly distinguishes it from contextfetch_search and contextfetch_extract_url in spirit, though it never names a sibling explicitly, which keeps it just short of a 5.
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 examples ('alternatives, related docs, competing libraries') imply when the tool is useful, and the source-domain exclusion hints at intended use. However there is no explicit comparison against the many sibling search/research tools, nor any stated preconditions (e.g. URL must be public/crawlable), so usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_get_free_keyContextFetch free API keyAInspect
Get a free ContextFetch API key with 2,500 searches (one per network, no sign-up). This session uses it right away; give it to your user so they can set CONTEXTFETCH_API_KEY to keep it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag this as non-read-only, open-world, non-idempotent, and the description adds real context beyond them: the 'one per network' rate limit and the no-sign-up flow, which explains why repeat calls may not be idempotent. It stops short of describing the returned key format or failure behavior.
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 short sentences, front-loaded with what the tool returns and followed by the required post-call action; every clause carries information.
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, the description does enough: it says what the key grants, that it is auto-applied this session, and how to persist it. Minor gaps remain about the response shape and what happens if a key already exists.
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?
Zero parameters, so there is nothing for the description to disambiguate; the 4 baseline applies and no parameter confusion is possible.
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?
States a specific verb and resource (get a free ContextFetch API key) plus concrete scope (2,500 searches, one per network, no sign-up). It is clearly distinct from the search/research/crawl siblings, though it never names a sibling to route against.
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?
Implies the call is for obtaining credentials and tells the agent what to do with the result (use it this session, hand it to the user for CONTEXTFETCH_API_KEY), but never states when to call it versus checking contextfetch_balance or how to behave on repeat calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_mapContextFetch site mapARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public http(s) URL of the site (any page on it). | |
| limit | No | Maximum URLs (1-5,000, default 100). | |
| exclude_paths | No | Regexes; never list URLs whose path matches one. | |
| include_paths | No | Regexes; only list URLs whose path matches one, e.g. ["^/blog/"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only and open-world safety, and the description adds real context beyond them: a 1-credit cost, the source precedence (robots.txt before /sitemap.xml), and page-link fallback. It stops short of describing the response shape or what happens when no sitemap exists, so not a 5.
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 dense sentences, zero filler: the mechanism and scope come first, the sibling routing second, the cost last. The 5,000 cap is the only mild restatement of schema.
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 4-param read-only tool with no output schema, the description covers sourcing, same-site restriction, limit, and billing — enough to call it correctly. It leaves the response format (bare URL list?) implicit, which is a minor but real gap.
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 url, limit, include_paths, and exclude_paths are already documented including ranges and regex semantics. The description only restates the limit cap and that url may be any page; it says nothing about the include/exclude filtering that the schema carries. Baseline 3 applies.
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?
Specific verb and resource: "List a website's URLs without fetching its pages," with the exact sources named (robots.txt sitemap, else /sitemap.xml, plus start-page links). The scope qualifier "same site only" and the limit cap make it unmistakable against page-returning siblings.
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?
Explicitly routes the agent: "Use it to find the right pages before contextfetch_extract_url or contextfetch_crawl," naming both the alternative tools and the sequencing condition. No inference required to pick this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_researchContextFetch research (evidence pack)ARead-onlyInspect
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 itself, query + "documentation", and query + "benchmark" when it asks about speed, performance or comparisons, else query + "example" (a suffix the query already contains is skipped).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The research question. | |
| sub_queries | No | Up to 5 search queries covering different angles of the question. Recommended. | |
| num_results_per_query | No | Results per sub-query (1-10, default 5). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only and open-world, yet the description discloses a great deal more: concurrent execution, URL dedupe, cross-encoder ranking, the exact return format (numbered [n] sources with query-pruned verbatim passages, no generated text), and the billing model (1 credit per sub-query). The default sub-query derivation rules are spelled out, so the agent can predict behavior when it omits the parameter.
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?
Purpose is front-loaded in the opening clause and every sentence carries information. The parenthetical explaining default sub-query derivation is long and reads almost like spec text, but it is genuinely useful rather than filler, so it slightly dilutes an otherwise tight structure.
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, and the description fully compensates by describing the return shape (Markdown evidence pack with numbered sources and verbatim passages) and the cost model. For a 3-parameter, read-only aggregation tool, an agent has everything needed to call it correctly and to anticipate the response.
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 the baseline is 3; the schema already documents all three parameters including ranges and defaults. The description does add genuine meaning for sub_queries ('distinct angles', plus the fallback derivation algorithm), but says nothing about num_results_per_query beyond what the schema supplies.
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?
States a precise verb and resource ('Research a question in one call') plus the concrete artifact returned (a Markdown evidence pack), with operational mechanics (5 concurrent searches, URL dedupe, cross-encoder ranking) that make it hard to confuse with a plain search. However, it never names or contrasts any sibling tool such as contextfetch_deep_research or contextfetch_search, leaving the differentiation implicit rather than stated.
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?
Gives real context: 'Pass your own sub_queries (distinct angles on the question) for better coverage' tells the agent how to get the best result, and the credit cost per sub-query informs the cost/coverage trade-off. It stops short of explicit when-to-use/when-not guidance or naming the alternative tools an agent should pick instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contextfetch_searchContextFetch web searchARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural-language search query. | |
| num_results | No | Number of results to return (1-25, default 5). | |
| exclude_domains | No | Never return results from these domains. | |
| include_domains | No | Only return results from these domains, e.g. ["docs.python.org"]. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description meaningfully adds that results are cross-encoder pruned and therefore token-cheaper than raw pages, which tells the agent what comes back. It does not mention rate limits, pagination, or freshness, so it is good but not exhaustive.
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 tight sentences with zero filler; the core value proposition is front-loaded before the use-case list. Nothing is wasted.
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, the description usefully compensates by describing the return shape (title, URL, relevant passages). Combined with full schema coverage and annotations, an agent has enough to call it, though domain-filter interaction and result-count behavior are left to the schema.
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 all four parameters including the domain include/exclude lists and the 1-25 range are fully documented in the schema. The description adds no parameter syntax or format detail beyond that, so baseline 3 applies.
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?
States a specific verb+resource (search the web) plus its distinctive output (LLM-ready Markdown with title, URL, pruned passages). It does not name any sibling (e.g. contextfetch_research or contextfetch_answer) to draw a boundary, so it is clear but not sibling-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?
"Use for current events, documentation, APIs, research and fact checking" gives concrete when-to-use contexts, which is more than implied usage. It stops short of stating when NOT to use it or which sibling supersedes it (e.g. deep_research for multi-step work), so no exclusions or alternatives are offered.
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.
11 tool updates
v1.0.1- First observed
contextfetch_answer - First observed
contextfetch_auto_reload - First observed
contextfetch_balance - First observed
contextfetch_crawl - First observed
contextfetch_deep_research - First observed
contextfetch_extract_url - First observed
contextfetch_find_similar - First observed
contextfetch_get_free_key - First observed
contextfetch_map - First observed
contextfetch_research - First observed
contextfetch_search
TDQS
Scored across 11 tools
Most tools target clearly distinct operations (search, extract_url, crawl, map, find_similar, balance). The main overlap is contextfetch_research vs contextfetch_deep_research, which the description openly admits is essentially the same tool kept for backwards compatibility, plus some conceptual overlap among search/answer/research.
All names use a consistent contextfetch_ prefix and snake_case, making the set predictable. The only deviation is that some are verb_noun (extract_url, find_similar, get_free_key) while others are bare verbs or nouns (search, answer, crawl, map, balance), but this is minor and readable.
11 tools is well within the ideal 3-15 range for a web-context service. Each tool covers a distinct capability (fetch, crawl, search, research, discovery, billing), with only the redundant deep_research arguably not earning a slot.
The surface covers the full lifecycle for a web-context service: onboarding (get_free_key), discovery (map, find_similar), retrieval (extract_url, crawl, search), synthesis (research, answer) and account management (balance, auto_reload). No obvious dead ends for the stated purpose.
Related MCP Connectors
Web scraping for AI agents: scrape, search, crawl, map any website to markdown + JSON. No browser.
LLM-ready web search + instant answers + URL-to-clean-text fetch for agents and RAG.
Web scraping for agents. Point it at a URL and it returns the page as clean markdown, JavaScript-rendered pages included. Point it at a site and it maps the URLs or crawls the section you need in the background, a few pages at a time so results fit in the conversation. Search the web and read full pages, extract fields with a JSON schema you define (validated, never invented), read a store's catalogue or a blog's posts from the platform's own feed, and check whether a page has changed. Failed requests cost nothing. The free plan includes 1,500 credits a month.
Unblocking and fresh web data for agents: URL to Markdown, YouTube, Maps, Amazon, jobs. Pay per call
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceWeb search, clean page reading & one-call research dossiers for AI agents. No API key — your agent does the synthesis.58 npmMIT

EnConvert MCP Serverofficial
AlicenseAqualityAmaintenanceEnables AI agents to convert files, render web pages to markdown/PDF/screenshots, search the live web, extract structured data, ingest RAG-ready chunks, and monitor pages for changes through a single API key.24106 npm7MIT- AlicenseNot gradedqualityAmaintenanceEnables AI agents to perform live web searches with ranked results and extracted page passages, plus clean markdown extraction of any URL.MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search multiple web providers in parallel and crawl single pages or entire sites into clean, deduplicated Markdown or JSON, including authenticated crawls.-