fetcher.sh MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fetcher.sh MCP ServerSearch YouTube for lofi streams uploaded this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fetcher.sh MCP Server
Official Model Context Protocol server for fetcher.sh — web data API for AI agents and applications.
Connect Claude Desktop, Cursor, VS Code Copilot, or any MCP client to fetcher.sh and search tweets, YouTube videos, Reddit threads, Google results, app-store listings, and more — all from natural language.
Features
Five catalog tools, mapped to the hosted server at mcp.fetcher.sh. Discovery is local (no network); paid fetches hit the live REST API.
Tool | Cost | What it does |
| free | Keyword / service search over 111 endpoints across 11 APIs |
| free | Parameters, allowed values, price, response shape |
| paid | Run any catalog path: |
| free | Credits left on |
| — | Returns the prepaid top-up URL (minimum $1) |
Set FETCHER_SERVICE=twitter (or youtube, reddit, …) to switch to a specialized server: one named tool per endpoint of that service, plus the two credit tools.
Related MCP server: entroute
Quick Start
1. Get an API key
Top up at fetcher.sh/topup — a bby_live_… key is minted with the first credit purchase. There is no account or OAuth step.
2. Configure your MCP client
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fetcher": {
"command": "npx",
"args": ["-y", "@fetcher-sh/mcp-server"],
"env": {
"FETCHER_API_KEY": "bby_live_..."
}
}
}
}Restart Claude Desktop. The catalog tools will be available in any chat — Claude will pick the right one based on your prompt.
Cursor
Open Settings → MCP → Add new MCP Server:
{
"mcpServers": {
"fetcher": {
"command": "npx",
"args": ["-y", "@fetcher-sh/mcp-server"],
"env": {
"FETCHER_API_KEY": "bby_live_..."
}
}
}
}VS Code (Copilot Chat with MCP)
Add to your MCP servers config — same shape as Claude Desktop / Cursor.
Claude Code
claude mcp add fetcher npx -- -y @fetcher-sh/mcp-server -e FETCHER_API_KEY=bby_live_...3. Use it
In any MCP-enabled chat:
"Find recent tweets from @OpenAI about agents in the last week"
"Search YouTube for lofi streams uploaded this week"
"What are the top Reddit posts about stablecoin payments?"
The client will pick search_endpoints → describe_endpoint → fetch_data (or a named service tool if FETCHER_SERVICE is set).
Authentication
Authentication is via the FETCHER_API_KEY environment variable, injected by your MCP client. The server never stores or logs the key. Each paid call sends the key as Authorization: Bearer to https://fetcher.sh.
search_endpoints and describe_endpoint work without a key — they read the bundled catalog.
Optional env vars:
Variable | Purpose |
| Prepaid |
| Restrict to one service slug ( |
| Override the API origin (default |
Hosted Streamable HTTP (no install) is also available at https://mcp.fetcher.sh — that surface accepts the same Bearer key, or per-call USDC via x402.
Pagination
List endpoints (followers, replies, search results, comments, …) accept a cursor parameter and return a next_cursor (or cursor) field. Pass it back on the next call to page through.
Error handling
429 / 5xx responses are automatically retried with exponential backoff (3 attempts, 1s / 2s / 4s)
Network timeouts: 30s per request
4xx errors (other than 429) surface immediately to the model with the original message
Unknown paths and missing required parameters are rejected before any charge
Tools — full spec
Each tool's input schema is exposed via MCP's tools/list and follows JSON Schema. Browse interactively:
npx @modelcontextprotocol/inspector npx -y @fetcher-sh/mcp-serverWhat's NOT included
By design, this server exposes read-only public data. The following are intentionally excluded:
Posting, liking, following, DMs, or any write action on the underlying platforms
Official platform developer accounts / OAuth
Account login or 2FA
Per-call wallet payment (x402) on this stdio transport — use mcp.fetcher.sh or fetcher.sh/topup for that
Spec compliance
Built on
@modelcontextprotocol/sdkv1Targets MCP spec 2025-11-25
Transport: stdio (hosted Streamable HTTP lives at
https://mcp.fetcher.sh)Tested with:
mcp-inspector, Claude Desktop, Cursor, Claude Code
Development
git clone <this-repo>
cd fetcher-mcp-server
npm install
npm run build
npm test
FETCHER_API_KEY=bby_live_... npm run inspectLinks
fetcher.sh — REST API homepage
License
MIT © fetcher.sh
Available Tools
5 toolscheck_balanceA
Free. Show the remaining credit balance for FETCHER_API_KEY. Call this before a long run of paid requests.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the call is 'Free,' implying no credit consumption and no side effects, and 'Show' signals a read-only operation. It does not specify response format, but that is minor for a parameterless balance check.
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 deliver the cost, the purpose, and the usage guidance with no wasted words. The description is front-loaded and every sentence earns its place.
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 simple zero-parameter tool with no output schema, the description covers what it does, that it is free, and when to call it. It even names the specific API key whose balance is checked, making the context complete enough for safe invocation.
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 has zero parameters and the input schema is empty, so there are no parameter semantics to explain. The baseline of 4 for a zero-parameter tool 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?
The description states a specific verb and resource: 'Show the remaining credit balance for FETCHER_API_KEY.' It also signals the tool is free, which distinguishes it from the paid fetch_data sibling and the credit-management topup_credits tool. This is a clear, unambiguous purpose.
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 phrase 'Call this before a long run of paid requests' gives explicit timing guidance and implies this is a preflight check. It does not explicitly name excluded alternatives, but the usage context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_endpointA
Free. Show the full call signature for one endpoint: required and optional parameters, allowed values, price, and response shape. Call this before fetch_data if you are unsure about parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Endpoint path, e.g. /api/twitter/search or /api/twitter/handle/{handle} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It discloses that the tool is free, and describes the contents of the returned signature including price and response shape. It doesn't discuss side effects or auth, but for a metadata endpoint the key behaviors are covered.
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, first gets directly to the point with 'Free' and the action, second provides usage guidance. No wasted words.
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 one-parameter metadata tool, the description fully explains what the tool does, what information it returns, and when to call it relative to fetch_data. The absence of an output schema is acceptable because the tool's purpose is to describe that shape.
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 a clear example for the only parameter 'path'. The description only says 'one endpoint' and doesn't add extra semantics beyond the schema, so baseline 3 is appropriate.
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?
Description states a specific action ('Show the full call signature') on a specific resource ('one endpoint'), enumerating what is included: required/optional parameters, allowed values, price, and response shape. It clearly differentiates from siblings by focusing on metadata rather than data fetching or searching.
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 tells the agent when to use it: 'Call this before fetch_data if you are unsure about parameters.' This names fetch_data as the alternative and gives a clear condition, satisfying the when/alternative requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_dataA
Paid. Fetch live data from any fetcher.sh endpoint. Pass the endpoint path plus its parameters (path and query parameters together in params). Priced per call; spends prepaid credits from FETCHER_API_KEY. Call describe_endpoint first if unsure. For a named tool per endpoint of one service, set FETCHER_SERVICE in the client config (e.g. twitter).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Endpoint path from search_endpoints, e.g. /api/twitter/search | |
| params | No | All parameters for the endpoint, path and query alike, e.g. { query: 'x402', sort: 'Latest' } |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the monetary side effect (priced per call, spends prepaid credits from FETCHER_API_KEY) and the live-data behavior. It could say more about error handling or response shape, but the key behavioral costs are clear.
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?
Every sentence earns its place: cost warning, purpose, parameter-passing rule, follow-up guidance, and configuration alternative are all packed in without fluff. The essential 'Paid' warning is front-loaded.
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 generic endpoint-fetching tool with only two parameters and no output schema, the description plus schema covers usage, cost, authentication, and the recommended describe_endpoint step. A more explicit statement about return format/errors would increase completeness, but the guidance to call describe_endpoint mitigates that 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 the schema already documents both parameters. The description reinforces that path and query parameters go together in `params`, which matches the schema, but it does not add substantial new semantic information beyond that.
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 ('Fetch'), a resource ('live data from any fetcher.sh endpoint'), and clearly differentiates from siblings like search_endpoints and describe_endpoint, which discover/describe endpoints rather than execute them.
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 context on when to call this tool, including the paid nature and a direct pointer to describe_endpoint when unsure. It also mentions the alternative of configuring FETCHER_SERVICE for named per-endpoint tools, though it does not explicitly enumerate all sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_endpointsA
🎯 START HERE. Free. Search fetcher.sh's web-data endpoints (Twitter/X, YouTube, TikTok, Instagram, Reddit, Google Search, Google Maps, Google News, Google Play, App Store, Yelp) by keyword and/or service. Returns paths, descriptions and per-call prices. Then call describe_endpoint, then fetch_data.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keywords, e.g. 'twitter followers' or 'reviews' | |
| service | No | Restrict to one service slug or alias, e.g. 'twitter', 'x.com', 'youtube', 'play store' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does well by disclosing cost ('Free'), return contents ('paths, descriptions and per-call prices'), and the searchable dimensions. It does not explicitly mention read-only behavior or rate limits, though 'search' strongly implies a safe read operation.
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?
One information-dense sentence with the most important signal ('START HERE. Free.') front-loaded. The list of services is useful, not padding, and the next-step routing earns its place.
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 simple two-parameter search tool with no output schema and no annotations, the description gives enough context: what it searches, what it returns, cost, and the recommended follow-up calls. Nothing essential for invoking it correctly 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?
The schema already covers both parameters thoroughly with examples, so the baseline is 3. The description adds value by clarifying they can be used together ('by keyword and/or service') and by naming the service categories, which helps the agent understand what values are meaningful.
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?
The description states a specific action ('Search fetcher.sh's web-data endpoints'), names the resource domain, lists concrete services, and says what it returns. It also distinguishes itself from siblings by explicitly being the starting point before describe_endpoint and fetch_data.
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?
It opens with 'START HERE', says it is free, and gives an explicit workflow: search first, then call describe_endpoint, then fetch_data. This directly tells the agent when to use this tool and how it relates to the obvious sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topup_creditsA
Prepaid credits are bought on the web, not over stdio. Returns the top-up URL (minimum $1). After topping up, put the bby_live_… key in FETCHER_API_KEY.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Amount you intend to add, in USD. Minimum 1. Used only to confirm the floor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It reveals several key behaviors: the tool returns a URL rather than processing payment directly, enforces a $1 minimum, and instructs that the bby_live_… key should be placed in FETCHER_API_KEY after topping up. It does not disclose all potential side effects, but for a simple URL-returning tool this is sufficient.
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?
The description is two sentences with no wasted words. It front-loads the crucial constraint ('bought on the web, not over stdio'), then identifies the return value, minimum amount, and follow-up action. Every sentence contributes unique 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 single-parameter tool with no output schema, the description provides adequate context to call it: what it returns, the minimum, and the post-payment step. Slight gaps remain around whether the optional amount parameter must be supplied or what the exact URL format looks like, but these are minor given the tool's simplicity.
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 input schema already has 100% description coverage for the only parameter, amount, including its USD denomination, minimum value, and purpose ('Used only to confirm the floor'). The tool description repeats the $1 minimum but adds no new meaning beyond the schema, so the baseline of 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?
The description states a clear action: 'Returns the top-up URL' for buying prepaid credits. It distinguishes itself from siblings like check_balance and fetch_data by focusing on purchasing credits rather than querying or retrieving data. However, the phrasing 'Prepaid credits are bought on the web, not over stdio' is slightly indirect and could be more explicitly framed as 'Use this tool to get a top-up link.'
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 description implies the tool is used when prepaid credits are needed and sets an important constraint that payment happens on the web, not through stdio. However, it does not explicitly mention alternatives like check_balance for checking credit status or explain when not to use this tool. The usage context is asserted but not differentiated against sibling tools.
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.
5 tool updates
v1.0.0- First observed
check_balance - First observed
describe_endpoint - First observed
fetch_data - First observed
search_endpoints - First observed
topup_credits
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: billing, discovery, documentation, data fetching, and balance checking. There is no overlap or ambiguity about which tool to select for a given step.
All tool names follow a consistent verb_noun snake_case pattern (topup_credits, search_endpoints, describe_endpoint, fetch_data, check_balance). The naming is predictable and easy to infer.
Five tools is well-scoped for this server's purpose: providing access to fetcher.sh's API with discovery, documentation, execution, and account management. Each tool earns its place without redundancy.
The tool set covers the full user workflow: find endpoints, inspect their signatures, fetch data, check balance, and top up credits. There are no obvious dead ends or missing operations for the stated domain.
Maintenance
Related MCP Connectors
X/Twitter reads, search, monitors and posting. Pay-per-call in USDC — no signup, no API keys.
Web search and URL-to-markdown for agents. Pay per call in USDC on Base, no signup.
Web search, scraping, Google Trends and data lookups. Paid per call in USDC on Base via x402.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenancePay-per-call web search for AI agents, settled in USDC on Base via the x402 protocol. No API key or subscription required; users fund a wallet and get a web_search tool.5 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables web search for AI agents with pay-per-search in USDC, no API keys needed.MIT
- AlicenseNot gradedqualityBmaintenanceProvides live data API for AI agents with 51 REST endpoints across finance, travel, weather, news, and more, using USDC micropayments without API keys.40 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to retrieve X/Twitter profiles and tweets, YouTube video and channel data, and TikTok profile and video stats on a pay-per-result basis without requiring login or platform API keys.39 npmMIT