Skip to main content
Glama
lachy3433

contextfetch-mcp

@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/mcp

With a paid key:

claude mcp add contextfetch -e CONTEXTFETCH_API_KEY=your_key -- npx -y @contextfetch/mcp

Cursor: 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

contextfetch_search

query, num_results (1-25, default 5), include_domains?, exclude_domains?

Web search. Each result comes back as title, URL and only the passages relevant to your query (cross-encoder pruned Markdown).

1 credit

contextfetch_extract_url

url, query?

Any public page (docs, articles, GitHub files, arXiv) as clean Markdown with tables kept. With query, returns only the relevant passages.

1 credit

contextfetch_find_similar

url, num_results (1-25, default 5)

Pages similar to a URL, excluding its own domain.

1 credit

contextfetch_research

query, sub_queries? (up to 5), num_results_per_query (1-10, default 5)

Server-side research: runs the sub-queries concurrently, dedupes pages by URL, ranks them all against query with the cross-encoder and returns one Markdown evidence pack (numbered [n] sources with their query-pruned passages, quoted verbatim; nothing generated), headed by the sub-queries, source count, tokens and credits used.

1 credit per sub-query (max 5)

contextfetch_deep_research

query, sub_queries? (up to 3), num_results_per_query (1-25, default 5; at most 10 used)

The earlier name of contextfetch_research, kept for existing setups: same server-side evidence pack, up to 3 sub-queries.

1 credit per sub-query (max 3)

contextfetch_answer

query, num_results (1-10, default 5)

Extractive answer: the best-scoring passages of the top pages, quoted verbatim with [n] markers and a numbered source list. No text is generated, so it suits factual lookups more than open-ended questions.

1 credit

contextfetch_crawl

url, max_depth (0-3, default 1), limit (1-50, default 10), query?, include_paths?, exclude_paths? (regexes on the URL path)

Crawls one site from url (same-site links, robots.txt obeyed) and returns each page as Markdown with its depth. With query, pages are ranked by relevance and pruned to the relevant passages.

1 credit per page returned

contextfetch_map

url, limit (1-5,000, default 100), include_paths?, exclude_paths?

Lists a site's URLs from its sitemaps and the start page's links without fetching the pages.

1 credit

contextfetch_balance

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 CONTEXTFETCH_API_KEY.

free

contextfetch_get_free_key

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 CONTEXTFETCH_API_KEY.

free

contextfetch_auto_reload

enabled, threshold? (100-100,000), pack? (instant, builder, scale), monthly_max_usd? (max 500)

Turns auto-reload on or off or changes it: when credits drop below threshold, the card saved at checkout buys pack again, up to the monthly cap. Needs CONTEXTFETCH_API_KEY and a saved card. The cap cannot go above $500 here.

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:

  1. the query itself;

  2. the query + documentation;

  3. the query + benchmark when 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

CONTEXTFETCH_API_KEY

unset

Your API key. Unset or empty uses the free keyless tier.

CONTEXTFETCH_API_BASE

https://api.contextfetch.dev

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.js

Publish

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 tools
contextfetch_answerContextFetch extractive answerA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe question.
num_resultsNoPages searched for passages (1-10, default 5).

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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-reloadA
Idempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
packNoPack to buy: instant $15/15,000, builder $50/60,000, scale $150/200,000.
enabledYestrue to turn auto-reload on, false to turn it off.
thresholdNoReload when credits drop below this (100-100,000, default 1,000).
monthly_max_usdNoMonthly spending cap in USD (at most 500).

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 balanceA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 crawlA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) start URL.
limitNoMaximum pages to return (1-50, default 10).
queryNoOptional topic: ranks pages and prunes each to the relevant passages.
max_depthNoLink hops from the start page (0-3, default 1).
exclude_pathsNoRegexes; never follow links whose path matches one.
include_pathsNoRegexes; only follow links whose path matches one, e.g. ["^/docs/"].

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 researchA
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe research question.
sub_queriesNoUp to 3 search queries covering different angles of the question. Strongly recommended.
num_results_per_queryNoResults per sub-query (1-25, default 5; at most 10 are used).

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 MarkdownA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) URL to read.
queryNoOptional question or topic; returns only the relevant passages.

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 pagesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) URL to find similar pages for.
num_resultsNoNumber of results to return (1-25, default 5).

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 mapA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic http(s) URL of the site (any page on it).
limitNoMaximum URLs (1-5,000, default 100).
exclude_pathsNoRegexes; never list URLs whose path matches one.
include_pathsNoRegexes; only list URLs whose path matches one, e.g. ["^/blog/"].

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-only
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe research question.
sub_queriesNoUp to 5 search queries covering different angles of the question. Recommended.
num_results_per_queryNoResults per sub-query (1-10, default 5).

TDQS

A4.1/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.1
    • First observedcontextfetch_answer
    • First observedcontextfetch_auto_reload
    • First observedcontextfetch_balance
    • First observedcontextfetch_crawl
    • First observedcontextfetch_deep_research
    • First observedcontextfetch_extract_url
    • First observedcontextfetch_find_similar
    • First observedcontextfetch_get_free_key
    • First observedcontextfetch_map
    • First observedcontextfetch_research
    • First observedcontextfetch_search

TDQS

A4.1/5.0

Scored across 11 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

Related MCP Servers