Tavily MCP Load Balancer
The Tavily MCP Load Balancer is a high-availability gateway that provides intelligent load balancing across multiple Tavily API keys with web-based management and multi-protocol access.
Core Capabilities:
Advanced Web Search (
tavily-search/search): Real-time web searches with customizable depth (basic/advanced), topic filtering (general/news), time-range constraints, country boosting, and domain inclusion/exclusionContent Extraction (
tavily-extract): Extract and parse web content from URLs in markdown or plain text format with configurable extraction depthWeb Crawling (
tavily-crawl): Systematically crawl websites with configurable depth, breadth, category filtering, path selection via regex, and natural language instructionsSite Mapping (
tavily-map): Generate structured maps of website architectures to analyze site organization and navigation pathsIntelligent Load Balancing: Distributes requests across multiple API keys using round-robin and weighted scheduling with automatic key rotation and failover
Smart Error Handling: Automatically detects and handles rate limits, quota exhaustion, and authentication errors
Web Management Dashboard: Manage API keys with encrypted storage, monitor real-time usage statistics via WebSocket, review request logs (30-day retention), and configure settings
Multi-Protocol Support: Access via MCP stdio, SSE (Server-Sent Events), or streamableHTTP (JSON-RPC) interfaces
Data Persistence: SQLite database with encrypted storage for API keys, quotas, and logs with automatic monthly quota refresh at UTC boundaries
Flexible Deployment: Docker support for linux/amd64 and linux/arm64 architectures with configurable concurrency limits, timeouts, and operational parameters
Supports environment variable configuration for API keys and server settings through .env files
Built on Node.js runtime to provide high-performance MCP server capabilities
Uses npm for package management and script execution
Developed using TypeScript for type-safety and modern JavaScript features
Click on "Install 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., "@Tavily MCP Load Balancersearch for latest AI developments in 2024"
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.
Tavily MCP Load Balancer
一个支持多 API 密钥负载均衡的 Tavily MCP 服务器,提供 SSE 和 streamableHTTP 接口,自动轮询多个 API 密钥以实现高可用性。
v3.1.0 (2026-07-24)
低频配额队列:所有
/usage请求统一排队、去重并遵守 Tavily 独立限流双同步入口:支持同步过期 Key 和后台同步全部 Key
异步 Key 测试:勾选测试进入高优先级队列,成功后同时更新额度
额度显示修复:免费账户正确同步 1000 上限,未知额度不再显示为无限
v3.0.0 (2025-01-06)
官方 MCP 对齐:完整适配 tavily-mcp v0.2.12 工具参数与行为
智能错误处理:精细区分配额耗尽、速率限制与网络问题
持久化存储:SQLite 存储 API Key、配额与请求日志
Web 管理后台:可视化管理 Key、统计、日志与设置
自动配额刷新:UTC 自然月自动更新配额状态
v2.2.0 (2025-08-15)
多架构镜像:linux/amd64 与 linux/arm64
v2.1.0 (2025-08-14)
streamableHTTP 支持:HTTP POST /mcp 端点
多协议兼容:SSE + streamableHTTP
v2.0.0 (2025-08-12)
架构重构:原生 SSE 实现
工具更新:新增 tavily-crawl 和 tavily-map
安全改进:响应数据清理和字符编码处理
v1.0.0 (2025-08-05)
初始版本:多 API 密钥负载均衡
功能特性
智能负载均衡 — 轮询 + 权重调度,多 Key 高可用
错误分级处理 — 速率限制 / 配额耗尽 / 鉴权错误精确识别
多协议支持 — MCP stdio / SSE / streamableHTTP 全覆盖
数据持久化 — SQLite 存储 Key、配额与日志
Web 管理后台 — Dashboard、Key 管理、统计、日志、设置
实时更新 — WebSocket 推送统计刷新
数据安全 — Key 加密存储 + 脱敏展示
Related MCP server: tavily-mcp-proxy
快速开始
Docker 部署(推荐)
docker run -d \
--name tavily-mcp-lb \
-p 60002:60002 \
-e DATABASE_ENCRYPTION_KEY="your-32-byte-random-key" \
-e ADMIN_PASSWORD="optional-admin-password" \
-e TAVILY_API_KEYS="your-key1,your-key2,your-key3" \
yatotm1994/tavily-mcp-loadbalancer:latest镜像支持 amd64 / arm64,Docker 会自动匹配本机架构。
本地开发
# 1. 克隆并安装
git clone https://github.com/yatotm/tavily-mcp-loadbalancer.git
cd tavily-mcp-loadbalancer
npm install
# 2. 配置环境变量
cp .env.example .env
# 编辑 .env,设置 DATABASE_ENCRYPTION_KEY(必填)与 ADMIN_PASSWORD(可选)
# 3. 启动服务
npm run build-and-start服务启动后访问:
端点 | 地址 |
管理后台 |
|
SSE 接口 |
|
streamableHTTP |
|
API |
|
WebSocket |
|
首次启动后在管理后台添加 API Key。环境变量
TAVILY_API_KEYS仅用于初始导入。
Docker Compose
git clone https://github.com/yatotm/tavily-mcp-loadbalancer.git
cd tavily-mcp-loadbalancer
cp .env.example .env
docker-compose up -d
docker-compose logs -f自定义构建
docker build -t tavily-mcp-loadbalancer .
docker run -d --name tavily-mcp-lb -p 60002:60002 \
-e TAVILY_API_KEYS="key1,key2" tavily-mcp-loadbalancer开发模式
npm run start-gateway # HTTP + UI
npm run dev # MCP stdio
./start.sh # 脚本启动可用工具
工具名称 | 功能描述 | 主要参数 |
| 网络搜索 | query, max_results, search_depth |
| 网页内容提取 | urls, extract_depth, format |
| 网站爬虫 | url, max_depth, limit |
| 网站地图生成 | url, max_depth, max_breadth |
接口说明
接口 | 地址 |
SSE |
|
消息 |
|
streamableHTTP |
|
健康检查 |
|
streamableHTTP 示例
# 初始化
curl -X POST http://localhost:60002/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {"name": "test-client", "version": "1.0.0"}
}
}'
# 获取工具列表
curl -X POST http://localhost:60002/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'
# 调用搜索
curl -X POST http://localhost:60002/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "search",
"arguments": {"query": "OpenAI GPT-4", "max_results": 3}
}
}'工具参数
search / tavily-search
{
"query": "OpenAI GPT-4",
"search_depth": "basic",
"topic": "general",
"max_results": 10,
"country": "united states"
}tavily-extract
{
"urls": ["https://example.com/article"],
"extract_depth": "basic",
"format": "markdown"
}tavily-crawl
{
"url": "https://example.com",
"max_depth": 2,
"limit": 50,
"extract_depth": "basic"
}tavily-map
{
"url": "https://example.com",
"max_depth": 1,
"limit": 50
}配置
环境变量
变量名 | 描述 | 默认值 |
| 服务端口 | 60002 |
| 绑定地址 | 0.0.0.0 |
| 数据库路径 | ./data/tavily.db |
| 加密密钥(必填) | - |
| 管理后台密码 | - |
| 启用 Web UI | true |
| 最大并发 | 4 |
| 请求超时(ms) | 30000 |
| Key 最大错误次数 | 5 |
|
| 75000 |
| 上游未返回 | 600000 |
| 配额数据过期时间(ms) | 21600000 |
| 自动扫描过期 Key 的间隔(ms) | 21600000 |
| 日志保留天数 | 30 |
| 日志级别 | info |
| 初始 Key(逗号分隔) | - |
配置示例
# .env
PORT=60002
DATABASE_ENCRYPTION_KEY=your-32-byte-random-key
ADMIN_PASSWORD=optional-password
TAVILY_API_KEYS=tvly-key1,tvly-key2故障排除
问题 | 解决方案 |
无可用 API 密钥 | 在管理后台检查 Key 状态和配额 |
连接超时 | 检查网络和防火墙设置 |
端口被占用 |
|
# 健康检查
curl http://localhost:60002/health
# 查看日志
docker logs tavily-mcp-lb建议在 Web 管理后台查看请求统计、错误日志与 Key 状态。
许可证
MIT License
如果这个项目对你有帮助,欢迎 Star ⭐
Available Tools
5 toolssearchB
A powerful web search tool that provides comprehensive, real-time results using Tavily's AI search engine. Returns relevant web content with customizable parameters for result count, content type, and domain filtering. Ideal for gathering current information, news, and detailed web content analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Boost search results from a specific country. This will prioritize content from the selected country in the search results. Available only if topic is general. Country names MUST be written in lowercase, plain English, with spaces and no underscores. | |
| days | No | The number of days back from the current date to include in the search results. This specifies the time frame of data to be retrieved. Please note that this feature is only available when using the 'news' search topic | |
| end_date | No | Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD | |
| exclude_domains | No | List of domains to specifically exclude, if the user asks to exclude a domain set this to the domain of the site | |
| include_domains | No | A list of domains to specifically include in the search results, if the user asks to search on specific sites set this to the domain of the site | |
| include_favicon | No | Whether to include the favicon URL for each result | |
| include_image_descriptions | No | Include a list of query-related images and their descriptions in the response | |
| include_images | No | Include a list of query-related images in the response | |
| include_raw_content | No | Include the cleaned and parsed HTML content of each search result | |
| max_results | No | The maximum number of search results to return | |
| query | Yes | Search query | |
| search_depth | No | The depth of the search. It can be 'basic' or 'advanced' | basic |
| start_date | No | Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD. | |
| time_range | No | The time range back from the current date to include in the search results. This feature is available for both 'general' and 'news' search topics | |
| topic | No | The category of the search. This will determine which of our agents will be used for the search | general |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'real-time results' and 'customizable parameters,' but lacks critical details such as rate limits, authentication requirements, error handling, or what the output format looks like (since there's no output schema). For a complex tool with 15 parameters, this is insufficient.
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 efficiently structured in two sentences, front-loaded with the core purpose and key features. It avoids redundancy, though it could be slightly more concise by integrating the 'ideal for' clause into the first sentence.
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?
Given the tool's complexity (15 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain the return format, error conditions, or behavioral constraints like rate limits or data freshness. For a search tool with rich parameters, more contextual guidance is needed to help the agent use it effectively.
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 description coverage is 100%, so the schema already documents all 15 parameters thoroughly. The description adds minimal value beyond the schema, mentioning 'customizable parameters for result count, content type, and domain filtering' but without specific details. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the tool performs web search using Tavily's AI engine, providing real-time results. It specifies the verb ('search') and resource ('web content'), but doesn't explicitly differentiate from sibling tools like 'tavily-search' or 'tavily-crawl', which likely have overlapping functionality.
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 mentions the tool is 'ideal for gathering current information, news, and detailed web content analysis,' which implies usage contexts. However, it doesn't provide explicit guidance on when to use this tool versus the sibling tools (tavily-crawl, tavily-extract, tavily-map, tavily-search), leaving the agent to infer differences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-crawlA
A powerful web crawler that initiates a structured web crawl starting from a specified base URL. The crawler expands from that point like a tree, following internal links across pages. You can control how deep and wide it goes, and guide it to focus on specific sections of the site.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_external | No | Whether to allow following links that go to external domains | |
| categories | No | Filter URLs using predefined categories like documentation, blog, api, etc | |
| extract_depth | No | Advanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latency | basic |
| instructions | No | Natural language instructions for the crawler | |
| limit | No | Total number of links the crawler will process before stopping | |
| max_breadth | No | Max number of links to follow per level of the tree (i.e., per page) | |
| max_depth | No | Max depth of the crawl. Defines how far from the base URL the crawler can explore. | |
| select_domains | No | Regex patterns to select crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) | |
| select_paths | No | Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*) | |
| url | Yes | The root URL to begin the crawl |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the crawling behavior ('expands like a tree', 'following internal links'), scope control ('how deep and wide it goes'), and focus guidance. However, it doesn't mention important behavioral aspects like rate limits, authentication requirements, error handling, or what the output format looks like.
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 perfectly sized at three sentences, each earning its place. It's front-loaded with the core purpose, followed by expansion behavior, and ending with control capabilities. Zero wasted words or redundant 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?
Given the complexity of a 10-parameter web crawling tool with no annotations and no output schema, the description provides adequate high-level context but lacks details about output format, error conditions, performance characteristics, or specific use cases. For a tool this complex, more behavioral and output information would be helpful despite the excellent schema coverage.
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 all 10 parameters thoroughly. The description adds some high-level context about controlling depth, breadth, and focusing on specific sections, which aligns with parameters like max_depth, max_breadth, and categories/select_paths. However, it doesn't provide additional semantic meaning beyond what's already in the comprehensive schema descriptions.
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 clearly states the tool's purpose with specific verbs ('initiates a structured web crawl', 'expands like a tree', 'following internal links') and identifies the resource ('starting from a specified base URL'). It distinguishes this crawl tool from sibling tools like 'search' or 'extract' by emphasizing its tree-based expansion approach.
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 provides clear context about when to use this tool: for structured crawling starting from a base URL with tree-like expansion. It mentions controlling depth, breadth, and focusing on specific site sections. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-extractC
A powerful web content extraction tool that retrieves and processes raw content from specified URLs, ideal for data collection, content analysis, and research tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| extract_depth | No | Depth of extraction - 'basic' or 'advanced', if urls are linkedin use 'advanced' or if explicitly told to use advanced | basic |
| format | No | The format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency. | markdown |
| include_favicon | No | Whether to include the favicon URL for each result | |
| include_images | No | Include a list of images extracted from the urls in the response | |
| urls | Yes | List of URLs to extract content from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'retrieves and processes raw content' but doesn't mention critical behavioral traits like rate limits, authentication needs, error handling, or what 'processes' entails (e.g., cleaning, structuring). For a web extraction tool with potential complexity, this leaves significant gaps in understanding how it behaves beyond basic functionality.
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 appropriately concise with two sentences that efficiently state the tool's purpose and ideal use cases. It's front-loaded with the core functionality. While it could be slightly more structured (e.g., separating purpose from guidelines), there's minimal waste, and every sentence adds value.
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?
Given the complexity of web content extraction (5 parameters, no output schema, no annotations), the description is incomplete. It lacks details on output format, error cases, performance characteristics, and how it differs from sibling tools. Without annotations or output schema, the description should compensate more to help an agent use it effectively, but it provides only basic functional overview.
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 fully documents all 5 parameters. The description doesn't add any parameter-specific information beyond what's in the schema (e.g., it doesn't explain 'extract_depth' or 'format' further). Baseline 3 is appropriate when the schema does the heavy lifting, though the description could have provided higher-level context about parameter interactions.
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 clearly states the tool's purpose: 'retrieves and processes raw content from specified URLs' with specific verbs and resource. It mentions use cases like 'data collection, content analysis, and research tasks' which helps clarify intent. However, it doesn't explicitly differentiate from sibling tools like 'tavily-crawl' or 'tavily-search', which likely have overlapping web content functionality.
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 provides no guidance on when to use this tool versus alternatives like 'tavily-crawl' or 'tavily-search'. It mentions it's 'ideal for data collection, content analysis, and research tasks', but this is generic and doesn't help an agent choose between sibling tools. There are no explicit when/when-not statements or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-mapA
A powerful web mapping tool that creates a structured map of website URLs, allowing you to discover and analyze site structure, content organization, and navigation paths. Perfect for site audits, content discovery, and understanding website architecture.
| Name | Required | Description | Default |
|---|---|---|---|
| allow_external | No | Whether to allow following links that go to external domains | |
| categories | No | Filter URLs using predefined categories like documentation, blog, api, etc | |
| instructions | No | Natural language instructions for the crawler | |
| limit | No | Total number of links the crawler will process before stopping | |
| max_breadth | No | Max number of links to follow per level of the tree (i.e., per page) | |
| max_depth | No | Max depth of the mapping. Defines how far from the base URL the crawler can explore | |
| select_domains | No | Regex patterns to select crawling to specific domains or subdomains (e.g., ^docs\.example\.com$) | |
| select_paths | No | Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*) | |
| url | Yes | The root URL to begin the mapping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as 'powerful' and for 'discovering and analyzing,' which implies it performs read-only operations, but doesn't specify behavioral traits like rate limits, authentication needs, or potential impacts on target websites. The description adds value by explaining the mapping purpose but lacks detailed behavioral disclosure.
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 appropriately sized and front-loaded: it starts with the core purpose, then elaborates on use cases. Every sentence earns its place by adding value without redundancy, making it efficient and well-structured.
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?
Given the complexity (9 parameters, no annotations, no output schema), the description is somewhat complete but has gaps. It explains the tool's purpose and use cases well, but without annotations or output schema, it doesn't cover behavioral aspects or return values, leaving the agent to infer details from the schema alone.
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 description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description doesn't add specific parameter semantics beyond what the schema provides, such as explaining how 'categories' interact with mapping or the implications of 'max_depth.' Baseline 3 is appropriate since the schema does the heavy lifting.
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 clearly states the tool's purpose: 'creates a structured map of website URLs' with specific verbs like 'discover and analyze site structure, content organization, and navigation paths.' It distinguishes from siblings like 'search' or 'extract' by focusing on mapping and structural analysis rather than general search or content extraction.
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 provides clear context for when to use this tool: 'Perfect for site audits, content discovery, and understanding website architecture.' It doesn't explicitly mention when not to use it or name alternatives among siblings, but the context strongly implies it's for structural mapping rather than other tasks like searching or crawling without mapping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tavily-searchB
A powerful web search tool that provides comprehensive, real-time results using Tavily's AI search engine. Returns relevant web content with customizable parameters for result count, content type, and domain filtering. Ideal for gathering current information, news, and detailed web content analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Boost search results from a specific country. This will prioritize content from the selected country in the search results. Available only if topic is general. Country names MUST be written in lowercase, plain English, with spaces and no underscores. | |
| days | No | The number of days back from the current date to include in the search results. This specifies the time frame of data to be retrieved. Please note that this feature is only available when using the 'news' search topic | |
| end_date | No | Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD | |
| exclude_domains | No | List of domains to specifically exclude, if the user asks to exclude a domain set this to the domain of the site | |
| include_domains | No | A list of domains to specifically include in the search results, if the user asks to search on specific sites set this to the domain of the site | |
| include_favicon | No | Whether to include the favicon URL for each result | |
| include_image_descriptions | No | Include a list of query-related images and their descriptions in the response | |
| include_images | No | Include a list of query-related images in the response | |
| include_raw_content | No | Include the cleaned and parsed HTML content of each search result | |
| max_results | No | The maximum number of search results to return | |
| query | Yes | Search query | |
| search_depth | No | The depth of the search. It can be 'basic' or 'advanced' | basic |
| start_date | No | Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD. | |
| time_range | No | The time range back from the current date to include in the search results. This feature is available for both 'general' and 'news' search topics | |
| topic | No | The category of the search. This will determine which of our agents will be used for the search | general |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'real-time results' and 'customizable parameters' but lacks critical behavioral details such as rate limits, authentication requirements, error handling, pagination behavior, or what happens when parameters conflict. For a complex 15-parameter tool with no annotation coverage, this is a significant gap in behavioral transparency.
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 appropriately sized with three sentences that efficiently convey the tool's purpose and key features. It's front-loaded with the core functionality and follows with supporting details. While every sentence earns its place, the third sentence could be slightly more specific about the 'detailed web content analysis' aspect.
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?
Given the complexity (15 parameters, no annotations, no output schema), the description is insufficiently complete. It doesn't explain what the tool returns (only mentioning 'relevant web content' vaguely), doesn't address potential parameter conflicts or dependencies, and provides minimal guidance on when to use which parameters. For such a rich parameter set with no structured output documentation, the description should do more to guide effective usage.
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 description mentions 'customizable parameters for result count, content type, and domain filtering,' which adds some context beyond the schema. However, with 100% schema description coverage, the schema already comprehensively documents all 15 parameters. The description provides only high-level categorization without adding meaningful semantic details about specific parameters or their interactions.
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 clearly states the tool performs web search using Tavily's AI engine and returns results, which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'search' or 'tavily-crawl', only mentioning it's 'ideal for gathering current information, news, and detailed web content analysis' without sibling comparison.
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 provides implied usage guidance by stating the tool is 'ideal for gathering current information, news, and detailed web content analysis,' which suggests appropriate contexts. However, it doesn't explicitly state when to use this tool versus the sibling tools like 'search', 'tavily-crawl', 'tavily-extract', or 'tavily-map', nor does it provide any exclusion criteria or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tool set has significant overlap and ambiguity, particularly between 'search' and 'tavily-search', which appear to be identical based on their descriptions. Additionally, 'tavily-crawl', 'tavily-extract', and 'tavily-map' all involve web content processing, making it unclear when to use one over the others without more specific distinctions in their purposes.
The naming is mixed: four tools use a consistent 'tavily-' prefix with descriptive suffixes (crawl, extract, map, search), but one tool is named simply 'search' without the prefix. This deviation breaks full consistency, though the overall pattern is still readable and not chaotic.
With 5 tools, the count is reasonable for a web search and content analysis server, aligning well with typical scopes. It's slightly under the ideal range but not overly thin, as each tool (despite overlaps) covers different aspects of web interaction.
The server covers core web operations like search, crawling, extraction, and mapping, but there are notable gaps. For example, there's no tool for updating or managing saved searches, filtering results beyond basic parameters, or handling authentication for restricted content, which could limit agent workflows in more advanced scenarios.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
One API key for 6 AI models. Pay-per-use. MCP protocol support with web search.
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Related MCP Servers
- AlicenseBqualityDmaintenanceA local MCP server that exposes Tavily search as a tool and rotates across multiple API keys for reliability.1MIT
- AlicenseNot gradedqualityDmaintenanceA proxy MCP server for Tavily search and extract APIs with support for multiple API keys, random rotation, and bearer token authentication.MIT
- AlicenseAqualityAmaintenanceA proxy MCP server that connects to Tavily's official Streamable HTTP MCP, managing multiple API keys and automatically switching to the next one when the current key's quota is exhausted.5121MIT
- AlicenseNot gradedqualityBmaintenanceA multi-provider MCP server that unifies Tavily and Brave Search APIs, with key management, admin UI, and flexible search strategies.1522MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yatotm/tavily-mcp-loadbalancer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server