From 0bca8ae1a53bfb9c4575ff3f536f9dadab3fd795 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 8 Jan 2026 00:36:17 +0000 Subject: [PATCH 1/6] add overview pages to deeply nested subsections --- app/en/guides/create-tools/_meta.tsx | 3 ++ .../error-handling/SubpageList.tsx | 23 ++++++++++++ .../create-tools/error-handling/_meta.tsx | 7 ++++ .../create-tools/error-handling/page.mdx | 15 ++++++++ .../evaluate-tools/SubpageList.tsx | 23 ++++++++++++ .../create-tools/evaluate-tools/_meta.tsx | 36 +++++-------------- .../create-tools/evaluate-tools/page.mdx | 13 +++++++ .../create-tools/tool-basics/SubpageList.tsx | 23 ++++++++++++ .../guides/create-tools/tool-basics/_meta.tsx | 9 +++-- .../guides/create-tools/tool-basics/page.mdx | 15 ++++++++ .../guides/tool-calling/custom-apps/_meta.tsx | 9 +++-- 11 files changed, 139 insertions(+), 37 deletions(-) create mode 100644 app/en/guides/create-tools/error-handling/SubpageList.tsx create mode 100644 app/en/guides/create-tools/error-handling/_meta.tsx create mode 100644 app/en/guides/create-tools/error-handling/page.mdx create mode 100644 app/en/guides/create-tools/evaluate-tools/SubpageList.tsx create mode 100644 app/en/guides/create-tools/evaluate-tools/page.mdx create mode 100644 app/en/guides/create-tools/tool-basics/SubpageList.tsx create mode 100644 app/en/guides/create-tools/tool-basics/page.mdx diff --git a/app/en/guides/create-tools/_meta.tsx b/app/en/guides/create-tools/_meta.tsx index 383a2ed08..deec6cc3a 100644 --- a/app/en/guides/create-tools/_meta.tsx +++ b/app/en/guides/create-tools/_meta.tsx @@ -3,9 +3,11 @@ import type { MetaRecord } from "nextra"; export const meta: MetaRecord = { "tool-basics": { title: "Build a tool", + href: "/guides/create-tools/tool-basics", }, "evaluate-tools": { title: "Evaluate tools", + href: "/guides/create-tools/evaluate-tools", }, improve: { title: "Improve an existing toolkit", @@ -15,6 +17,7 @@ export const meta: MetaRecord = { }, "error-handling": { title: "Handle errors", + href: "/guides/create-tools/error-handling", }, "migrate-toolkits": { title: "Migrate from toolkits to MCP servers", diff --git a/app/en/guides/create-tools/error-handling/SubpageList.tsx b/app/en/guides/create-tools/error-handling/SubpageList.tsx new file mode 100644 index 000000000..8f84dce9f --- /dev/null +++ b/app/en/guides/create-tools/error-handling/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( + + ); +} diff --git a/app/en/guides/create-tools/error-handling/_meta.tsx b/app/en/guides/create-tools/error-handling/_meta.tsx new file mode 100644 index 000000000..0640ca1d6 --- /dev/null +++ b/app/en/guides/create-tools/error-handling/_meta.tsx @@ -0,0 +1,7 @@ +export default { + index: { + title: "Overview", + }, + "retry-tools": "Retry Tools with Improved Prompt", + "useful-tool-errors": "Provide Useful Tool Errors", +}; diff --git a/app/en/guides/create-tools/error-handling/page.mdx b/app/en/guides/create-tools/error-handling/page.mdx new file mode 100644 index 000000000..047ca8598 --- /dev/null +++ b/app/en/guides/create-tools/error-handling/page.mdx @@ -0,0 +1,15 @@ +--- +title: "Handle Errors" +description: "Learn how to implement robust error handling in your tools for better user experience" +--- + +import { SubpageList } from '../../../../_components/SubpageList'; +import meta from './_meta'; + +# Handle Errors + +Learn how to implement robust error handling that improves user experience and enables smart retry behavior. Apply these patterns as you develop tools to make them more resilient and user-friendly in production. + +Robust error handling is crucial for building reliable tools that provide great user experiences. Arcade provides a comprehensive error handling system that helps you manage different types of errors gracefully. + + \ No newline at end of file diff --git a/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx b/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx new file mode 100644 index 000000000..3d1b51994 --- /dev/null +++ b/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( + + ); +} diff --git a/app/en/guides/create-tools/evaluate-tools/_meta.tsx b/app/en/guides/create-tools/evaluate-tools/_meta.tsx index 2bb89e837..da3bb90b7 100644 --- a/app/en/guides/create-tools/evaluate-tools/_meta.tsx +++ b/app/en/guides/create-tools/evaluate-tools/_meta.tsx @@ -1,28 +1,10 @@ -import type { MetaRecord } from "nextra"; - -const meta: MetaRecord = { - "*": { - theme: { - breadcrumb: true, - toc: true, - copyPage: true, - }, - }, - "why-evaluate": { - title: "Why evaluate tools?", - }, - "create-evaluation-suite": { - title: "Create an evaluation suite", - }, - "run-evaluations": { - title: "Run evaluations", - }, - "capture-mode": { - title: "Capture mode", - }, - "comparative-evaluations": { - title: "Comparative evaluations", - }, +export default { + index: { + title: "Overview", + }, + "why-evaluate": "Why evaluate tools?", + "create-evaluation-suite": "Create an evaluation suite", + "run-evaluations": "Run evaluations", + "capture-mode": "Capture mode", + "comparative-evaluations": "Comparative evaluations", }; - -export default meta; diff --git a/app/en/guides/create-tools/evaluate-tools/page.mdx b/app/en/guides/create-tools/evaluate-tools/page.mdx new file mode 100644 index 000000000..571e8c5e8 --- /dev/null +++ b/app/en/guides/create-tools/evaluate-tools/page.mdx @@ -0,0 +1,13 @@ +--- +title: "Evaluate Tools" +description: "Learn how to systematically test and improve your tools with Arcade's evaluation framework" +--- + +import { SubpageList } from '../../../../_components/SubpageList'; +import meta from './_meta'; + +# Evaluate Tools + +Learn how to systematically test and improve your tools to ensure they work reliably in production. Use these techniques after you've built your initial tools to validate their performance and guide iterative improvements. + + diff --git a/app/en/guides/create-tools/tool-basics/SubpageList.tsx b/app/en/guides/create-tools/tool-basics/SubpageList.tsx new file mode 100644 index 000000000..ae8dfd826 --- /dev/null +++ b/app/en/guides/create-tools/tool-basics/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( +
    + {subpages.map(([key, title]) => { + const linkText = typeof title === "string" ? title : title.title; + return ( +
  • + + {linkText} + +
  • + ); + })} +
+ ); +} diff --git a/app/en/guides/create-tools/tool-basics/_meta.tsx b/app/en/guides/create-tools/tool-basics/_meta.tsx index 315893266..5cee22f64 100644 --- a/app/en/guides/create-tools/tool-basics/_meta.tsx +++ b/app/en/guides/create-tools/tool-basics/_meta.tsx @@ -1,6 +1,7 @@ -import type { MetaRecord } from "nextra"; - -export const meta: MetaRecord = { +export default { + index: { + title: "Overview", + }, "compare-server-types": { title: "Compare MCP server types", }, @@ -23,5 +24,3 @@ export const meta: MetaRecord = { title: "Organize your MCP server and tools", }, }; - -export default meta; diff --git a/app/en/guides/create-tools/tool-basics/page.mdx b/app/en/guides/create-tools/tool-basics/page.mdx new file mode 100644 index 000000000..9249fdaad --- /dev/null +++ b/app/en/guides/create-tools/tool-basics/page.mdx @@ -0,0 +1,15 @@ +--- +title: "Build a Tool" +description: "Learn the fundamentals of building tools with Arcade's MCP Server framework" +--- + +import { SubpageList } from '../../../../_components/SubpageList'; +import meta from './_meta'; + +# Build a Tool + +Learn how to create custom tools that extend AI agents with powerful capabilities. Start here when you're ready to build your first tool or need to add new functionality to your existing MCP servers. + +Building tools with Arcade allows you to extend AI agents with custom capabilities. This section covers everything you need to know about creating powerful, reusable tools using the Model Context Protocol (MCP). + + diff --git a/app/en/guides/tool-calling/custom-apps/_meta.tsx b/app/en/guides/tool-calling/custom-apps/_meta.tsx index 46d699feb..9cca37ceb 100644 --- a/app/en/guides/tool-calling/custom-apps/_meta.tsx +++ b/app/en/guides/tool-calling/custom-apps/_meta.tsx @@ -1,6 +1,7 @@ -import type { MetaRecord } from "nextra"; - -export const meta: MetaRecord = { +export default { + index: { + title: "Overview", + }, "auth-tool-calling": { title: "Authorize tool calling", }, @@ -11,5 +12,3 @@ export const meta: MetaRecord = { title: "Get formatted tool definitions", }, }; - -export default meta; From 5a97dddb0db4673e66cadf677cf6da1687081cd0 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 8 Jan 2026 00:59:01 +0000 Subject: [PATCH 2/6] adds further overview pages --- app/en/guides/security/SubpageList.tsx | 23 ++++++ app/en/guides/security/_meta.tsx | 8 ++ app/en/guides/security/page.mdx | 15 ++++ .../tool-calling/custom-apps/SubpageList.tsx | 23 ++++++ .../guides/tool-calling/custom-apps/page.mdx | 15 ++++ .../mcp-clients/MCPClientGrid.tsx | 73 ++++++++++++++++++ .../tool-calling/mcp-clients/SubpageList.tsx | 23 ++++++ .../guides/tool-calling/mcp-clients/_meta.tsx | 3 + .../guides/tool-calling/mcp-clients/page.mdx | 12 +++ public/images/icons/claude.png | Bin 0 -> 41135 bytes public/images/icons/cursor.png | Bin 0 -> 25279 bytes public/images/icons/vscode.svg | 41 ++++++++++ 12 files changed, 236 insertions(+) create mode 100644 app/en/guides/security/SubpageList.tsx create mode 100644 app/en/guides/security/_meta.tsx create mode 100644 app/en/guides/security/page.mdx create mode 100644 app/en/guides/tool-calling/custom-apps/SubpageList.tsx create mode 100644 app/en/guides/tool-calling/custom-apps/page.mdx create mode 100644 app/en/guides/tool-calling/mcp-clients/MCPClientGrid.tsx create mode 100644 app/en/guides/tool-calling/mcp-clients/SubpageList.tsx create mode 100644 app/en/guides/tool-calling/mcp-clients/page.mdx create mode 100644 public/images/icons/claude.png create mode 100644 public/images/icons/cursor.png create mode 100644 public/images/icons/vscode.svg diff --git a/app/en/guides/security/SubpageList.tsx b/app/en/guides/security/SubpageList.tsx new file mode 100644 index 000000000..fe3bb3bd3 --- /dev/null +++ b/app/en/guides/security/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( +
    + {subpages.map(([key, title]) => { + const linkText = typeof title === "string" ? title : title.title; + return ( +
  • + + {linkText} + +
  • + ); + })} +
+ ); +} diff --git a/app/en/guides/security/_meta.tsx b/app/en/guides/security/_meta.tsx new file mode 100644 index 000000000..b2f1d754c --- /dev/null +++ b/app/en/guides/security/_meta.tsx @@ -0,0 +1,8 @@ +export default { + index: { + title: "Overview", + }, + "securing-arcade-mcp": "Securing Arcade MCP", + "secure-your-mcp-server": "Secure your MCP server", + "security-research-program": "Security research program", +}; diff --git a/app/en/guides/security/page.mdx b/app/en/guides/security/page.mdx new file mode 100644 index 000000000..f705cbd37 --- /dev/null +++ b/app/en/guides/security/page.mdx @@ -0,0 +1,15 @@ +--- +title: "Security" +description: "Learn about security best practices for MCP servers and Arcade tools, plus information about our security research program" +--- + +import { SubpageList } from '../../../_components/SubpageList'; +import meta from './_meta'; + +# Security + +Learn about security best practices for building and deploying secure MCP servers and Arcade tools. Use these resources when implementing production-ready tools that handle sensitive data or require robust security measures. + +Security is crucial when building tools that interact with external services, handle user data, or operate in production environments. Arcade provides comprehensive security guidance and actively maintains a security research program. + + \ No newline at end of file diff --git a/app/en/guides/tool-calling/custom-apps/SubpageList.tsx b/app/en/guides/tool-calling/custom-apps/SubpageList.tsx new file mode 100644 index 000000000..fd79fd295 --- /dev/null +++ b/app/en/guides/tool-calling/custom-apps/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( +
    + {subpages.map(([key, title]) => { + const linkText = typeof title === "string" ? title : title.title; + return ( +
  • + + {linkText} + +
  • + ); + })} +
