The Tavily MCP connector routes your AI agent's tool calls to Tavily's own MCP server through Scalekit. Each user signs in to Tavily once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 5 tools.
- Tools
- 5
- What they doRead · write · destructive
- 5 · 0 · 05 read0 write0 destructive
- Users sign in with
- OAuth
- OAuth app
- Scalekit's or your own
What you can do
- Search the web: find current information and return snippets with their source URLs
- Extract page content: pull the content of one or more URLs as markdown or plain text
- Crawl and map sites: crawl a website from a starting URL and map its URL structure
- Research a topic: run multi-source research on a question or topic
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Tavily MCP connection
In AgentKit > Connections, create a Tavily MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Tavily MCP server, so you don't need to register an OAuth app.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'tavilymcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Tavily MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'tavilymcp_tavily_crawl',toolInput: { url: 'https://example.com/url' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "tavilymcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Tavily MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"url":"https://example.com/url"},tool_name="tavilymcp_tavily_crawl",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooltavilymcp_tavily_crawlCrawl a website from a starting URL and extract page content with configurable depth and breadth.Read-onlyTavily Crawl
Crawl a website from a starting URL and extract page content with configurable depth and breadth.
Inputs
urlstringrequired- The root URL to begin the crawl
allow_externalboolean- Whether to return external links in the final responsedefault
true chunks_per_sourcestring- Chunks per source; requires instructions
extract_depthstring- Advanced extraction retrieves more data, including tables and embedded content, with higher success but may increase latencyone of
basicadvanceddefaultbasic formatstring- The format of the extracted web page content. markdown returns content in markdown format. text returns plain text and may increase latency.one of
markdowntextdefaultmarkdown include_faviconboolean- Whether to include the favicon URL for each resultdefault
false include_usagestring- Include credit usage
instructionsstring- Natural language instructions for the crawler. Instructions specify which types of pages the crawler should return.default
limitinteger- Total number of links the crawler will process before stoppingdefault
50 max_breadthinteger- Max number of links to follow per level of the tree (i.e., per page)default
20 max_depthinteger- Max depth of the crawl. Defines how far from the base URL the crawler can explore.default
1 select_domainsarray- Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$)
select_pathsarray- Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)
tavilymcp_tavily_extractExtract raw content from one or more URLs in markdown or plain text format.Read-onlyTavily Extract
Extract raw content from one or more URLs in markdown or plain text format.
Inputs
urlsarrayrequired- List of URLs to extract content from. Prefer URLs from search results; guessed page URLs often fail.
extract_depthstring- Use 'advanced' for LinkedIn, protected sites, or tables/embedded contentone of
basicadvanceddefaultbasic formatstring- Output formatone of
markdowntextdefaultmarkdown include_faviconboolean- Include favicon URLsdefault
false include_imagesboolean- Include images from pagesdefault
false include_usagestring- Include credit usage
querystring- Query to rerank content chunks by relevance. Set it to get only the relevant passages of a long article or PDF. Leave it empty for tables, lists, data files and API responses, which it can cut short; read those whole, or request a narrower URL.default
tavilymcp_tavily_mapMap a website's URL structure starting from a base URL.Read-onlyTavily Map
Map a website's URL structure starting from a base URL.
Inputs
urlstringrequired- The root URL to begin the mapping
allow_externalboolean- Whether to return external links in the final responsedefault
true include_usagestring- Include credit usage
instructionsstring- Natural language instructions for the crawlerdefault
limitinteger- Total number of links the crawler will process before stoppingdefault
50 max_breadthinteger- Max number of links to follow per level of the tree (i.e., per page)default
20 max_depthinteger- Max depth of the mapping. Defines how far from the base URL the crawler can exploredefault
1 select_domainsarray- Regex patterns to restrict crawling to specific domains or subdomains (e.g., ^docs\.example\.com$)
select_pathsarray- Regex patterns to select only URLs with specific path patterns (e.g., /docs/.*, /api/v1.*)
tavilymcp_tavily_researchRun comprehensive multi-source research on a topic or question.Read-onlyTavily Research
Run comprehensive multi-source research on a topic or question.
Inputs
inputstringrequired- A comprehensive description of the research task
filesstring- Base64 .txt/.md/.json attachments; up to 80000 words combined
modelstring- Defines the degree of depth of the research. 'mini' is good for narrow tasks with few subtopics. 'pro' is good for broad tasks with many subtopicsone of
miniproautodefaultauto
tavilymcp_tavily_searchSearch the web for current information and return snippets with source URLs.Read-onlyTavily Search
Search the web for current information and return snippets with source URLs.
Inputs
querystringrequired- Search query. Keep it short and specific, in the words the page itself would use; one idea per query.
countrystring- Boost search results from a specific country. Must be a full country name (e.g., 'United States', 'Japan', 'Germany'). ISO country codes (e.g., 'us', 'jp') are not supported. Available only if topic is general. See https://docs.tavily.com/documentation/api-reference/search for the full list of supported countries.
end_datestring- Will return all results before the specified end date. Required to be written in the format YYYY-MM-DD. Filters by publish date, not by when events happened; leave it empty when looking for facts about past events.
exact_matchstring- Only return results containing the exact phrase(s) in quotes in your query
exclude_domainsstring- List of domains to specifically exclude, if the user asks to exclude a domain set this to the domain of the site
filter_by_published_datestring- Filter results to the requested date window and exclude results with no detected publication date
include_domainsstring- 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. Use full domains such as 'en.wikipedia.org' or 'sec.gov', not suffixes such as 'edu'. This is a hard filter: if results come back empty or thin, search again without it.
include_faviconstring- Whether to include the favicon URL for each result
include_image_descriptionsstring- Include a list of query-related images and their descriptions in the response
include_imagesstring- Include a list of query-related images in the response
include_published_datestring- Include detected publication dates (beta)
include_raw_contentstring- Include the cleaned and parsed HTML content of each search result. Whole pages can make the response too large to read; to read one page, use tavily_extract with a query instead.
max_resultsstring- The maximum number of search results to return. Ask for 10 when looking for a specific fact, page or entity.
search_depthstring- The depth of the search. 'basic' for generic results, 'advanced' for more thorough search, 'fast' for optimized low latency with high relevance, 'ultra-fast' for prioritizing latency above all else. Use 'advanced' when looking for a specific fact, page or entity, or when 'basic' did not find it.
start_datestring- Will return all results after the specified start date. Required to be written in the format YYYY-MM-DD. Filters by publish date, not by when events happened; leave it empty when looking for facts about past events.
time_rangestring- The time range back from the current date to include in the search results. Filters by when a page was published, not by when the events it describes happened.
topicstring- Search category. Use 'general' for almost all searches, including current events and requests that combine news with other information. Use 'news' only when the user explicitly asks for news, headlines, or news coverage.
No tools match.