Search1API MCP Server
Search1API MCP Server provides web and news search, page reading, link discovery, trending topics, multi-source agentic search, result rendering, and feedback reporting.
Search the web across multiple engines with filters, pagination, site include/exclude, time ranges, and optional full-page crawling.
Search current news with time filters and optional article crawling.
Read a public web page and return its title, URL, and main text.
Discover related links or sitemap URLs from a site or domain.
List trending GitHub repositories or Hacker News stories.
Use agentic search to query up to five sources from a natural-language request and get ranked citable results, inferred intent, and errors.
Render already retrieved results as source cards or a readable text list without performing a new search or spending credits.
Send free feedback about wrong results, errors, documentation mismatches, or missing capabilities.
Provides configuration file location support for Claude Desktop on macOS
Click 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., "@Search1API MCP Serversearch for the latest AI research papers on large language models"
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.
Search1API MCP Server
The official MCP server for Search1API — web search, news, page retrieval, sitemap discovery, and trending topics in one API.
Authentication
OAuth-aware clients can connect to the Remote MCP URL directly, then sign in and approve access in the browser.
Existing integrations can continue to use an API key from the Search1API dashboard.
Every MCP request — including tool discovery (
initialize,tools/list) — requires a credential. Unauthenticated requests draw the OAuth challenge, which is how clients trigger sign-in; pre-connect inspection is served by the static server card instead.
Related MCP server: WebSearch-MCP
Quick Start (Remote MCP)
No installation required. Configure your MCP client with the remote URL. Use OAuth when the client supports it, or provide an API key.
Authentication
Three methods are supported — use whichever your client supports:
Method | Format |
OAuth 2.1 | Connect to |
Authorization Header |
|
URL Query Parameter (legacy) |
|
Prefer OAuth or the Authorization header. Query-parameter credentials can be exposed in URLs, logs, and shell history.
Optional search and news UI
Remote MCP exposes render_results at the standard endpoint above. Data tools such as search, news and ask return results without automatically showing cards. When a source list helps, the model can select or combine existing results and pass them to render_results. It returns source cards in MCP Apps clients and a complete readable text list elsewhere. Rendering does not repeat a search or consume search credits; no UI URL parameter is required.
Both HTTP and stdio advertise the square Search1API logo through standard serverInfo.icons metadata. The 512×512 PNG is served publicly at https://mcp.search1api.com/assets/icon-square.png, without authentication or redirects. The server card and registry manifest use the same icon. Clients choose whether to display it; this does not replace an icon stored separately by a plugin directory.
See the rendering contract for arguments, limits and fallback behavior. The npm package includes this renderer from version 0.8.0. Update existing installations and restart the MCP connection; npx -y search1api-mcp@latest starts the latest published package.
After changing the URL, reconnect or refresh the connector's tool definitions; clients may cache them. This URL setting applies to Remote MCP only; local stdio behavior is unchanged. See MCP Apps UI for details and release status.
Claude Desktop
{
"mcpServers": {
"search1api": {
"url": "https://mcp.search1api.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_SEARCH1API_KEY"
}
}
}
}Claude.ai (Web)
Install Search1API from the Claude directory, click Connect, and sign in with your Search1API account.
Avoid adding https://mcp.search1api.com/mcp through Add custom connector: that creates a separate custom connector, which Claude names after the URL's host (mcp.search1api.com) unless you type a name.
Cursor
Install as a Cursor plugin (recommended): this repo includes Agent Plugins plugin.json + mcp.json (portable) and .cursor-plugin/plugin.json (Cursor Marketplace metadata / logo) for Remote MCP with OAuth. Submit or install from cursor.directory / the Cursor Marketplace, then sign in when prompted.
For local testing, copy the plugin files into ~/.cursor/plugins/local/search1api (plugin.json, .cursor-plugin/, mcp.json, assets/). Do not symlink from outside that directory — Cursor rejects external symlink targets.
Or configure manually:
{
"mcpServers": {
"search1api": {
"url": "https://mcp.search1api.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_SEARCH1API_KEY"
}
}
}
}Antigravity
Install as an Antigravity plugin: antigravity-plugin/ holds the manifest, mcp_config.json (Remote MCP with OAuth), the Search1API skill, and a Marketplace README. Install it straight from GitHub, then sign in when the browser opens:
agy plugin install https://github.com/superagents-lab/search1api-mcp/tree/main/antigravity-pluginFor local testing, run agy plugin validate --strict ./antigravity-plugin and agy plugin install ./antigravity-plugin from a checkout.
VS Code
{
"servers": {
"search1api": {
"type": "http",
"url": "https://mcp.search1api.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_SEARCH1API_KEY"
}
}
}
}Claude Code
claude mcp add --transport http search1api https://mcp.search1api.com/mcp \
--header "Authorization: Bearer YOUR_SEARCH1API_KEY"Windsurf
{
"mcpServers": {
"search1api": {
"serverUrl": "https://mcp.search1api.com/mcp?apiKey=YOUR_SEARCH1API_KEY"
}
}
}Agent Skill
The Agent Skill has moved to search1api-cli. Install it with:
npm install -g search1api-cli
npx skills add superagents-lab/search1api-cliLocal Mode (stdio)
If you prefer to run the server locally, use Node.js 20 or newer with npx — no cloning required:
{
"mcpServers": {
"search1api": {
"command": "npx",
"args": ["-y", "search1api-mcp"],
"env": {
"SEARCH1API_KEY": "YOUR_SEARCH1API_KEY"
}
}
}
}For self-hosted HTTP deployments behind a proxy, add any internal hostnames
that reach the Node.js process to the comma-separated MCP_ALLOWED_HOSTS
environment variable. mcp.search1api.com and localhost addresses are allowed
by default. Browser-based clients that send an Origin header must also have
their trusted origin hostnames added to the comma-separated
MCP_ALLOWED_ORIGINS variable. Requests from server-side MCP clients normally
omit Origin and do not require an entry.
Tools
search
Search the web using Search1API. Results include a citable id/title/url structure. Pass a result URL to crawl when you need the full page.
Parameter | Required | Default | Description |
| Yes | - | Search query |
| No | 10 | Number of results |
| No | google, bing, bingcn, duckduckgo, yahoo, yandex, x, reddit, github, youtube, arxiv, wechat, bilibili, imdb, wikipedia, grokipedia | |
| No | 1 | Results page (1-100); only bing, bingcn, baidu, and grokipedia paginate |
| No | 0 | Number of top results to crawl for full content; each successful crawl adds 1 credit to the base 1-credit search request |
| No | [] | Sites to include |
| No | [] | Sites to exclude |
| No | - | day, week, month, year |
Results carry published_date in metadata when the engine exposes one; github results add kind, stars, language, and num_comments.
news
Search for news articles. hackernews results link to the discussion thread and add story_url, points, and num_comments to metadata.
Parameter | Required | Default | Description |
| Yes | - | Search query |
| No | 10 | Number of results |
| No | bing | google, bing, duckduckgo, yahoo, hackernews |
| No | 0 | Number of top results to crawl for full content; each successful crawl adds 1 credit to the base 1-credit news request |
| No | [] | Sites to include |
| No | [] | Sites to exclude |
| No | - | day, week, month, year |
crawl
Extract content from a URL.
Parameter | Required | Description |
| Yes | URL to crawl |
sitemap
Get all related links from a URL.
Parameter | Required | Description |
| Yes | URL to get sitemap |
trending
Get trending topics from popular platforms.
Parameter | Required | Default | Description |
| Yes | - | github, hackernews |
| No | 10 | Number of items |
ask
Agentic search: describe the need in natural language and Search1API picks up to five engines and a time window, drops off-topic results, and returns at most 10 citable results ranked by relevance. The result also carries intent (keywords, engines, and window used) and errors (engines that failed while others completed). Costs 5 credits per completed request; use search when you already know the engine.
Parameter | Required | Description |
| Yes | The request in natural language, up to 500 characters |
maps
Find local businesses and places on Google Maps. Returns one page of up to 20 places as citable results: title is the place name, url its Google Maps link, and metadata holds the address, phone, website, category, rating, review count, coordinates, opening hours, open state, and price range when available. Costs 3 credits per page, however many places it holds.
Parameter | Required | Default | Description |
| Yes | - | What to look for, such as "coffee shops" or "dentists in Austin" |
| No | us | Two-letter country code |
| No | en | Result language, such as en, de, or zh-CN |
| No | - |
|
| No | 1 | Google Maps page, 1-6; each page is a separate call |
| No | 20 | Places to return from the page (1-20); fewer places do not lower the price |
deepcrawl
Read many pages of one site in a single task, such as a documentation section. Finds the site's URLs through its sitemap, keeps those that match the path rules, and returns up to max_pages pages as citable results: title, url, and the page's Markdown in text. The result also carries stats (discovered, matched, skipped, crawled, failed), failed (URLs that could not be read, with the reason), the API message, and result_url, a JSON file with every page in full. Costs 20 credits per started task, however many pages it reads.
The tool waits up to about 45 seconds. If the crawl is still running, it returns status: "running" with a task_id; call deepcrawl again with that task_id to collect the pages, which is free and starts no new crawl. Page text is capped at 8,000 characters per page and 80,000 in total; shortened pages have metadata.truncated: true, and result_url holds the full text.
Parameter | Required | Default | Description |
| Yes, unless | - | Site or section to crawl, such as |
| No | 10 | Most pages to read (1-50), in discovery order after the path rules; the price is the same for any number |
| No | - | Up to 20 URL path rules to keep. Without |
| No | - | Up to 20 path rules to skip, same syntax; exclusion wins |
| No | sitemap |
|
| No | - |
|
send_feedback
Report a wrong, empty or incomplete result, an error you could not resolve, documentation that did not match behavior, or a missing capability to the Search1API team. Free; it spends no credits. When the server has a Search1API credential, the report is linked to that account so the team can follow up. Do not include credentials or private data.
Parameter | Required | Description |
| Yes | What went wrong or what was missing, up to 4000 characters |
| No | What you were trying to accomplish |
| No | bug, feature_request, docs, other |
| No | Request id of the call that had the problem |
| No | Your model name |
Version History
v0.11.0: New
deepcrawltool to read up to 50 pages of one site in a single task (20 credits per task; checking a running task is free)v0.10.0: New
mapstool for Google Maps place search (3 credits per page of up to 20 places)v0.7.0: New
asktool for agentic search.searchadds thebingcn,yandex, andgrokipediaengines and apageparameter;searchandnewsaccepttime_range: "week"and passpublished_date, GitHub, and Hacker News fields through in resultmetadatav0.6.1: Bug fix — MCP discovery (
initialize,tools/list,resources/*,prompts/list,server/discover) requires a credential again. Serving it anonymously made clients that equate "tools listed" with "signed in" show a connected state with no way to trigger the OAuth flow; the 401 challenge now answers every unauthenticated request, restoring OAuth sign-in at connect time. Directory visibility is unchanged via the static server card and registry metadatav0.6.0: MCP discovery (
initialize,tools/list,resources/*,prompts/list,server/discover) is served without a credential so clients and directories can enumerate tools before signing in; tool calls still require OAuth or an API key. Stdio mode starts withoutSEARCH1API_KEYand serves tool metadata, refusing only at call time. Malformed requests answer as JSON-RPC instead of an HTML error pagev0.5.4: OAuth issuer moved to
clerk.s1.devand is configurable withOAUTH_AUTHORIZATION_SERVER; MCP server card published at/.well-known/mcp/server-card.json; OAuth discovery documents now send cache headersv0.5.3: OAuth resource and tool metadata no longer require OIDC session scopes; Smithery and Glama registry badges added
v0.5.2: MCP
Originvalidation now runs before request parsing and authentication; self-hosted HTTP deployments can configure trusted browser origins withMCP_ALLOWED_ORIGINSv0.5.1: Documentation, LobeHub manifest, and MCP Registry metadata synchronized;
robots.txtserved on the transport hostv0.5.0: MCP 2026-07-28 support with automatic protocol negotiation; stateless compatibility for 2025-era HTTP clients; request-level authentication
v0.4.0: Structured output schemas, OAuth security schemes, safety annotations, and Official MCP Registry metadata
v0.3.1: OAuth 2.1 support for Remote MCP; retired reasoning tool removed
v0.3.0: Remote MCP support via Streamable HTTP; per-session API key authentication
v0.2.0: Fallback
.envsupport for LibreChat integrationv0.1.8: X (Twitter) and Reddit search services
v0.1.7: Trending tool for GitHub and Hacker News
v0.1.6: Wikipedia search service
v0.1.5: New search parameters and services (arxiv, wechat, bilibili, imdb)
v0.1.3: News search
v0.1.2: Sitemap
v0.1.1: Web crawling
v0.1.0: Initial release
License
MIT
UI and third-party credits
The render_results MCP Apps view shows existing sources as cards with titles and domains. Every client also receives the full text and structured result list. The component is adapted from Rare UI, by Swami Malode. Its MIT + Commons Clause + Attribution terms are reproduced in THIRD_PARTY_NOTICES.md.
UI setup, sandbox origin, and release checks: MCP Apps UI.
Available Tools
10 toolsaskAsk across sourcesARead-onlyInspect
Search several sources at once from a natural-language request when the right engine is unclear. Search1API picks up to five engines (web, Hacker News, Reddit, GitHub, X, arXiv, Wikipedia, and more) and a time window from the wording, then returns up to 10 citable results ranked by relevance, plus the intent it used and any engines that failed. Costs 5 credits per call; use search when you already know the engine.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | What the user is looking for, in their own words; naming a platform ("on Reddit", "papers") or a period ("this week") steers which engines and time window are used |
Output Schema
| Name | Required | Description |
|---|---|---|
| errors | Yes | Engines that failed while others completed |
| intent | Yes | Keywords, engines, and time window that were used |
| results | Yes | Up to 10 sources across the chosen engines, most relevant first |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that up to five engines and a time window are inferred from wording, up to 10 results are returned ranked by relevance, the response includes the inferred intent and any failed engines, and each call costs 5 credits. The failed-engines and cost disclosures are operationally important and appear nowhere 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?
Three sentences, each carrying distinct payload: what it does, what it returns, and what it costs versus the alternative. The disambiguating condition is front-loaded in the first sentence and nothing is redundant.
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?
Despite an output schema existing, the description still usefully previews the result shape (results, intent, failed engines) and adds the credit cost, which no structured field carries. For a single-parameter, read-only tool this leaves no meaningful 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?
With one parameter at 100% schema coverage, the schema already explains that naming a platform or period steers engine and window selection. The description corroborates this and adds that up to five engines are chosen automatically, though it introduces no new syntax or constraints (e.g., the 500-character limit stays 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 ("Search several sources at once") with the distinguishing scope: natural-language federated search across up to five engines. It names the sibling tool `search` and the condition that separates them, so an agent can disambiguate 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?
Explicit routing guidance in both directions: use this "when the right engine is unclear" and "use search when you already know the engine." It pairs that with a concrete cost tradeoff (5 credits per call), which is exactly the kind of information needed to choose between the two.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crawlRead a web pageARead-onlyInspect
Read a public web page supplied by the user or returned by search. Returns its title, URL, and main content as text, so you can answer from the full page instead of a snippet.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Address of the page to read, such as a link the user shared or a URL from search results |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | The page that was read; text holds its main content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, non-idempotent, and non-destructive behavior. The description adds that only public pages are read and that the output is the title, URL, and main content as text, but it does not mention limitations such as JavaScript rendering, paywalls, authentication, or rate limits.
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, front-loads the action, and immediately explains the practical benefit of reading the full page rather than a snippet. There is no redundant or filler text.
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 read tool with rich annotations and an output schema, the description covers purpose, source, and output nature adequately. It leaves a small gap around sibling differentiation and runtime limitations, but nothing essential for a basic call 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 coverage is 100%, and the schema already describes the URL as a link from the user or search results. The description restates that sourcing context but adds no new syntax, format, or constraint details for the parameter.
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 gives a specific verb and resource: reading a public web page. It contrasts the result with a search snippet, which helps distinguish it from the search tool, but it does not explicitly name or rule out close siblings such as render_results.
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 clearly states when this tool applies: when the user supplies a URL or when a URL comes from search results. It does not explicitly say when not to use it or which sibling handles alternative cases, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deepcrawlCrawl a websiteARead-onlyInspect
Read many pages of one website in a single task, such as a documentation section, when the user needs content from across a site rather than one page. Finds the site's URLs through its sitemap, keeps those whose path matches the path rules, and returns up to max_pages pages as citable results with title, URL, and Markdown text, plus page counts and the URLs that failed. Costs 20 credits per started task, however many pages it reads. Waits about 45 seconds; if the crawl is still running, the result holds a task_id, and calling deepcrawl again with that task_id collects the pages at no cost. Use crawl for a single page and sitemap for a list of URLs without their content.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Site or section to crawl, such as https://example.com or https://example.com/docs/; required unless task_id is given | |
| type | No | Where URLs come from: sitemap uses the site's sitemap, or the links on the start page when it has none; all uses every link discovered from the start URL, which can include other sites | sitemap |
| task_id | No | task_id from an earlier deepcrawl result that was still running; collects that crawl for free instead of starting a new one, and the other arguments are ignored | |
| max_pages | No | Most pages to read, taken in discovery order after the path rules; the price is the same for any number | |
| exclude_paths | No | Skip URLs whose path matches one of these rules, with the same syntax as include_paths; exclusion wins over inclusion | |
| include_paths | No | Only read URLs whose path matches one of these rules. A rule without * is a path prefix on segment boundaries ("/docs" matches /docs/api but not /docsearch); a rule with * must match the whole path, and * also matches / ("/blog/*") |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | What to do next: call again with task_id, or where to find text that was cut |
| stats | No | Page counts: links discovered, links matching the path rules, matches left out by max_pages, and pages crawled or failed |
| failed | No | Pages that could not be crawled, with the reason |
| status | Yes | completed when the crawl has finished; running when it needs more time and results is empty |
| message | No | Summary of the finished crawl, including why nothing was crawled |
| results | Yes | Crawled pages in discovery order; text holds each page's Markdown, shortened when metadata.truncated is true |
| task_id | Yes | Crawl task id; pass it back as task_id while status is running |
| truncated | No | Whether page text was shortened or left out to bound the response |
| result_url | No | JSON file with every crawled page in full |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/non-destructive, so the description's credit cost (20 credits per started task regardless of page count), the ~45 second wait, and the task_id resumption path are genuine additions. The async polling pattern is the single most important behavioral trait for correct invocation and it is spelled out. It stops short of stating crawl-concurrency or failure-mode details beyond "the URLs that failed."
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?
Front-loaded with purpose then mechanics, cost, timing, resumption, and alternatives — a sensible priority order. Some clauses overlap the schema text ("returns ... with title, URL, and Markdown text") but the density is justified for a tool with async and billing semantics.
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 6-parameter, billed, potentially asynchronous crawl with an output schema, the description covers everything needed to call it correctly: selection criteria, cost model, latency, resumption, and sibling disambiguation. Return-value detail is correctly compressed since an output schema 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?
Schema coverage is 100%, so baseline is 3; the description still adds value by linking parameters into a workflow — that path rules gate which URLs are counted against max_pages, that price is flat regardless of max_pages, and that task_id overrides the other arguments. It doesn't restate the include_paths wildcard syntax, which it correctly leaves to 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?
The opening sentence names a specific verb and resource ("Read many pages of one website in a single task") and scopes it to a site-section use case, which an agent can immediately distinguish from a single-page fetch or a bare URL listing. It also names the sibling tools it is not.
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 states the selecting condition ("when the user needs content from across a site rather than one page") and explicitly routes to alternatives: "Use crawl for a single page and sitemap for a list of URLs without their content." When-not guidance is present, not just when.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mapsFind places on Google MapsARead-onlyInspect
Find local businesses and places on Google Maps when the user asks where something is, wants nearby options, or needs a list of businesses with contact details. Returns one page of up to 20 places, each with its name and Google Maps link plus address, phone, website, category, rating, review count, coordinates, and opening hours when available. Costs 3 credits per page, however many places it holds; use search for webpages and crawl to read a business website.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Google Maps page to fetch; each page is a separate 3-credit call and pages after the first need location | |
| query | Yes | What to look for on the map, such as "coffee shops" or "dentists in Austin"; a place name in the query sets the area when no location is given | |
| country | No | Two-letter country code for local results | us |
| language | No | Result language, such as en, de, or zh-CN | en |
| location | No | Search around this point instead of letting the query decide the area; required for page 2 and later | |
| max_results | No | How many places the answer needs from the page; fewer places do not lower the price |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Places in Google Maps order; url is the public Google Maps link and metadata holds the place details that were available |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and open-world annotations, it discloses one-page pagination, the 20-place cap, conditionally available fields, and a three-credit charge per page regardless of result count. These details establish important output-scope and cost expectations before invocation.
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-load the purpose and usage triggers, then cover result scope, cost, and alternatives. The returned-field list is dense but relevant to tool selection, and there is no filler or redundant explanation.
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?
Together with the fully documented input schema, output schema, and safety annotations, the description supplies the triggers, scope, cost, pagination behavior, and sibling routing needed for correct selection and invocation. Details such as the location requirement for later pages and coordinate bounds are appropriately handled by 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 coverage is 100%, and the schema already documents query behavior, pagination, location requirements, result limits, and per-page pricing. The description reinforces page and cost semantics but adds little new parameter-specific syntax or constraint information, making the high-coverage baseline of 3 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?
The opening sentence gives a specific verb and resource—finding local businesses and places on Google Maps—and identifies concrete use cases such as nearby options and lists with contact details. The final clause also distinguishes it from search for webpages and crawl for business-site content.
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 explicitly names three user intents that should trigger the tool: asking where something is, wanting nearby options, or needing businesses with contact details. It also routes webpage discovery to search and business-website reading to crawl, providing clear sibling alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
newsNews searchARead-onlyInspect
Search current news when the user asks about recent events, announcements, or coverage. Returns citable article results with title, URL, snippet, and optional extracted text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Short, focused news query | |
| time_range | No | Only return articles published within this window; use day for breaking news | |
| max_results | No | How many articles the answer needs; a handful suits most questions, more suits broad coverage | |
| crawl_results | No | Number of top articles to retrieve as full pages. Each successful retrieval adds 1 credit to the base 1-credit news request | |
| exclude_sites | No | News domains to exclude | |
| include_sites | No | News domains to include | |
| search_service | No | News engine to use; hackernews returns Hacker News discussions instead of publisher articles | bing |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Matching sources, most relevant first; read any url in full with crawl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, openWorld, non-idempotent, non-destructive, so the safety profile is covered. The description adds that results are citable and may include extracted full text, but it omits the credit cost implied by crawl_results and any note that results are external/unverified content. Useful addition, not rich behavioral context.
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: the first covers when to use it, the second covers what comes back. Front-loaded with the trigger condition.
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 an output schema present and full schema coverage, the description needs only to establish purpose, trigger, and general shape of results, all of which it does. The only meaningful gap is that cost-bearing behavior (crawl_results consuming extra credits) is left entirely 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% and every parameter — including time_range, max_results, and the include/exclude site lists — is documented in the schema, so the baseline of 3 applies. The description adds no parameter-level guidance beyond what the schema already states.
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?
Names a specific verb and resource ("Search current news") and scopes it to recent events, announcements, and coverage, which distinguishes it from the generic 'search' and 'crawl' siblings in spirit. It does not explicitly name a sibling or state the boundary, so it stops 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 opening clause gives a clear trigger condition (user asks about recent events, announcements, or coverage), which is exactly the context an agent needs. It offers no exclusions or named alternatives (e.g., when to prefer 'search' or 'trending' instead), so it is clear context without routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_resultsRender the resultsARead-onlyIdempotentInspect
Present already retrieved source results as source cards when the host supports UI, with a complete readable text list otherwise. Use when the user wants to browse sources or a visual list helps the task. Pass existing results in the desired order; never invent source URLs or factual titles. Does not search, crawl, fetch URLs, verify sources, or consume search credits. Do not call for intermediate research results or when a text answer is sufficient.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Heading shown above the cards, such as the research topic | |
| results | Yes | Already retrieved results, in the order to display. No new search is performed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| total | Yes | Number of results in this rendered list, not a provider-wide search total. |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses the UI-vs-text fallback that depends on host capability, that no search credits are consumed, that ordering is preserved as passed, and the integrity constraint against inventing URLs or titles. The annotations only cover the read-only/idempotent profile, so this content is genuinely additive.
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?
Front-loaded with the action and its fallback, and every sentence contributes a distinct constraint. The opening sentence is somewhat dense with its host-capability conditional, but 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?
An output schema exists, so return rendering needn't be explained, and the description covers the remaining risks for this tool type: when to call it, what it must not do, and the integrity constraints on input data. Nothing an agent needs to invoke 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?
Schema description coverage is 100%, so the schema already documents both parameters and the nested result fields. The description still adds useful semantics by stating results are passed "in the desired order" (order is meaningful, not incidental) and reinforcing the no-fabrication rule for url and title.
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 ("Present already retrieved source results as source cards") plus the fallback behavior ("complete readable text list otherwise"). This is clearly distinguishable from search/news/crawl siblings, and the tool's role as a pure presentation layer is unambiguous.
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 explicit positive triggers ("user wants to browse sources or a visual list helps the task") and explicit negatives ("Do not call for intermediate research results or when a text answer is sufficient"). It also enumerates what it does not do ("Does not search, crawl, fetch URLs, verify sources, or consume search credits"), which routes the agent to the right sibling for those needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchWeb searchARead-onlyInspect
Search the live web through one chosen engine: Google, Bing, DuckDuckGo, or Yahoo for the open web, or a specialized source such as GitHub, Reddit, X, YouTube, arXiv, Wikipedia, WeChat, or Bilibili when the user wants results from that platform. Use when the user needs current information, sources, or research. Returns citable results with id, title, URL, and text; read any URL in full with crawl.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page of results to fetch when the first page was not enough; only bing, bingcn, and grokipedia paginate, other engines ignore it | |
| query | Yes | Short, focused search query | |
| time_range | No | Restrict results to those published recently, for time-sensitive questions; leave unset for evergreen topics | |
| max_results | No | How many sources the answer needs; a handful suits most questions, more suits a broad survey | |
| crawl_results | No | How many top results to also read in full, so their text holds the whole page instead of a snippet. Each successful page retrieval adds 1 credit to the base 1-credit search request | |
| exclude_sites | No | Domains to exclude from the search | |
| include_sites | No | Domains to include when the user explicitly scopes the search | |
| search_service | No | Search engine to use; choose one only when it matches the user's source intent |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Matching sources, most relevant first; read any url in full with crawl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint=false, and destructiveHint=false, so the safety and side-effect profile is covered before the description is read. The description adds modest context ("live web", citable results, crawl for full text) but says nothing about credit costs, rate limits, or per-engine reliability — the credit note appears only in the crawl_results param description.
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, no padding: the capability and engine scope come first, then the usage trigger, then the return shape and follow-up action. The long engine list in sentence one is dense but functional, and nothing repeats what the annotations already state.
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 an output schema present and 100% param coverage, the description only needs to convey purpose, trigger, and routing, all of which it does. Minor gaps remain around pagination caveats (only some engines paginate) and cost, but those live in the schema and are not required in the description.
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 every parameter already carries its own explanation, establishing a baseline of 3. The description's engine enumeration overlaps the search_service enum and is actually less complete (omits yandex, imdb, bingcn, grokipedia), adding no syntax or selection heuristics 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 and resource ("Search the live web") and enumerates the engine scope, including specialized platforms like GitHub, Reddit, and arXiv. It also explicitly hands off full-page reading to the sibling tool crawl, so the agent can tell this apart from crawl 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?
"Use when the user needs current information, sources, or research" gives a clear triggering condition, and the mention of crawl establishes the read-in-full alternative. It stops short of naming when-not-to-use cases or contrasting with siblings like news or trending, which likely overlap for time-sensitive queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_feedbackSend feedback to Search1APIAInspect
Report a problem with Search1API to its developers: a wrong, empty or incomplete result, an error you could not resolve, documentation that did not match behavior, or a capability you needed but Search1API lacks. Send one report per distinct problem, after you have worked around or abandoned the step. Do not report normal successful results. Never include credentials, personal data, or private user content. Reporting is optional and must not block the user's task.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Your model name, if you know it. | |
| intent | No | What you were trying to accomplish. | |
| message | Yes | What went wrong or what was missing, in plain language. | |
| category | No | ||
| request_id | No | Request id of the call that had the problem, if known. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, destructiveHint=false, so the safety profile is largely covered. The description still adds non-obvious behavior the annotations do not convey: the no-credentials/no-personal-data rule, that reporting is optional, and that it must not block the user's task. It does not say what a submission returns or whether reports are deduplicated server-side, which keeps it below 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?
Purpose is front-loaded in the first clause, followed by routing rules and then constraints, with no filler sentences. It is dense — four constraint sentences packed into one paragraph — but each carries an operational rule an agent needs, so 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?
Five parameters with only one required, 80% schema coverage, and no output schema, so the description need not explain return values. It supplies the purpose, the triggering conditions, the exclusion, privacy limits, and the non-blocking guarantee — everything an agent needs to decide and submit 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 80%, so the schema already documents model, intent, message and request_id, and the baseline is 3. The description's enumeration of problem types loosely maps onto the category enum (bug, feature_request, docs) but never names the parameter or the enum values, and it does not clarify when request_id is worth supplying. Added meaning beyond the schema is marginal.
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 opens with a specific verb and resource ("Report a problem with Search1API to its developers") and then enumerates the qualifying problem classes: wrong/empty/incomplete results, unresolved errors, doc mismatches, missing capabilities. This is unmistakably different from the sibling retrieval tools (search, crawl, news, maps), which an agent can rule out without opening any 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?
It gives explicit when-to-use conditions, an explicit when-not ("Do not report normal successful results"), a timing rule ("after you have worked around or abandoned the step"), a granularity rule ("one report per distinct problem"), and a priority constraint ("must not block the user's task"). No plausible ambiguity about whether to invoke this is left.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sitemapDiscover links on a siteARead-onlyInspect
Discover related public links from a page or domain when the user wants to explore a site's structure or available pages. Returns a list of absolute URLs found on that site, which can then be read with crawl.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public page or domain URL whose links should be discovered |
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes | Absolute URLs discovered on the site, without titles or page content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnly, openWorld, non-idempotent and non-destructive, so the safety profile is carried structurally. The description adds that results are absolute URLs restricted to public links and are meant to be fed into crawl, but it says nothing about result volume, same-domain vs cross-domain scope, or why the operation is non-idempotent, so added value is modest.
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 trigger condition front-loaded before the return-shape and follow-up guidance. Every clause 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?
With an output schema present, the description rightly omits return-value detail and focuses on when to call and what to do next. The remaining gap is scope: it does not say whether results are limited to the given domain or how the search sibling differs, which matters for a link-discovery tool.
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?
There is a single parameter with 100% schema description coverage, so the schema already explains it fully. The description only echoes the page-or-domain distinction found in the schema and adds no format, normalization, or redirect-handling detail, so the baseline of 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?
"Discover related public links from a page or domain" names a specific verb (discover) and resource (links), scoping the input to a single site. It implicitly contrasts with the crawl sibling by casting sitemap as the discovery step and crawl as the reader, so an agent can tell the two apart.
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 trigger condition is explicit: "when the user wants to explore a site's structure or available pages," and it names crawl as the natural next tool. It stops short of stating when not to use it (e.g., versus the search sibling for cross-site discovery), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trendingExplore trending topicsARead-onlyInspect
List currently trending repositories or stories from GitHub or Hacker News when the user asks what is popular now. Returns each item's title, URL, and a short description when the platform provides one.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | How many trending items the answer needs, from the top of the list | |
| search_service | Yes | Where to look: GitHub for popular open-source repositories, Hacker News for stories developers are discussing | github |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Trending items reported by the platform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety and network profile is covered upstream. The description adds genuine value by disclosing the return shape (title, URL, short description when available), but adds nothing on freshness, rate limits, or result ordering beyond 'top of the list'.
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 no filler; the action and scope lead, and the return-shape note follows. Every clause 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?
Output schema exists so return values need not be detailed, and annotations cover safety and openness; the description correctly avoids duplicating those. Only small gaps remain around what 'trending' means in terms of time window or ranking.
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 both parameters are fully documented with defaults, bounds, and enum values in the schema itself. The description merely restates the two sources and adds no format or usage nuance beyond it, 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 ('List') and resource ('currently trending repositories or stories') plus the two sources, so the agent knows exactly what comes back. It stops short of explicitly contrasting with the sibling 'news' tool, which is the closest potential overlap.
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?
Provides a clear triggering condition ('when the user asks what is popular now'), which is more than most definitions offer. It gives no explicit when-not guidance or named alternative for non-trending lookups, leaving that inference to the agent.
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.
2 tool updates
v0.11.0- Added
deepcrawl - Added
maps
8 tool updates
v0.9.0- Changed
ask5 fields changed- changed
Input schema / properties / query / descriptionPrevious value: -"The request in natural language; platform hints (\"on Reddit\", \"papers\") and time hints (\"this week\") steer the search"New value: +"What the user is looking for, in their own words; naming a platform (\"on Reddit\", \"papers\") or a period (\"this week\") steers which engines and time window are used" - added
Output schema / properties / intent / properties / search_query / descriptionAdded value: +"Keywords sent to the engines" - added
Output schema / properties / intent / properties / sources / descriptionAdded value: +"Engines that were searched" - added
Output schema / properties / intent / properties / time_range / descriptionAdded value: +"Recency window inferred from the request, or null for any time" - added
Output schema / properties / results / descriptionAdded value: +"Up to 10 sources across the chosen engines, most relevant first"
- Changed
crawl2 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"Public HTTP or HTTPS URL to retrieve"New value: +"Address of the page to read, such as a link the user shared or a URL from search results" - added
Output schema / properties / result / descriptionAdded value: +"The page that was read; text holds its main content"
- Changed
news4 fields changed- changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of articles to return"New value: +"How many articles the answer needs; a handful suits most questions, more suits broad coverage" - changed
Input schema / properties / search_service / descriptionPrevious value: -"News search engine to use"New value: +"News engine to use; hackernews returns Hacker News discussions instead of publisher articles" - changed
Input schema / properties / time_range / descriptionPrevious value: -"Optional recency window; use day for breaking news"New value: +"Only return articles published within this window; use day for breaking news" - added
Output schema / properties / results / descriptionAdded value: +"Matching sources, most relevant first; read any url in full with crawl"
- Changed
render_results11 fields changed- changed
Input schema / properties / results / items / properties / id / descriptionPrevious value: -"Copy the original result ID when available. If absent, the server uses its URL."New value: +"The id from the original search result; the server falls back to the URL when there is none" - changed
Input schema / properties / results / items / properties / metadata / descriptionPrevious value: -"Optional original JSON source metadata. Do not put credentials or UI implementation details here."New value: +"Metadata from the original result, such as the publication date; never credentials or UI details" - changed
Input schema / properties / results / items / properties / text / descriptionPrevious value: -"Optional source snippet or faithful excerpt, not a full page or model-written answer."New value: +"Snippet or faithful excerpt from the source, not a full page or a model-written answer" - changed
Input schema / properties / results / items / properties / title / descriptionPrevious value: -"Copy the source title; do not invent or rewrite factual source titles."New value: +"Source title exactly as the search returned it; never invent or rewrite it" - changed
Input schema / properties / results / items / properties / url / descriptionPrevious value: -"Absolute HTTP(S) source URL, without embedded credentials."New value: +"Link to the source as the search returned it, never one carrying credentials" - changed
Input schema / properties / title / descriptionPrevious value: -"Optional human-readable list heading. Defaults to Results."New value: +"Heading shown above the cards, such as the research topic" - changed
Output schema / properties / results / items / properties / id / descriptionPrevious value: -"Copy the original result ID when available. If absent, the server uses its URL."New value: +"The id from the original search result; the server falls back to the URL when there is none" - changed
Output schema / properties / results / items / properties / metadata / descriptionPrevious value: -"Optional original JSON source metadata. Do not put credentials or UI implementation details here."New value: +"Metadata from the original result, such as the publication date; never credentials or UI details" - changed
Output schema / properties / results / items / properties / text / descriptionPrevious value: -"Optional source snippet or faithful excerpt, not a full page or model-written answer."New value: +"Snippet or faithful excerpt from the source, not a full page or a model-written answer" - changed
Output schema / properties / results / items / properties / title / descriptionPrevious value: -"Copy the source title; do not invent or rewrite factual source titles."New value: +"Source title exactly as the search returned it; never invent or rewrite it" - changed
Output schema / properties / results / items / properties / url / descriptionPrevious value: -"Absolute HTTP(S) source URL, without embedded credentials."New value: +"Link to the source as the search returned it, never one carrying credentials"
- Changed
search5 fields changed- changed
Input schema / properties / crawl_results / descriptionPrevious value: -"Number of top results to retrieve as full pages. Each successful page retrieval adds 1 credit to the base 1-credit search request"New value: +"How many top results to also read in full, so their text holds the whole page instead of a snippet. Each successful page retrieval adds 1 credit to the base 1-credit search request" - changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of results to return"New value: +"How many sources the answer needs; a handful suits most questions, more suits a broad survey" - changed
Input schema / properties / page / descriptionPrevious value: -"Results page to fetch; only bing, bingcn, baidu, and grokipedia paginate, other engines ignore it"New value: +"Which page of results to fetch when the first page was not enough; only bing, bingcn, and grokipedia paginate, other engines ignore it" - changed
Input schema / properties / time_range / descriptionPrevious value: -"Optional recency window for time-sensitive searches"New value: +"Restrict results to those published recently, for time-sensitive questions; leave unset for evergreen topics" - added
Output schema / properties / results / descriptionAdded value: +"Matching sources, most relevant first; read any url in full with crawl"
- Added
send_feedback - Changed
sitemap1 field changed- added
Output schema / properties / links / descriptionAdded value: +"Absolute URLs discovered on the site, without titles or page content"
- Changed
trending6 fields changed- changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of trending items to return"New value: +"How many trending items the answer needs, from the top of the list" - changed
Input schema / properties / search_service / descriptionPrevious value: -"Platform whose trending items should be returned"New value: +"Where to look: GitHub for popular open-source repositories, Hacker News for stories developers are discussing" - added
Output schema / properties / results / descriptionAdded value: +"Trending items reported by the platform" - added
Output schema / properties / results / items / properties / description / descriptionAdded value: +"Repository summary or story context, when available" - added
Output schema / properties / results / items / properties / title / descriptionAdded value: +"Repository name or story headline" - added
Output schema / properties / results / items / properties / url / descriptionAdded value: +"Link to the repository or story"
4 tool updates
v0.8.0- Added
ask - Changed
news1 field changed- changed
Input schema / properties / time_range / enumPrevious value: -[ - "day", - "month", - "year" -]New value: +[ + "day", + "week", + "month", + "year" +]
- Added
render_results - Changed
search3 fields changed- added
Input schema / properties / pageAdded value: +{ + "default": 1, + "description": "Results page to fetch; only bing, bingcn, baidu, and grokipedia paginate, other engines ignore it", + "maximum": 100, + "minimum": 1, + "type": "number" +} - changed
Input schema / properties / search_service / enumPrevious value: -[ - "google", - "bing", - "duckduckgo", - "yahoo", - "x", - "reddit", - "github", - "youtube", - "arxiv", - "wechat", - "bilibili", - "imdb", - "wikipedia" -]New value: +[ + "google", + "bing", + "bingcn", + "duckduckgo", + "yahoo", + "yandex", + "x", + "reddit", + "github", + "youtube", + "arxiv", + "wechat", + "bilibili", + "imdb", + "wikipedia", + "grokipedia" +] - changed
Input schema / properties / time_range / enumPrevious value: -[ - "day", - "month", - "year" -]New value: +[ + "day", + "week", + "month", + "year" +]
1 tool update
v0.5.4- Removed
fetch
6 tool updates
v0.4.0- Changed
crawl3 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"URL to crawl"New value: +"Public HTTP or HTTPS URL to retrieve" - added
Input schema / properties / url / formatAdded value: +"uri" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "result": { + "properties": { + "id": { + "description": "Stable identifier for this result; for web results this is the canonical URL", + "type": "string" + }, + "metadata": { + "additionalProperties": true, + "description": "Additional source metadata", + "type": "object" + }, + "text": { + "description": "Result snippet or extracted page text when available", + "type": "string" + }, + "title": { + "description": "Human-readable result title", + "type": "string" + }, + "url": { + "description": "Canonical URL that clients can cite and users can open", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + } + }, + "required": [ + "result" + ], + "type": "object" +}
- Added
fetch - Changed
news11 fields changed- changed
Input schema / properties / crawl_results / descriptionPrevious value: -"Number of top results to crawl for full webpage content. Each successfully crawled page adds 1 credit to the base 1-credit news request"New value: +"Number of top articles to retrieve as full pages. Each successful retrieval adds 1 credit to the base 1-credit news request" - added
Input schema / properties / crawl_results / minimumAdded value: +0 - changed
Input schema / properties / exclude_sites / descriptionPrevious value: -"List of sites to exclude from search. Only use when you need to explicitly filter out specific domains from results"New value: +"News domains to exclude" - changed
Input schema / properties / include_sites / descriptionPrevious value: -"List of sites to include in search. Only use when you need special results from sites not available in search_service"New value: +"News domains to include" - changed
Input schema / properties / max_results / descriptionPrevious value: -"Maximum number of results to return"New value: +"Maximum number of articles to return" - added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / query / descriptionPrevious value: -"Search query, be simple and concise"New value: +"Short, focused news query" - changed
Input schema / properties / search_service / descriptionPrevious value: -"Specify the news engine to use. Choose based on your specific needs"New value: +"News search engine to use" - changed
Input schema / properties / time_range / descriptionPrevious value: -"Time range for search results, only use when specific time constraints are required"New value: +"Optional recency window; use day for breaking news" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "items": { + "properties": { + "id": { + "description": "Stable identifier for this result; for web results this is the canonical URL", + "type": "string" + }, + "metadata": { + "additionalProperties": true, + "description": "Additional source metadata", + "type": "object" + }, + "text": { + "description": "Result snippet or extracted page text when available", + "type": "string" + }, + "title": { + "description": "Human-readable result title", + "type": "string" + }, + "url": { + "description": "Canonical URL that clients can cite and users can open", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
- Changed
search10 fields changed- changed
Input schema / properties / crawl_results / descriptionPrevious value: -"Number of top results to crawl for full webpage content. Each successfully crawled page adds 1 credit to the base 1-credit search request"New value: +"Number of top results to retrieve as full pages. Each successful page retrieval adds 1 credit to the base 1-credit search request" - added
Input schema / properties / crawl_results / minimumAdded value: +0 - changed
Input schema / properties / exclude_sites / descriptionPrevious value: -"List of sites to exclude from search. Only use when you need to explicitly filter out specific domains from results"New value: +"Domains to exclude from the search" - changed
Input schema / properties / include_sites / descriptionPrevious value: -"List of sites to include in search. Only use when you need special results from sites not available in search_service"New value: +"Domains to include when the user explicitly scopes the search" - added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / query / descriptionPrevious value: -"Search query, be simple and concise"New value: +"Short, focused search query" - changed
Input schema / properties / search_service / descriptionPrevious value: -"Specify the search engine to use. Choose based on your specific needs"New value: +"Search engine to use; choose one only when it matches the user's source intent" - changed
Input schema / properties / time_range / descriptionPrevious value: -"Time range for search results, only use when specific time constraints are required"New value: +"Optional recency window for time-sensitive searches" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "items": { + "properties": { + "id": { + "description": "Stable identifier for this result; for web results this is the canonical URL", + "type": "string" + }, + "metadata": { + "additionalProperties": true, + "description": "Additional source metadata", + "type": "object" + }, + "text": { + "description": "Result snippet or extracted page text when available", + "type": "string" + }, + "title": { + "description": "Human-readable result title", + "type": "string" + }, + "url": { + "description": "Canonical URL that clients can cite and users can open", + "format": "uri", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
- Changed
sitemap3 fields changed- changed
Input schema / properties / url / descriptionPrevious value: -"URL to get sitemap"New value: +"Public page or domain URL whose links should be discovered" - added
Input schema / properties / url / formatAdded value: +"uri" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "links": { + "items": { + "format": "uri", + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "links" + ], + "type": "object" +}
- Changed
trending4 fields changed- added
Input schema / properties / max_results / maximumAdded value: +50 - added
Input schema / properties / max_results / minimumAdded value: +1 - changed
Input schema / properties / search_service / descriptionPrevious value: -"Specify the platform to get trending topics from"New value: +"Platform whose trending items should be returned" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "results": { + "items": { + "properties": { + "description": { + "type": "string" + }, + "title": { + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "title", + "url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "results" + ], + "type": "object" +}
3 tool updates
v0.3.1- Changed
news1 field changed- changed
Input schema / properties / crawl_results / descriptionPrevious value: -"Number of results to crawl for full webpage content, useful when search result summaries are insufficient for complex queries"New value: +"Number of top results to crawl for full webpage content. Each successfully crawled page adds 1 credit to the base 1-credit news request"
- Removed
reasoning - Changed
search1 field changed- changed
Input schema / properties / crawl_results / descriptionPrevious value: -"Number of results to crawl for full webpage content, useful when search result summaries are insufficient for complex queries"New value: +"Number of top results to crawl for full webpage content. Each successfully crawled page adds 1 credit to the base 1-credit search request"
6 tool updates
v0.1.8- First observed
crawl - First observed
news - First observed
reasoning - First observed
search - First observed
sitemap - First observed
trending
TDQS
Scored across 10 tools
Most tools have clearly distinct roles: sitemap vs crawl vs deepcrawl are well-separated by scope, and maps/news/trending target specific sources. The main overlap is between search, ask, and news — all return web-ish results — though the descriptions (single engine vs multi-engine vs news) give an agent enough to choose correctly.
Naming mixes bare nouns (sitemap, maps, news, trending), bare verbs (search, ask, crawl), verb_noun (send_feedback, render_results), and a compound (deepcrawl). Each name is readable and none are cryptic, but there is no single predictable pattern an agent can rely on.
Ten tools is well-scoped for a search-and-retrieval server, with each tool covering a distinct retrieval mode or utility. Nothing feels padded or missing at the count level.
The surface covers the full research lifecycle: discovery (sitemap, trending, news, maps), search (search, ask), and reading (crawl, deepcrawl), plus presentation and feedback utilities. Minor gaps exist — no structured extraction or batch URL fetch — but core workflows have no dead ends.
Maintenance
Related MCP Connectors
MCP server for Google search results via SERP API
One MCP server for all web data. Scrape, search, crawl, and AI research in one install.
Web search API and MCP server for developers building AI agents.
Related MCP Servers
- AlicenseAqualityBmaintenanceFirecrawl, the context API for AI agents, as an MCP server. Search the web, scrape any URL, parse PDFs and documents, crawl and map sites, interact with pages in a real browser, run Agent research jobs, monitor pages for changes, and search scientific papers. Returns clean Markdown or structured JSON. Run locally with npx firecrawl-mcp or connect to https://mcp.firecrawl.dev/v2/mcp28158,347 npm7,764MIT
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables AI assistants to perform real-time web searches, retrieving up-to-date information from the internet via a Crawler API.170 npm42ISC
- FlicenseAqualityCmaintenanceA Model Context Protocol server that provides web search capabilities using Google Custom Search API and webpage content extraction functionality.26 npm2-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides web search capabilities using Google Custom Search API and webpage content extraction functionality.2MIT