+ ); +} diff --git a/app/en/guides/tool-calling/custom-apps/page.mdx b/app/en/guides/tool-calling/custom-apps/page.mdx new file mode 100644 index 000000000..70301932b --- /dev/null +++ b/app/en/guides/tool-calling/custom-apps/page.mdx @@ -0,0 +1,15 @@ +--- +title: "In Custom Applications" +description: "Learn how to integrate Arcade tools into your custom applications with authentication and tool management" +--- + +import { SubpageList } from '../../../../_components/SubpageList'; +import meta from './_meta'; + +# In Custom Applications + +Learn how to integrate Arcade tools into your custom applications. Use these guides when building your own tool-calling interfaces and need to handle authentication, status checking, and tool definitions programmatically. + +Building custom applications with Arcade tools requires understanding how to manage user authentication, check authorization status, and retrieve properly formatted tool definitions for your specific use case. + + \ No newline at end of file diff --git a/app/en/guides/tool-calling/mcp-clients/MCPClientGrid.tsx b/app/en/guides/tool-calling/mcp-clients/MCPClientGrid.tsx new file mode 100644 index 000000000..a3a2b176e --- /dev/null +++ b/app/en/guides/tool-calling/mcp-clients/MCPClientGrid.tsx @@ -0,0 +1,73 @@ +"use client"; +import Link from "next/link"; +import meta from "./_meta"; + +// MCP Client data with logos and descriptions +const mcpClients = [ + { + key: "cursor", + name: "Cursor", + description: "AI-powered code editor with built-in MCP support", + }, + { + key: "claude-desktop", + name: "Claude Desktop", + description: "Anthropic's desktop app for Claude with MCP integration", + }, + { + key: "visual-studio-code", + name: "Visual Studio Code", + description: "Microsoft's code editor with MCP extensions", + }, +]; + +// Logo mapping +const logoSrc = { + cursor: "/images/icons/cursor.png", + "claude-desktop": "/images/icons/claude.png", + "visual-studio-code": "/images/icons/vscode.svg", +}; + +export function MCPClientGrid() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( +
+ {mcpClients.map((client) => { + const clientMeta = subpages.find(([key]) => key === client.key); + if (!clientMeta) return null; + + return ( + +
+
+
+
+
+ {`${client.name} +
+
+
+ {client.name} +
+
+ {client.description} +
+
+
+
+
+
+ + ); + })} +
+ ); +} diff --git a/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx b/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx new file mode 100644 index 000000000..cf6c15c80 --- /dev/null +++ b/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx @@ -0,0 +1,23 @@ +import meta from "./_meta"; + +export function SubpageList() { + const subpages = Object.entries(meta).filter(([key]) => key !== "index"); + + return ( +
    + {subpages.map(([key, title]) => { + const linkText = typeof title === "string" ? title : title.title; + return ( +
  • + + {linkText} + +
  • + ); + })} +
+ ); +} diff --git a/app/en/guides/tool-calling/mcp-clients/_meta.tsx b/app/en/guides/tool-calling/mcp-clients/_meta.tsx index 17570ed1d..db3519d81 100644 --- a/app/en/guides/tool-calling/mcp-clients/_meta.tsx +++ b/app/en/guides/tool-calling/mcp-clients/_meta.tsx @@ -1,4 +1,7 @@ export default { + index: { + title: "Overview", + }, cursor: "Cursor", "claude-desktop": "Claude Desktop", "visual-studio-code": "Visual Studio Code", diff --git a/app/en/guides/tool-calling/mcp-clients/page.mdx b/app/en/guides/tool-calling/mcp-clients/page.mdx new file mode 100644 index 000000000..0f13fb765 --- /dev/null +++ b/app/en/guides/tool-calling/mcp-clients/page.mdx @@ -0,0 +1,12 @@ +--- +title: "Connect to MCP Clients" +description: "Learn how to connect your MCP servers to various MCP-compatible clients and development environments" +--- + +import { MCPClientGrid } from "./MCPClientGrid"; + +# Connect to MCP Clients + +You can connect [Arcade MCP servers](/resources/integrations) to MCP-compatible clients and development environments to unlock powerful flows for your agents. + + diff --git a/public/images/icons/claude.png b/public/images/icons/claude.png new file mode 100644 index 0000000000000000000000000000000000000000..763b1649c7cc810c713a45fe410be23de4504f57 GIT binary patch literal 41135 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

DOY+Tf_c+(V)^?AO2HA{4dD8Xl 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

3xJ1Uut0+Rhp(`9H&<6 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 ANdN!< literal 0 HcmV?d00001 diff --git a/public/images/icons/cursor.png b/public/images/icons/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ceb7a855c9a0890c7e074f230f662797d5c42f GIT binary patch literal 25279 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˼+q7;khzu-Gy1#3DT-AJXK;kPh(T+ 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 MUi_Zw|Hgm)e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From ea4c70edcdf5de52d05b2b3cc5b19a8ff84e2322 Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 8 Jan 2026 01:53:28 +0000 Subject: [PATCH 3/6] Fix TypeScript build errors and refactor SubpageList components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix TypeScript error: Property 'title' does not exist on type 'ReactElement' - Create single reusable SubpageList component in /app/_components/ - Remove 6 duplicate SubpageList wrapper components - Update all MDX pages to use centralized SubpageList with proper props - Fix import paths to resolve module resolution errors - Replace unsafe 'as any' assertions with proper type guards 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../SubpageList.tsx | 16 +++++++++---- .../evaluate-tools/SubpageList.tsx | 23 ------------------- .../create-tools/tool-basics/SubpageList.tsx | 23 ------------------- app/en/guides/security/SubpageList.tsx | 23 ------------------- .../tool-calling/custom-apps/SubpageList.tsx | 23 ------------------- .../tool-calling/mcp-clients/SubpageList.tsx | 23 ------------------- next-env.d.ts | 2 +- 7 files changed, 13 insertions(+), 120 deletions(-) rename app/{en/guides/create-tools/error-handling => _components}/SubpageList.tsx (57%) delete mode 100644 app/en/guides/create-tools/evaluate-tools/SubpageList.tsx delete mode 100644 app/en/guides/create-tools/tool-basics/SubpageList.tsx delete mode 100644 app/en/guides/security/SubpageList.tsx delete mode 100644 app/en/guides/tool-calling/custom-apps/SubpageList.tsx delete mode 100644 app/en/guides/tool-calling/mcp-clients/SubpageList.tsx diff --git a/app/en/guides/create-tools/error-handling/SubpageList.tsx b/app/_components/SubpageList.tsx similarity index 57% rename from app/en/guides/create-tools/error-handling/SubpageList.tsx rename to app/_components/SubpageList.tsx index 8f84dce9f..a6f374930 100644 --- a/app/en/guides/create-tools/error-handling/SubpageList.tsx +++ b/app/_components/SubpageList.tsx @@ -1,17 +1,25 @@ -import meta from "./_meta"; +interface SubpageListProps { + basePath: string; + meta: Record; +} -export function SubpageList() { +export function SubpageList({ basePath, meta }: SubpageListProps) { const subpages = Object.entries(meta).filter(([key]) => key !== "index"); return (

    {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; + const linkText = + typeof title === "string" + ? title + : typeof title === "object" && title !== null && "title" in title + ? (title as { title: string }).title + : String(title); return (
  • {linkText} diff --git a/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx b/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx deleted file mode 100644 index 3d1b51994..000000000 --- a/app/en/guides/create-tools/evaluate-tools/SubpageList.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import meta from "./_meta"; - -export function SubpageList() { - const subpages = Object.entries(meta).filter(([key]) => key !== "index"); - - return ( -
      - {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; - return ( -
    • - - {linkText} - -
    • - ); - })} -
    - ); -} diff --git a/app/en/guides/create-tools/tool-basics/SubpageList.tsx b/app/en/guides/create-tools/tool-basics/SubpageList.tsx deleted file mode 100644 index ae8dfd826..000000000 --- a/app/en/guides/create-tools/tool-basics/SubpageList.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import meta from "./_meta"; - -export function SubpageList() { - const subpages = Object.entries(meta).filter(([key]) => key !== "index"); - - return ( -
      - {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; - return ( -
    • - - {linkText} - -
    • - ); - })} -
    - ); -} diff --git a/app/en/guides/security/SubpageList.tsx b/app/en/guides/security/SubpageList.tsx deleted file mode 100644 index fe3bb3bd3..000000000 --- a/app/en/guides/security/SubpageList.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import meta from "./_meta"; - -export function SubpageList() { - const subpages = Object.entries(meta).filter(([key]) => key !== "index"); - - return ( -
      - {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; - return ( -
    • - - {linkText} - -
    • - ); - })} -
    - ); -} diff --git a/app/en/guides/tool-calling/custom-apps/SubpageList.tsx b/app/en/guides/tool-calling/custom-apps/SubpageList.tsx deleted file mode 100644 index fd79fd295..000000000 --- a/app/en/guides/tool-calling/custom-apps/SubpageList.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import meta from "./_meta"; - -export function SubpageList() { - const subpages = Object.entries(meta).filter(([key]) => key !== "index"); - - return ( -
      - {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; - return ( -
    • - - {linkText} - -
    • - ); - })} -
    - ); -} diff --git a/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx b/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx deleted file mode 100644 index cf6c15c80..000000000 --- a/app/en/guides/tool-calling/mcp-clients/SubpageList.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import meta from "./_meta"; - -export function SubpageList() { - const subpages = Object.entries(meta).filter(([key]) => key !== "index"); - - return ( -
      - {subpages.map(([key, title]) => { - const linkText = typeof title === "string" ? title : title.title; - return ( -
    • - - {linkText} - -
    • - ); - })} -
    - ); -} diff --git a/next-env.d.ts b/next-env.d.ts index c4b7818fb..9edff1c7c 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/dev/types/routes.d.ts"; +import "./.next/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. From de95f0f0ce1e9651f902adb1cb9aa4d135ba955c Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Thu, 8 Jan 2026 16:06:27 +0000 Subject: [PATCH 4/6] Use the Next link component. --- app/_components/SubpageList.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/_components/SubpageList.tsx b/app/_components/SubpageList.tsx index a6f374930..c40cb57d0 100644 --- a/app/_components/SubpageList.tsx +++ b/app/_components/SubpageList.tsx @@ -1,3 +1,5 @@ +import Link from "next/link"; + interface SubpageListProps { basePath: string; meta: Record; @@ -17,12 +19,12 @@ export function SubpageList({ basePath, meta }: SubpageListProps) { : String(title); return (
  • - {linkText} - +
  • ); })} From b704a7cd711b04f31505cd7e2a5a034b15aee840 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 8 Jan 2026 18:00:24 +0000 Subject: [PATCH 5/6] =?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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/public/llms.txt b/public/llms.txt index dc6998727..cc5933c33 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -81,6 +81,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [Authorized Tool Calling](https://docs.arcade.dev/en/guides/tool-calling/custom-apps/auth-tool-calling.md): The "Authorized Tool Calling" documentation provides a comprehensive guide for developers on how to securely authorize AI agents to access external services using OAuth 2.0, API keys, and user tokens. It outlines the steps for initializing the Arcade client, obtaining user - [BoxApi](https://docs.arcade.dev/en/resources/integrations/productivity/box-api.md): The BoxApi documentation provides users with tools to manage and automate various aspects of Box content, including file management, metadata handling, collaboration, document generation, and enterprise operations. It outlines capabilities for interacting with Box's API, enabling users to build applications or - [Brightdata](https://docs.arcade.dev/en/resources/integrations/development/brightdata.md): The Brightdata documentation page provides users with tools and guidance for scraping, searching, and extracting structured data from various websites at scale without being blocked. It outlines specific functionalities such as scraping web pages in Markdown format, performing advanced searches across major search engines, +- [Build a Tool](https://docs.arcade.dev/en/guides/create-tools/tool-basics.md): This documentation page provides a comprehensive guide on building custom tools using Arcade's MCP Server framework, enabling users to enhance AI agents with new functionalities. It serves as a starting point for those looking to create their first tool or expand existing capabilities. Users will learn - [Build MCP Server QuickStart](https://docs.arcade.dev/en/get-started/quickstarts/mcp-server-quickstart.md): The "Build MCP Server QuickStart" documentation provides a step-by-step guide for users to create and run a custom MCP Server using the Arcade MCP framework. It covers prerequisites, installation instructions, server setup, and how to connect and authorize tools, enabling - [CalendlyApi](https://docs.arcade.dev/en/resources/integrations/productivity/calendly-api.md): The CalendlyApi documentation provides tools and resources for developers to integrate and manage scheduling and event-related tasks within the Calendly platform using OAuth2 authentication. Users can learn how to create, retrieve, and update event types, manage invitees, and handle - [Call a tool in your IDE/MCP Client](https://docs.arcade.dev/en/get-started/quickstarts/call-tool-client.md): This documentation page guides users on how to create and utilize an MCP Gateway in their IDE or MCP Client to streamline the process of calling tools from multiple MCP servers. It covers the steps to set up the gateway, select relevant tools, and connect it to @@ -97,6 +98,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [Comparative evaluations](https://docs.arcade.dev/en/guides/create-tools/evaluate-tools/comparative-evaluations.md): The "Comparative Evaluations" documentation page guides users in testing and comparing the performance of AI models across different tool implementations using isolated tool registries, known as tracks. It outlines how to set up comparative evaluations, register tools, create test cases, - [Compare MCP Server Types](https://docs.arcade.dev/en/guides/create-tools/tool-basics/compare-server-types.md): This documentation page provides a comparative overview of different MCP server types offered by Arcade, detailing their functionalities based on transport method and deployment options. Users can learn about the capabilities of each server type, including the availability of tools with or without authentication and secrets. - [Confluence](https://docs.arcade.dev/en/resources/integrations/productivity/confluence.md): This documentation page provides a comprehensive overview of the Arcade Confluence MCP Server, which enables users to build agents and AI applications that interact with Confluence. It details various tools available for managing pages, spaces, and attachments, as well as searching for content +- [Connect to MCP Clients](https://docs.arcade.dev/en/guides/tool-calling/mcp-clients.md): This documentation page provides guidance on connecting Arcade MCP servers to various MCP-compatible clients and development environments, enabling users to enhance their agent workflows. - [Contact Us](https://docs.arcade.dev/en/resources/contact-us.md): This documentation page provides users with information on how to connect with the Arcade team for support through various channels. It aims to facilitate communication and assistance for users and their agents. - [Create a new Mastra project](https://docs.arcade.dev/en/guides/agent-frameworks/mastra/use-arcade-tools.md): This documentation page provides a step-by-step guide for integrating Arcade tools into a new Mastra project, enabling users to leverage these tools within their Mastra applications. It covers prerequisites, project setup, installation of the Arcade client, API key configuration, and - [Create an evaluation suite](https://docs.arcade.dev/en/guides/create-tools/evaluate-tools/create-evaluation-suite.md): This documentation page provides a comprehensive guide on creating an evaluation suite to test AI models' tool usage through Arcade. Users will learn how to set up prerequisites, define evaluation files and suites, run evaluations, and interpret results, ensuring accurate tool selection and parameter @@ -114,6 +116,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [E2B](https://docs.arcade.dev/en/resources/integrations/development/e2b.md): The E2B documentation page provides users with tools and guidance for running code in a sandboxed environment, specifically designed for building agents and AI applications. It details two main functionalities: executing code safely and generating static matplotlib charts, along with examples and authentication - [Engine Configuration](https://docs.arcade.dev/en/guides/deployment-hosting/configure-engine.md): This documentation page provides advanced configuration options for enterprise customers self-hosting the Arcade Engine, detailing how to set up and customize engine settings using configuration files. Users will learn how to install the engine on various platforms, manage the `engine.yaml` and ` - [Environment Variables](https://docs.arcade.dev/en/resources/integrations/social-communication/slack/environment-variables.md): This documentation page provides guidance on configuring environment variables related to Slack API interactions, specifically `SLACK_MAX_CONCURRENT_REQUESTS`, `MAX_PAGINATION_SIZE_LIMIT`, and `MAX_PAGINATION_TIMEOUT_SECONDS`. Users will learn how to adjust these settings +- [Evaluate Tools](https://docs.arcade.dev/en/guides/create-tools/evaluate-tools.md): The "Evaluate Tools" documentation page provides guidance on systematically testing and enhancing tools using Arcade's evaluation framework. It helps users validate the performance of their tools after initial development and offers techniques for iterative improvements to ensure reliability in production. - [ExaApi](https://docs.arcade.dev/en/resources/integrations/search/exa-api.md): The ExaApi documentation provides users with a comprehensive guide to utilizing the Exa.ai Search API, enabling them to conduct searches, manage websets, and handle research requests effectively. It outlines various tools available within the API, detailing their functionalities such as - [Fetch the "ScrapeUrl" tool from the "Firecrawl" MCP Server](https://docs.arcade.dev/en/guides/agent-frameworks/langchain/use-arcade-tools.md): This documentation page provides a comprehensive guide for integrating Arcade tools into LangGraph applications, detailing prerequisites, environment setup, API key configuration, and tool management. Users will learn how to create and manage AI models, configure agents, and stream responses while utilizing code - [Figma](https://docs.arcade.dev/en/resources/integrations/development/figma.md): This documentation page provides users with a comprehensive guide to the Figma MCP Server, enabling interaction with Figma's design files, components, and collaboration features through the Figma REST API. Users can learn to access file structures, manage components, add comments @@ -145,6 +148,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [GoogleCalendar Reference](https://docs.arcade.dev/en/resources/integrations/productivity/google-calendar/reference.md): The GoogleCalendar Reference documentation provides a concise overview of key enumerations related to event visibility, update options for sending notifications, and managing Google Meet settings within the GoogleCalendar MCP Server. Users can reference these enumerations to effectively configure and manage calendar events and - [GoogleDocs Reference](https://docs.arcade.dev/en/resources/integrations/productivity/google-docs/reference.md): The GoogleDocs Reference documentation provides a comprehensive list of enumerations used in the GoogleDocs MCP Server, specifically focusing on sorting options and document formats. Users can learn about various order criteria, such as creation and modification times, as well as supported document formats - [GoogleSheets Reference](https://docs.arcade.dev/en/resources/integrations/productivity/google-sheets/reference.md): The GoogleSheets Reference documentation provides a comprehensive list of enumerations related to sorting and ordering data within the GoogleSheets MCP Server. Users can learn about various order criteria, such as creation time, modification time, and name, along with their corresponding identifiers for +- [Handle Errors](https://docs.arcade.dev/en/guides/create-tools/error-handling.md): This documentation page teaches users how to implement effective error handling in their tools to enhance user experience and ensure resilience in production environments. It outlines strategies for managing various error types and encourages the adoption of robust patterns for improved reliability. - [Hosting Optoions Overview](https://docs.arcade.dev/en/guides/deployment-hosting.md): This documentation page provides an overview of the various hosting options available for the Arcade platform, including the Arcade Cloud service and on-premise deployments. Users can learn how to quickly set up and manage their applications with zero infrastructure through Arcade Cloud or configure on-prem - [How to contribute a MCP Server](https://docs.arcade.dev/en/resources/integrations/contribute-a-server.md): This documentation page provides a step-by-step guide for developers on how to contribute their MCP Server to the Arcade documentation. It outlines the prerequisites for submission, including building and publishing the MCP Server, and details the process for opening a pull request and ensuring it - [Hubspot](https://docs.arcade.dev/en/resources/integrations/sales/hubspot.md): This documentation page provides users with tools and guidance for integrating and automating interactions with HubSpot CRM through the HubSpot MCP Server. Users can learn how to perform various actions such as creating, updating, and retrieving data related to users, contacts, deals @@ -160,6 +164,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [Imgflip](https://docs.arcade.dev/en/resources/integrations/entertainment/imgflip.md): The Imgflip documentation provides users with tools to create and manage memes using the Imgflip API, enabling the development of agents and AI applications. Users can search for meme templates, retrieve popular memes, and create custom memes by adding text to existing templates. - [Imgflip](https://docs.arcade.dev/en/resources/integrations/entertainment/spotify/imgflip.md): The Imgflip documentation page provides users with tools to create and manage memes using the Imgflip API, allowing them to search for meme templates, retrieve popular templates, and create custom memes. It outlines the available features, including a premium search option and customizable - [Import necessary classes and modules](https://docs.arcade.dev/en/guides/agent-frameworks/langchain/user-auth-interrupts.md): This documentation page guides users in creating a LangGraph workflow that integrates user authorization for specific Arcade tools, ensuring that only authorized tools are accessible to the language model. It provides step-by-step instructions on setting up the necessary environment, installing required packages, and +- [In Custom Applications](https://docs.arcade.dev/en/guides/tool-calling/custom-apps.md): This documentation page provides guidance on integrating Arcade tools into custom applications, focusing on user authentication, authorization status checking, and managing tool definitions. It serves as a resource for developers building tool-calling interfaces to ensure proper implementation and functionality. - [Initialize the Arcade client](https://docs.arcade.dev/en/guides/agent-frameworks/google-adk/use-arcade-tools.md): This documentation page provides a comprehensive guide for integrating Arcade tools into Google ADK applications, outlining the necessary prerequisites, setup procedures, and configuration steps. Users will learn how to manage and authorize Arcade tools, create agents, and run them effectively within their applications - [IntercomApi](https://docs.arcade.dev/en/resources/integrations/customer-support/intercom-api.md): The IntercomApi documentation provides a comprehensive guide to tools that enable users to interact with the Intercom platform using OAuth2 authentication. It details various functionalities, such as managing admin information, creating and updating articles, and handling company data, allowing users to - [Jira](https://docs.arcade.dev/en/resources/integrations/productivity/jira.md): This documentation page provides a comprehensive overview of the Jira MCP Server, which enables users and AI applications to efficiently manage Jira issues and projects. It outlines various functionalities such as creating, updating, and searching for issues, managing labels and attachments, and transitioning issues @@ -208,6 +213,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w - [Salesforce CRM](https://docs.arcade.dev/en/resources/integrations/sales/salesforce.md): This documentation page provides guidance on using the Arcade Salesforce CRM MCP Server, which enables users to interact with Salesforce accounts, leads, and contacts through a set of pre-built tools. It outlines the steps for creating a custom Salesforce Auth Provider, self-hosting - [Secure and Brand the Auth Flow in Production](https://docs.arcade.dev/en/guides/user-facing-agents/secure-auth-production.md): This documentation page guides users on how to secure and customize their authentication flows using Arcade.dev in production environments. It explains the use of the default Arcade user verifier for development and the implementation of a custom user verifier for production applications, ensuring user verification and enhancing - [Securing Arcade MCP Deployments](https://docs.arcade.dev/en/guides/security/securing-arcade-mcp.md): This documentation page provides guidance on securing Arcade MCP deployments, detailing two primary methods: deploying the MCP server to the Arcade platform for built-in security features and implementing OAuth 2.1 Resource Server authentication for self-hosted environments. Users will learn how to +- [Security](https://docs.arcade.dev/en/guides/security.md): This documentation page provides users with best practices for ensuring the security of MCP servers and Arcade tools, particularly when handling sensitive data or operating in production environments. It also highlights the importance of security in tool development and outlines the resources available for implementing robust security measures - [Security Research Program](https://docs.arcade.dev/en/guides/security/security-research-program.md): The Security Research Program documentation page outlines how users can report security vulnerabilities in Arcade's tools and services, emphasizing the importance of community involvement in enhancing security. It details the types of vulnerabilities sought, the reporting process, and guidelines for responsible disclosure. Additionally, - [Server-Level vs Tool-Level Authorization](https://docs.arcade.dev/en/learn/server-level-vs-tool-level-auth.md): This documentation page explains the differences between server-level authorization (Resource Server auth) and tool-level authorization in Arcade MCP servers, highlighting their roles in securing access to the server and third-party APIs. It provides guidance on when to implement each type of authorization, - [Set your API key](https://docs.arcade.dev/en/guides/agent-frameworks/openai-agents/user-auth-interrupts.md): This documentation page provides guidance on managing user authorization for Arcade tools within OpenAI Agents applications. It covers obtaining an API key, configuring the environment, handling authorization errors, and ensuring persistence of user authorization. Users will learn how to effectively implement and manage the From cd875149c3729ba61d92e3e579bce0c15a6f1fcc Mon Sep 17 00:00:00 2001 From: Rachel Lee Nabors Date: Fri, 9 Jan 2026 14:30:12 +0000 Subject: [PATCH 6/6] adds some things back to the meta --- .../create-tools/error-handling/_meta.tsx | 21 ++++++++++-- .../create-tools/evaluate-tools/_meta.tsx | 33 +++++++++++++++---- .../guides/create-tools/tool-basics/_meta.tsx | 13 +++++++- app/en/guides/security/_meta.tsx | 25 +++++++++++--- .../guides/tool-calling/custom-apps/_meta.tsx | 13 +++++++- .../guides/tool-calling/mcp-clients/_meta.tsx | 25 +++++++++++--- 6 files changed, 111 insertions(+), 19 deletions(-) diff --git a/app/en/guides/create-tools/error-handling/_meta.tsx b/app/en/guides/create-tools/error-handling/_meta.tsx index 0640ca1d6..a67ab3a0f 100644 --- a/app/en/guides/create-tools/error-handling/_meta.tsx +++ b/app/en/guides/create-tools/error-handling/_meta.tsx @@ -1,7 +1,22 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, - "retry-tools": "Retry Tools with Improved Prompt", - "useful-tool-errors": "Provide Useful Tool Errors", + "retry-tools": { + title: "Retry Tools with Improved Prompt", + }, + "useful-tool-errors": { + title: "Provide Useful Tool Errors", + }, }; + +export default meta; diff --git a/app/en/guides/create-tools/evaluate-tools/_meta.tsx b/app/en/guides/create-tools/evaluate-tools/_meta.tsx index da3bb90b7..ddcb80e01 100644 --- a/app/en/guides/create-tools/evaluate-tools/_meta.tsx +++ b/app/en/guides/create-tools/evaluate-tools/_meta.tsx @@ -1,10 +1,31 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, - "why-evaluate": "Why evaluate tools?", - "create-evaluation-suite": "Create an evaluation suite", - "run-evaluations": "Run evaluations", - "capture-mode": "Capture mode", - "comparative-evaluations": "Comparative evaluations", + "why-evaluate": { + title: "Why evaluate tools?", + }, + "create-evaluation-suite": { + title: "Create an evaluation suite", + }, + "run-evaluations": { + title: "Run evaluations", + }, + "capture-mode": { + title: "Capture mode", + }, + "comparative-evaluations": { + title: "Comparative evaluations", + }, }; + +export default meta; diff --git a/app/en/guides/create-tools/tool-basics/_meta.tsx b/app/en/guides/create-tools/tool-basics/_meta.tsx index 5cee22f64..ac820d8ad 100644 --- a/app/en/guides/create-tools/tool-basics/_meta.tsx +++ b/app/en/guides/create-tools/tool-basics/_meta.tsx @@ -1,4 +1,13 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, @@ -24,3 +33,5 @@ export default { title: "Organize your MCP server and tools", }, }; + +export default meta; diff --git a/app/en/guides/security/_meta.tsx b/app/en/guides/security/_meta.tsx index b2f1d754c..5589db761 100644 --- a/app/en/guides/security/_meta.tsx +++ b/app/en/guides/security/_meta.tsx @@ -1,8 +1,25 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, - "securing-arcade-mcp": "Securing Arcade MCP", - "secure-your-mcp-server": "Secure your MCP server", - "security-research-program": "Security research program", + "securing-arcade-mcp": { + title: "Securing Arcade MCP", + }, + "secure-your-mcp-server": { + title: "Secure your MCP server", + }, + "security-research-program": { + title: "Security research program", + }, }; + +export default meta; diff --git a/app/en/guides/tool-calling/custom-apps/_meta.tsx b/app/en/guides/tool-calling/custom-apps/_meta.tsx index 9cca37ceb..20b94d9f5 100644 --- a/app/en/guides/tool-calling/custom-apps/_meta.tsx +++ b/app/en/guides/tool-calling/custom-apps/_meta.tsx @@ -1,4 +1,13 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, @@ -12,3 +21,5 @@ export default { title: "Get formatted tool definitions", }, }; + +export default meta; diff --git a/app/en/guides/tool-calling/mcp-clients/_meta.tsx b/app/en/guides/tool-calling/mcp-clients/_meta.tsx index db3519d81..cb9deae1a 100644 --- a/app/en/guides/tool-calling/mcp-clients/_meta.tsx +++ b/app/en/guides/tool-calling/mcp-clients/_meta.tsx @@ -1,8 +1,25 @@ -export default { +import type { MetaRecord } from "nextra"; + +const meta: MetaRecord = { + "*": { + theme: { + breadcrumb: true, + toc: true, + copyPage: true, + }, + }, index: { title: "Overview", }, - cursor: "Cursor", - "claude-desktop": "Claude Desktop", - "visual-studio-code": "Visual Studio Code", + cursor: { + title: "Cursor", + }, + "claude-desktop": { + title: "Claude Desktop", + }, + "visual-studio-code": { + title: "Visual Studio Code", + }, }; + +export default meta;