From fce733d5bab390788211a7b38884ea85d21fab21 Mon Sep 17 00:00:00 2001 From: Gnanaguru Sattanathan <32893938+avoguru@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:13:11 -0700 Subject: [PATCH 1/8] feat(integrations): add Partner badge and Tavily as first partner MCP - Add `isPartner` flag to ToolkitWithDocsLink so toolkits can render a Partner badge alongside BYOC/Pro on catalog cards (Handshake icon, pink). - Treat Generic icon from @arcadeai/design-system as "no match" in getToolkitIconWithFallback so toolkits with publicIconUrl render their own SVG instead of the placeholder. - New PARTNER_TOOLKITS data source for partner remote MCP listings. Tavily ships first as type "verified" with isPartner=true and a templated mcpUrl. - Hand-crafted Tavily detail page at /search/tavily with proper markdown heading, MCP Server URL block, and a 4-step "Add to your Arcade project" walkthrough. - Add `.npmrc` so contributors can install @arcadeai/* from public npm without needing GitHub Packages auth. Made-with: Cursor --- .npmrc | 1 + app/_data/partner-toolkits.ts | 42 ++++++++++ app/_lib/toolkit-slug.ts | 14 ++-- .../integrations/components/tool-card.tsx | 16 +++- .../components/toolkits-client.tsx | 20 +++-- .../integrations/components/toolkits.tsx | 12 ++- .../resources/integrations/search/_meta.tsx | 8 ++ .../integrations/search/tavily/page.mdx | 80 +++++++++++++++++++ public/images/partners/tavily.svg | 1 + 9 files changed, 175 insertions(+), 19 deletions(-) create mode 100644 .npmrc create mode 100644 app/_data/partner-toolkits.ts create mode 100644 app/en/resources/integrations/search/tavily/page.mdx create mode 100644 public/images/partners/tavily.svg diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..c3bb152cd --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +@arcadeai:registry=https://registry.npmjs.org/ diff --git a/app/_data/partner-toolkits.ts b/app/_data/partner-toolkits.ts new file mode 100644 index 000000000..e2779aac9 --- /dev/null +++ b/app/_data/partner-toolkits.ts @@ -0,0 +1,42 @@ +import type { Toolkit } from "@arcadeai/design-system"; + +/** + * Docs-local partner toolkits (remote MCP Servers offered by our partners). + * + * These entries are merged into the live integrations catalog alongside the + * TOOLKITS exported from @arcadeai/design-system. Each partner toolkit uses + * a standard ToolkitType (typically "verified") plus an `isPartner: true` + * flag that renders a Partner badge next to BYOC/Pro on catalog cards. + * + * Once DS adds an explicit `isPartner` field to its Toolkit shape, migrate + * these entries into the DS TOOLKITS array and delete this file. + */ + +export type PartnerToolkit = Toolkit & { + isPartner: true; + /** + * Remote MCP Server URL displayed on the partner detail page. Use a + * placeholder like `YOUR_API_KEY` for any per-user secrets so the URL can + * be copied without leaking credentials. Updating this field updates the + * detail page automatically. + */ + mcpUrl: string; +}; + +export const PARTNER_TOOLKITS: PartnerToolkit[] = [ + { + id: "Tavily", + label: "Tavily", + category: "search", + publicIconUrl: "/images/partners/tavily.svg", + isBYOC: true, + isPro: false, + isPartner: true, + type: "verified", + mcpUrl: "https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_API_KEY", + docsLink: "https://docs.arcade.dev/en/resources/integrations/search/tavily", + relativeDocsLink: "/en/resources/integrations/search/tavily", + isComingSoon: false, + isHidden: false, + }, +]; diff --git a/app/_lib/toolkit-slug.ts b/app/_lib/toolkit-slug.ts index a9bab4c70..5ff34e21d 100644 --- a/app/_lib/toolkit-slug.ts +++ b/app/_lib/toolkit-slug.ts @@ -9,12 +9,16 @@ export type ToolkitSlugSource = { }; /** - * Toolkit with an optional docsLink property. - * The design-system `Toolkit` type doesn't include `docsLink` in its - * type definitions, but some entries carry it at runtime. This type - * makes the property explicit so both server and client code can share it. + * Toolkit with optional `docsLink` and `isPartner` properties. + * The design-system `Toolkit` type doesn't include either field, but some + * docs-local entries carry them at runtime (e.g. partner toolkits that + * render a Partner badge on cards). This type makes the properties explicit + * so both server and client code can share it. */ -export type ToolkitWithDocsLink = Toolkit & { docsLink?: string | null }; +export type ToolkitWithDocsLink = Toolkit & { + docsLink?: string | null; + isPartner?: boolean; +}; /** * Strip all non-alphanumeric characters and lowercase. diff --git a/app/en/resources/integrations/components/tool-card.tsx b/app/en/resources/integrations/components/tool-card.tsx index 14ff067de..be92ac880 100644 --- a/app/en/resources/integrations/components/tool-card.tsx +++ b/app/en/resources/integrations/components/tool-card.tsx @@ -9,7 +9,7 @@ import { type ToolkitType, } from "@arcadeai/design-system"; import { cn } from "@arcadeai/design-system/lib/utils"; -import { Package } from "lucide-react"; +import { Handshake, Package } from "lucide-react"; import Link from "next/link"; import posthog from "posthog-js"; import type React from "react"; @@ -26,6 +26,7 @@ type ToolCardProps = { isComingSoon?: boolean; isByoc?: boolean; isPro?: boolean; + isPartner?: boolean; }; export const ToolCard: React.FC = ({ @@ -37,6 +38,7 @@ export const ToolCard: React.FC = ({ isComingSoon = false, isByoc = false, isPro = false, + isPartner = false, }) => { const [isModalOpen, setIsModalOpen] = useState(false); const { @@ -45,7 +47,7 @@ export const ToolCard: React.FC = ({ icon: IconComponent, color, } = TOOL_CARD_TYPE_CONFIG[type]; - const showHeaderBadges = isByoc || isPro || isComingSoon; + const showHeaderBadges = isByoc || isPro || isPartner || isComingSoon; const trackToolCardClick = () => { posthog.capture("Tool card clicked", { @@ -55,6 +57,7 @@ export const ToolCard: React.FC = ({ is_coming_soon: isComingSoon, is_byoc: isByoc, is_pro: isPro, + is_partner: isPartner, }); }; @@ -131,6 +134,15 @@ export const ToolCard: React.FC = ({ )} {isByoc && } {isPro && } + {isPartner && ( + + + Partner + + )} )} diff --git a/app/en/resources/integrations/components/toolkits-client.tsx b/app/en/resources/integrations/components/toolkits-client.tsx index 8f478fb17..c0ada8f28 100644 --- a/app/en/resources/integrations/components/toolkits-client.tsx +++ b/app/en/resources/integrations/components/toolkits-client.tsx @@ -5,6 +5,7 @@ import { getToolkitIcon, Separator, } from "@arcadeai/design-system"; +import { Generic as GenericIcon } from "@arcadeai/design-system/components/ui/atoms/icons"; import { cn } from "@arcadeai/design-system/lib/utils"; import { Plus, Search } from "lucide-react"; import Link from "next/link"; @@ -36,25 +37,27 @@ function mapToToolkitPage( /** * Get toolkit icon with fallback for API toolkits. - * If "GithubApi" has no icon, falls back to "Github" icon. + * + * `getToolkitIcon` from @arcadeai/design-system returns the Generic placeholder + * (not null) when a toolkit id isn't in its icon map. For toolkits that ship + * their own `publicIconUrl` (e.g. partner toolkits not yet in the DS), + * we treat Generic as "no match" so the caller can fall through to `iconUrl`. */ function getToolkitIconWithFallback( toolkitId: string ): React.ComponentType> | null { const apiSuffix = "api"; - // Try direct match first - const directIcon = getToolkitIcon(toolkitId); - if (directIcon) { - return directIcon; + const resolved = getToolkitIcon(toolkitId); + if (resolved && resolved !== GenericIcon) { + return resolved; } - // For API toolkits, try the base provider ID const normalizedId = toolkitId.toLowerCase(); if (normalizedId.endsWith(apiSuffix)) { - const baseProviderId = toolkitId.slice(0, -apiSuffix.length); // Remove "Api" suffix + const baseProviderId = toolkitId.slice(0, -apiSuffix.length); const baseIcon = getToolkitIcon(baseProviderId); - if (baseIcon) { + if (baseIcon && baseIcon !== GenericIcon) { return baseIcon; } } @@ -175,6 +178,7 @@ export default function ToolkitsClient({ toolkits }: ToolkitsClientProps) { iconUrl={iconUrl} isByoc={toolkit.isBYOC} isComingSoon={toolkit.isComingSoon} + isPartner={toolkit.isPartner} isPro={toolkit.isPro} key={toolkit.id} link={mapToToolkitPage( diff --git a/app/en/resources/integrations/components/toolkits.tsx b/app/en/resources/integrations/components/toolkits.tsx index 03e46e613..e76f680d2 100644 --- a/app/en/resources/integrations/components/toolkits.tsx +++ b/app/en/resources/integrations/components/toolkits.tsx @@ -1,10 +1,12 @@ import { TOOLKITS, type Toolkit } from "@arcadeai/design-system"; +import { PARTNER_TOOLKITS } from "@/app/_data/partner-toolkits"; import { readToolkitData } from "@/app/_lib/toolkit-data"; -import { normalizeToolkitId } from "@/app/_lib/toolkit-slug"; +import { + normalizeToolkitId, + type ToolkitWithDocsLink, +} from "@/app/_lib/toolkit-slug"; import ToolkitsClient from "./toolkits-client"; -type ToolkitWithDocsLink = Toolkit & { docsLink?: string | null }; - const getToolkitDocsLink = (toolkit: Toolkit): string | undefined => { if ("docsLink" in toolkit) { const value = (toolkit as ToolkitWithDocsLink).docsLink; @@ -33,13 +35,15 @@ const getToolkitsWithDocsLinks = async (): Promise => { }) ); - return TOOLKITS.map((toolkit) => { + const dsToolkits: ToolkitWithDocsLink[] = TOOLKITS.map((toolkit) => { const existing = getToolkitDocsLink(toolkit); const docsLink = existing ?? docsLinkById.get(normalizeToolkitId(toolkit.id)); return docsLink ? { ...toolkit, docsLink } : toolkit; }); + + return [...dsToolkits, ...PARTNER_TOOLKITS]; }; export default async function Toolkits() { diff --git a/app/en/resources/integrations/search/_meta.tsx b/app/en/resources/integrations/search/_meta.tsx index 1936cef66..effa5b88f 100644 --- a/app/en/resources/integrations/search/_meta.tsx +++ b/app/en/resources/integrations/search/_meta.tsx @@ -53,6 +53,14 @@ const meta: MetaRecord = { title: "Exa API", href: "/en/resources/integrations/search/exa-api", }, + "-- Partner": { + type: "separator", + title: "Partner", + }, + tavily: { + title: "Tavily", + href: "/en/resources/integrations/search/tavily", + }, }; export default meta; diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx new file mode 100644 index 000000000..1420a3cc8 --- /dev/null +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -0,0 +1,80 @@ +--- +title: "Tavily" +description: "Enable agents to search the web in real time and extract structured content. Available directly in Arcade as a Partner MCP Server." +--- + +import { Callout, Steps } from "nextra/components"; + +# Tavily + +Tavily is a remote MCP Server offered by [Tavily](https://tavily.com), an Arcade Partner. Add it to an [MCP Gateway](/guides/mcp-gateways/add-remote-servers) for central governance, authorization, and access control alongside Arcade's native servers. + +## MCP Server URL + +Paste the following URL into Arcade: **Servers → Add Server → Remote MCP**. Replace `YOUR_API_KEY` with the key you generate at [tavily.com](https://tavily.com). + +```text +https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_API_KEY +``` + +## What you can do + +Once Tavily is registered in your Arcade project, Arcade discovers these tools automatically: + +| Tool | What it does | +| --- | --- | +| `Tavily.Search` | Real-time web search with agent-optimized ranking. | +| `Tavily.Extract` | Extract structured content from specific URLs. | +| `Tavily.Crawl` | Crawl a site and return content across pages. | +| `Tavily.Map` | Map the structure of a site or domain. | +| `Tavily.Research` | Multi-source deep research across the web. | +| `Tavily.Skill` | High-level research skills built on the tools above. | + +Compose these tools with Google Docs, Slack, Salesforce, GitHub, or any of Arcade's native servers in a single MCP Gateway, so an agent can research, draft, and act in one flow, with full authorization and audit from Arcade's runtime. + +## Add Tavily to your Arcade project + + + +### Get your Tavily API key + +Go to [tavily.com](https://tavily.com) → **Overview** → **Generate MCP Link**. Copy the generated URL (it contains your API key). + +### Add Tavily as a Remote MCP Server in Arcade + +Open the [Arcade Dashboard](https://api.arcade.dev/dashboard) → **Servers** → **Add Server** → **Remote MCP**. Paste the URL from the [MCP Server URL](#mcp-server-url) section above (with your API key in place of `YOUR_API_KEY`) and save. + + + See the full walkthrough in Add remote MCP servers for advanced settings like connection retries, OAuth, and custom headers. + + +### Verify Tavily tools + +Arcade discovers six Tavily tools: `Tavily.Search`, `Tavily.Extract`, `Tavily.Crawl`, `Tavily.Map`, `Tavily.Research`, and `Tavily.Skill`. They appear in the Playground for this project and in the MCP Gateway tool picker. + +### Create an MCP Gateway + +Go to **MCP Gateways** → **Create Gateway**. Select Tavily plus any other MCP Servers you want to compose with (for example, Google Docs and Slack). Set the auth mode to **Arcade Auth** so users authenticate with their Arcade account. Copy the gateway URL. This is what your agent connects to. + + + +## Call Tavily tools from your agent + +Once your gateway is created, any MCP client that supports Streamable HTTP can use it: Cursor, Claude Desktop, VS Code, or a custom application built with the Vercel AI SDK, LangChain, or OpenAI Agents. + +```text +https://api.arcade.dev/mcp/ +``` + +Authorization, credential handling, and audit logging are handled by Arcade at runtime. + +## Example + +See the open-source [Financial Intelligence Agent](https://github.com/arcadeai-labs/financial-intelligence), a web-based research assistant that composes Tavily, Google Docs, and Slack through a single MCP Gateway in under 200 lines of code. + +## Resources + +- [Tavily documentation](https://docs.tavily.com) +- [Add remote MCP servers to Arcade](/guides/mcp-gateways/add-remote-servers) +- [Create an MCP Gateway](/guides/mcp-gateways/create-via-dashboard) +- [Connect to MCP clients](/get-started/mcp-clients) diff --git a/public/images/partners/tavily.svg b/public/images/partners/tavily.svg new file mode 100644 index 000000000..458b2143a --- /dev/null +++ b/public/images/partners/tavily.svg @@ -0,0 +1 @@ +Tavily \ No newline at end of file From 866a4f044e14c3630a496f5bcf436cd041788a86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 25 Apr 2026 00:45:10 +0000 Subject: [PATCH 2/8] =?UTF-8?q?=F0=9F=A4=96=20Regenerate=20LLMs.txt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/llms.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/public/llms.txt b/public/llms.txt index 7653c5098..fbb9d7517 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -143,6 +143,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [Setup Arcade with LangChain](https://docs.arcade.dev/en/get-started/agent-frameworks/langchain/use-arcade-with-langchain-ts): This documentation page provides a comprehensive guide on integrating Arcade tools within LangChain agents, enabling users to build and manage AI agents effectively. It covers essential concepts, prerequisites, and step-by-step instructions for transforming Arcade tools into LangChain-compatible tools, configuring agents - [Setup Arcade with OpenAI Agents (TypeScript)](https://docs.arcade.dev/en/get-started/agent-frameworks/openai-agents/setup-typescript): This documentation page provides a comprehensive guide for setting up and building AI agents using the OpenAI Agents SDK with Arcade tools in TypeScript. It covers the integration process, including converting Arcade tools to the required format, handling authorization, and executing agent functions. - [Setup Arcade with OpenAI Agents SDK](https://docs.arcade.dev/en/get-started/agent-frameworks/openai-agents/setup-python): This documentation page guides users on how to set up and integrate Arcade tools within OpenAI Agents applications using the OpenAI Agents SDK. It covers the necessary prerequisites, provides step-by-step instructions for creating a CLI agent, and explains how to implement tool authorization +- [Tavily](https://docs.arcade.dev/en/resources/integrations/search/tavily): Documentation page - [The Arcade Registry](https://docs.arcade.dev/en/resources/registry-early-access): The Arcade Registry documentation provides an overview of a platform where developers can share and monetize their tools for agentic applications, similar to HuggingFace or Pypi. It explains how the registry integrates runtime metrics and user feedback to enhance tool development and usage - [Tool error handling](https://docs.arcade.dev/en/guides/tool-calling/error-handling): This documentation page provides guidance on effectively handling errors when using tools with Arcade's Tool Development Kit (TDK). It explains the error handling philosophy, outlines best practices, and offers code examples for managing output errors in various programming languages. Users will learn how - [Tools](https://docs.arcade.dev/en/resources/tools): This documentation page provides an overview of Arcade's ecosystem for AI tools, enabling users to explore a catalog of pre-built integrations, create custom tools, and contribute their own tools to the community. It outlines the benefits of using Arcade tools, such as built From ac1650f0ad259a21717ac585346511d9f9f319f0 Mon Sep 17 00:00:00 2001 From: Gnanaguru Sattanathan <32893938+avoguru@users.noreply.github.com> Date: Fri, 24 Apr 2026 17:52:49 -0700 Subject: [PATCH 3/8] fix(integrations): make useToolkitFilters generic to preserve docs-local fields Vercel build was failing TypeScript compilation because useToolkitFilters typed its parameter as `Toolkit[]` from @arcadeai/design-system, narrowing the array element type and discarding the `isPartner` and `docsLink` fields that ToolkitsClient needs. Make the hook (and its compareToolkits helper) generic over `T extends Toolkit` so caller-side fields flow through. No runtime change. Made-with: Cursor --- .../integrations/components/use-toolkit-filters.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/en/resources/integrations/components/use-toolkit-filters.ts b/app/en/resources/integrations/components/use-toolkit-filters.ts index e26a5e71e..2d43686ff 100644 --- a/app/en/resources/integrations/components/use-toolkit-filters.ts +++ b/app/en/resources/integrations/components/use-toolkit-filters.ts @@ -25,7 +25,7 @@ const TYPE_LABELS: Record = { const getTypePriority = (type: string): number => TYPE_PRIORITY[type as ToolkitType] ?? DEFAULT_PRIORITY; -const compareToolkits = (a: Toolkit, b: Toolkit): number => { +const compareToolkits = (a: T, b: T): number => { // First prioritize available toolkits over coming soon toolkits if (a.isComingSoon !== b.isComingSoon) { return a.isComingSoon ? 1 : -1; @@ -80,7 +80,7 @@ export const useFilterStore = create((set) => ({ }), })); -export function useToolkitFilters(toolkits: Toolkit[]) { +export function useToolkitFilters(toolkits: T[]) { const { selectedCategory, selectedType, @@ -91,7 +91,7 @@ export function useToolkitFilters(toolkits: Toolkit[]) { const debouncedSearchQuery = useDebounce(searchQuery, DEBOUNCE_TIME); - const filteredToolkits = useMemo(() => { + const filteredToolkits = useMemo(() => { const searchLower = debouncedSearchQuery.toLowerCase(); return toolkits From 283697f7e19c4d8d88e52f0f3f3ef6a34e4d482e Mon Sep 17 00:00:00 2001 From: emmithood Date: Fri, 24 Apr 2026 22:08:07 -0700 Subject: [PATCH 4/8] Update app/en/resources/integrations/search/tavily/page.mdx Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- app/en/resources/integrations/search/tavily/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index 1420a3cc8..ecaa99ea6 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -7,7 +7,7 @@ import { Callout, Steps } from "nextra/components"; # Tavily -Tavily is a remote MCP Server offered by [Tavily](https://tavily.com), an Arcade Partner. Add it to an [MCP Gateway](/guides/mcp-gateways/add-remote-servers) for central governance, authorization, and access control alongside Arcade's native servers. +This integration is a remote MCP Server offered by [Tavily](https://tavily.com), an Arcade Partner. Add it to an [MCP Gateway](/guides/mcp-gateways/add-remote-servers) for central governance, authorization, and access control alongside Arcade's native servers. ## MCP Server URL From 780abb9c8a8aff7d8a91f94c84b31c3a1085b8af Mon Sep 17 00:00:00 2001 From: emmithood Date: Fri, 24 Apr 2026 22:10:24 -0700 Subject: [PATCH 5/8] Update app/en/resources/integrations/search/tavily/page.mdx Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- app/en/resources/integrations/search/tavily/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index ecaa99ea6..f044fbffa 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -66,7 +66,7 @@ Once your gateway is created, any MCP client that supports Streamable HTTP can u https://api.arcade.dev/mcp/ ``` -Authorization, credential handling, and audit logging are handled by Arcade at runtime. +Arcade handles authorization, credential handling, and audit logging at runtime. ## Example From 7fdd8564f868558429023c2392967ea2e5e4203c Mon Sep 17 00:00:00 2001 From: emmithood Date: Fri, 24 Apr 2026 22:10:37 -0700 Subject: [PATCH 6/8] Update app/en/resources/integrations/search/tavily/page.mdx Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- app/en/resources/integrations/search/tavily/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index f044fbffa..3c1ac7dda 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -60,7 +60,7 @@ Go to **MCP Gateways** → **Create Gateway**. Select Tavily plus any other MCP ## Call Tavily tools from your agent -Once your gateway is created, any MCP client that supports Streamable HTTP can use it: Cursor, Claude Desktop, VS Code, or a custom application built with the Vercel AI SDK, LangChain, or OpenAI Agents. +Once you create your gateway, any MCP client that supports Streamable HTTP can use it: Cursor, Claude Desktop, VS Code, or a custom application built with the Vercel AI SDK, LangChain, or OpenAI Agents. ```text https://api.arcade.dev/mcp/ From e0ce2512187b85e263afc680bf6ecf8fae308352 Mon Sep 17 00:00:00 2001 From: emmithood Date: Fri, 24 Apr 2026 22:10:43 -0700 Subject: [PATCH 7/8] Update app/en/resources/integrations/search/tavily/page.mdx Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- app/en/resources/integrations/search/tavily/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index 3c1ac7dda..a7dde7909 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -19,7 +19,7 @@ https://mcp.tavily.com/mcp/?tavilyApiKey=YOUR_API_KEY ## What you can do -Once Tavily is registered in your Arcade project, Arcade discovers these tools automatically: +Once you register Tavily in your Arcade project, Arcade discovers these tools automatically: | Tool | What it does | | --- | --- | From d54f2eeb7653ab7b500ac218ed73b11a86d05efd Mon Sep 17 00:00:00 2001 From: Gnanaguru Sattanathan <32893938+avoguru@users.noreply.github.com> Date: Mon, 27 Apr 2026 10:27:28 -0500 Subject: [PATCH 8/8] fix(tavily): remove Tavily.Skill, not yet at production quality Tavily's engineering team flagged Tavily.Skill as an experimental tool not ready for the production listing. Drops it from the tools table and adjusts the tool count in the Verify step. Made-with: Cursor --- app/en/resources/integrations/search/tavily/page.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/en/resources/integrations/search/tavily/page.mdx b/app/en/resources/integrations/search/tavily/page.mdx index 1420a3cc8..50b1c8c2e 100644 --- a/app/en/resources/integrations/search/tavily/page.mdx +++ b/app/en/resources/integrations/search/tavily/page.mdx @@ -28,7 +28,6 @@ Once Tavily is registered in your Arcade project, Arcade discovers these tools a | `Tavily.Crawl` | Crawl a site and return content across pages. | | `Tavily.Map` | Map the structure of a site or domain. | | `Tavily.Research` | Multi-source deep research across the web. | -| `Tavily.Skill` | High-level research skills built on the tools above. | Compose these tools with Google Docs, Slack, Salesforce, GitHub, or any of Arcade's native servers in a single MCP Gateway, so an agent can research, draft, and act in one flow, with full authorization and audit from Arcade's runtime. @@ -50,7 +49,7 @@ Open the [Arcade Dashboard](https://api.arcade.dev/dashboard) → **Servers** ### Verify Tavily tools -Arcade discovers six Tavily tools: `Tavily.Search`, `Tavily.Extract`, `Tavily.Crawl`, `Tavily.Map`, `Tavily.Research`, and `Tavily.Skill`. They appear in the Playground for this project and in the MCP Gateway tool picker. +Arcade discovers five Tavily tools: `Tavily.Search`, `Tavily.Extract`, `Tavily.Crawl`, `Tavily.Map`, and `Tavily.Research`. They appear in the Playground for this project and in the MCP Gateway tool picker. ### Create an MCP Gateway