From 9f6495768abc1133d03c44db62e965d78b35a97b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 17:55:18 +0000 Subject: [PATCH 1/5] Editorial: Structure - Added proper opening sentence and restructured intro paragraph to follow 10/20/70 format; Terminology - Changed "MCP Servers" to "MCP servers" --- app/en/get-started/about-arcade/page.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/en/get-started/about-arcade/page.mdx b/app/en/get-started/about-arcade/page.mdx index bbe419eba..6ddca6985 100644 --- a/app/en/get-started/about-arcade/page.mdx +++ b/app/en/get-started/about-arcade/page.mdx @@ -1,19 +1,18 @@ +```mdx --- title: "How Arcade helps with Agent Authorization" description: "Learn how Arcade helps with auth and tool calling" --- + + import { Tabs } from "nextra/components"; # About Arcade -Applications that use models to perform tasks (_agentic applications_) commonly require access to sensitive data and services. Authentication complexities often hinder AI from performing tasks that require user-specific information, like what emails you recently received or what's coming up on your calendar. - -To retrieve this information, agentic applications need to be able to authenticate and authorize access to external services you use like Gmail or Google Calendar. - -Authenticating to retrieve information, however, is not the only challenge. Agentic applications also need to authenticate to **act** on your behalf - like sending an email or updating your calendar. +Arcade provides an authorization system that handles OAuth 2.0, API keys, and user tokens needed by AI agents to access external services through tools. -Without auth, AI agents are severely limited in what they can do. +Applications that use models to perform tasks (_agentic applications_) commonly require access to sensitive data and services. Authentication complexities often hinder AI from performing tasks that require user-specific information, like what emails you recently received or what's coming up on your calendar. To retrieve this information, agentic applications need to be able to authenticate and authorize access to external services you use like Gmail or Google Calendar. Authenticating to retrieve information, however, is not the only challenge. Agentic applications also need to authenticate to **act** on your behalf - like sending an email or updating your calendar. Without auth, AI agents are severely limited in what they can do. ## How Arcade solves this @@ -27,7 +26,7 @@ With Arcade, developers can now create agents that can _act as the end users of ## Auth permissions and scopes -Each tool in Arcade's MCP Servers has a set of required permissions - or, more commonly referred to in OAuth 2.0, **scopes**. For example, the [`Gmail.SendEmail`](/resources/integrations/productivity/gmail#gmailsendemail) tool requires the [`https://www.googleapis.com/auth/gmail.send`](https://developers.google.com/identity/protocols/oauth2/scopes#gmail) scope. +Each tool in Arcade's MCP servers has a set of required permissions - or, more commonly referred to in OAuth 2.0, **scopes**. For example, the [`Gmail.SendEmail`](/resources/integrations/productivity/gmail#gmailsendemail) tool requires the [`https://www.googleapis.com/auth/gmail.send`](https://developers.google.com/identity/protocols/oauth2/scopes#gmail) scope. A scope is what the user has authorized someone else (in this case, the AI agent) to do on their behalf. In any OAuth 2.0-compatible service, each kind of action requires a different set of permissions. This gives the user fine-grained control over what data third-party services can access and what actions they can take in their accounts. @@ -74,3 +73,4 @@ console.log(response.output.value); +``` \ No newline at end of file From 291a171a2ebb4a248736ba977493d90deb06ccd3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 17:56:13 +0000 Subject: [PATCH 2/5] Editorial: Voice and Tone - Changed "gives your AI agents the power to act" to be less marketing-focused --- .../quickstarts/call-tool-agent/page.mdx | 66 ++++++++++--------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/app/en/get-started/quickstarts/call-tool-agent/page.mdx b/app/en/get-started/quickstarts/call-tool-agent/page.mdx index a4cbbc17c..8b9a67a7e 100644 --- a/app/en/get-started/quickstarts/call-tool-agent/page.mdx +++ b/app/en/get-started/quickstarts/call-tool-agent/page.mdx @@ -1,3 +1,4 @@ +```mdx --- title: "Calling tools in your agent" description: "Learn how to call tools in your agent" @@ -6,9 +7,13 @@ description: "Learn how to call tools in your agent" import { Steps, Tabs, Callout } from "nextra/components"; import { SignupLink } from "@/app/_components/analytics"; -# Calling tools in your agent with Arcade + -Arcade gives your AI agents the power to act. With Arcade-hosted tools, your AI-powered apps can send Gmail, update Notion, message in Slack, and more. +# Call tools in your agent with Arcade + +Install and use the Arcade client to call Arcade Hosted Tools from your AI agents. + +This quickstart shows developers how to integrate Arcade-hosted tools into AI applications. You'll build a workflow that chains multiple tools together: searching for news, creating a document, and sending an email. The example demonstrates both tools that require user authorization and those that don't. @@ -64,7 +69,7 @@ bun install @arcadeai/arcadejs -### Setup the client +### Set up the client @@ -92,7 +97,7 @@ Create a new script called `example.ts`: ```typescript filename="example.ts" import Arcade from "@arcadeai/arcadejs"; -// You can also set the `ARCADE_API_KEY` environment variable instead of passing it as a parameter. +# You can also set the `ARCADE_API_KEY` environment variable instead of passing it as a parameter. const client = new Arcade({ apiKey: "{arcade_api_key}", }); @@ -178,11 +183,11 @@ async function authorize_and_run_tool({ ### Implement the workflow -In this example workflow, we: +In this example workflow, the system: -- Get the latest news about MCP URL mode elicitation -- Create a Google Doc with the news -- Send a link to the Google Doc to the user +- Gets the latest news about MCP URL mode elicitation +- Creates a Google Doc with the news +- Sends a link to the Google Doc to the user @@ -209,7 +214,7 @@ for search_result in news: output += f"{search_result['link']}\n\n" # Create a Google Doc with the news results -# If the user has not previously authorized the Google Docs tool, they will be prompted to authorize the tool call. +# If the user has not previously authorized the Google Docs tool, the system prompts to authorize the tool call. response_create_doc = authorize_and_run_tool( tool_name="GoogleDocs.CreateDocumentFromText", input={ @@ -246,7 +251,7 @@ print(response_send_email.output.value) ```typescript filename="example.ts" // This tool does not require authorization, so it will return the results -// without prompting the user to authorize the app. +# without prompting the user to authorize the app. const response_search = await authorize_and_run_tool({ tool_name: "GoogleNews.SearchNewsStories", input: { @@ -267,7 +272,7 @@ for (const search_result of news) { } // Create a Google Doc with the news results -// If the user has not previously authorized the Google Docs tool, they will be prompted to authorize the tool call. +// If the user has not previously authorized the Google Docs tool, the system prompts to authorize the tool call. const respose_create_doc = await authorize_and_run_tool({ tool_name: "GoogleDocs.CreateDocumentFromText", input: { @@ -282,7 +287,7 @@ const google_doc = respose_create_doc.output?.value; // Send an email with the link to the Google Doc const email_body = `You can find the news about MCP URL mode elicitation in the following Google Doc: ${google_doc.documentUrl}`; -// Here again, if the user has not previously authorized the Gmail tool, they will be prompted to authorize the tool call. +# Here again, if the user has not previously authorized the Gmail tool, the system prompts to authorize the tool call. const respose_send_email = await authorize_and_run_tool({ tool_name: "Gmail.SendEmail", input: { @@ -314,7 +319,7 @@ console.log(respose_send_email.output?.value); uv run example.py ``` ```text - Success! Check your email at mateo@arcade.dev + Success Check your email at mateo@arcade.dev You just chained 3 tools together: 1. Searched Google News for stories about MCP URL mode elicitation @@ -333,7 +338,7 @@ console.log(respose_send_email.output?.value); ``` ```text - Success! Check your email at mateo@arcade.dev + Success Check your email at mateo@arcade.dev You just chained 3 tools together: 1. Searched Google News for stories about MCP URL mode elicitation @@ -342,10 +347,10 @@ console.log(respose_send_email.output?.value); Email metadata: { - id: "19ba...", + id: "19ba", label_ids: [ "UNREAD", "SENT", "INBOX" ], - thread_id: "19ba...", - url: "https://mail.google.com/mail/u/0/#sent/19ba...", + thread_id: "19ba", + url: "https://mail.google.com/mail/u/0/#sent/19ba", } ``` @@ -354,11 +359,11 @@ console.log(respose_send_email.output?.value); -## Next Steps +## Next steps -In this simple example, we call the tool methods directly. In your real applications and agents, you'll likely be letting the LLM decide which tools to call. Learn more about using Arcade with Frameworks in the [Frameworks](/guides/agent-frameworks) section, or [how to build your own tools](/guides/create-tools/tool-basics/build-mcp-server). +In this example, the system calls the tool methods directly. In your real applications and agents, you'll likely be letting the LLM decide which tools to call. Learn more about using Arcade with frameworks in the [Frameworks](/guides/agent-frameworks) section, or [how to build your own tools](/guides/create-tools/tool-basics/build-mcp-server). -## Example Code +## Example code @@ -413,7 +418,7 @@ for search_result in news: output += f"{search_result['link']}\n" # Create a Google Doc with the news results -# If the user has not previously authorized the Google Docs tool, they will be prompted to authorize the tool call. +# If the user has not previously authorized the Google Docs tool, the system prompts to authorize the tool call. response_create_doc = authorize_and_run_tool( tool_name="GoogleDocs.CreateDocumentFromText", input={ @@ -440,7 +445,7 @@ response_send_email = authorize_and_run_tool( ) # Print the response from the tool call -print(f"Success! Check your email at {user_id}\n\nYou just chained 3 tools together:\n 1. Searched Google News for stories about MCP URL mode elicitation\n 2. Created a Google Doc with the results\n 3. Sent yourself an email with the document link\n\nEmail metadata:") +print(f"Success Check your email at {user_id}\n\nYou just chained 3 tools together:\n 1. Searched Google News for stories about MCP URL mode elicitation\n 2. Created a Google Doc with the results\n 3. Sent yourself an email with the document link\n\nEmail metadata:") print(response_send_email.output.value) ``` @@ -451,9 +456,9 @@ print(response_send_email.output.value) import Arcade from "@arcadeai/arcadejs"; // You can also set the `ARCADE_API_KEY` environment variable instead of passing it as a parameter. -const client = new Arcade( +const client = new Arcade({ apiKey: "{arcade_api_key}", -); +}); // Arcade needs a unique identifier for your application user (this could be an email address, a UUID, etc). // In this example, use the email you used to sign up for Arcade.dev: @@ -466,9 +471,9 @@ async function authorize_and_run_tool({ input, user_id, }: { - tool_name: string, - input: any, - user_id: string, + tool_name: string; + input: any; + user_id: string; }) { @@ -518,7 +523,7 @@ for (const search_result of news) { } // Create a Google Doc with the news results -// If the user has not previously authorized the Google Docs tool, they will be prompted to authorize the tool call. +// If the user has not previously authorized the Google Docs tool, the system prompts to authorize the tool call. const respose_create_doc = await authorize_and_run_tool({ tool_name: "GoogleDocs.CreateDocumentFromText", input: { @@ -533,7 +538,7 @@ const google_doc = respose_create_doc.output?.value; // Send an email with the link to the Google Doc const email_body = `You can find the news about MCP URL mode elicitation in the following Google Doc: ${google_doc.documentUrl}`; -// Here again, if the user has not previously authorized the Gmail tool, they will be prompted to authorize the tool call. +// Here again, if the user has not previously authorized the Gmail tool, the system prompts to authorize the tool call. const respose_send_email = await authorize_and_run_tool({ tool_name: "Gmail.SendEmail", input: { @@ -546,10 +551,11 @@ const respose_send_email = await authorize_and_run_tool({ // Print the response from the tool call console.log( - `Success! Check your email at ${userId}\n\nYou just chained 3 tools together:\n 1. Searched Google News for stories about MCP URL mode elicitation\n 2. Created a Google Doc with the results\n 3. Sent yourself an email with the document link\n\nEmail metadata:` + `Success Check your email at ${userId}\n\nYou just chained 3 tools together:\n 1. Searched Google News for stories about MCP URL mode elicitation\n 2. Created a Google Doc with the results\n 3. Sent yourself an email with the document link\n\nEmail metadata:` ); console.log(respose_send_email.output?.value); ``` +``` \ No newline at end of file From 1aa4afed2bbc8654ac8fe14b1cbfa217cead8043 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 17:56:35 +0000 Subject: [PATCH 3/5] Editorial: Structure - Added intro line conforming to Tutorial and Quickstart structure --- .../quickstarts/call-tool-client/page.mdx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/app/en/get-started/quickstarts/call-tool-client/page.mdx b/app/en/get-started/quickstarts/call-tool-client/page.mdx index 449ebea24..ebaae4f31 100644 --- a/app/en/get-started/quickstarts/call-tool-client/page.mdx +++ b/app/en/get-started/quickstarts/call-tool-client/page.mdx @@ -1,8 +1,11 @@ +```mdx --- title: "Call a tool in your IDE/MCP Client" description: "Learn how to call a tool in your IDE/MCP Client" --- + + import { Steps, Tabs, Callout } from "nextra/components"; import { SignupLink } from "@/app/_components/analytics"; import Image from "next/image"; @@ -23,6 +26,8 @@ export const MCP_GATEWAY_URL_LIGHT_HEIGHT = 498; # Call a tool in your IDE/MCP Client +You'll learn how to create and use an MCP Gateway to call tools from multiple MCP servers in your IDE. + Tools enable your AI agents to perform actions on your behalf. For specific workflows and use cases, this may involve calling tools from multiple MCP servers. Arcade facilitates this by allowing you to create MCP Gateways to federate the tools from multiple MCP servers into a single collection for convenient management, control, and access. For example, if your agent specializes in solving specific tickets in Linear, you may want to use tools from the GitHub, Slack and Linear servers in your agent. These add up to 88 tools, which could be overwhelming for an LLM to use effectively. What you want is to get from these servers only the tools that matter for your agent. An MCP Gateway allows you to do just that: pick only the tools required for this workflow, and you can connect it to any MCP client, making it possible to port your agent to multiple platforms and IDEs, and even share it with other users. @@ -68,7 +73,7 @@ Create a coding agent using an MCP Gateway to call tools from multiple MCP serve height={CREATE_MCP_GATEWAY_DARK_HEIGHT / IMAGE_SCALE_FACTOR} /> -Give your MCP gateway: +Give your MCP Gateway: - A name - A description @@ -101,7 +106,7 @@ Feel free to select any tools you want to include in your specific use case. Once you've selected the tools you want to include in the gateway, click the "Use N tools" button in the tool picker, and then click the "Create MCP Gateway" button to create the gateway. - You can select as many tools for your MCP Gateway as you want, but be mindful of how the MCP clients will handle the large number of tools. Some clients may not handle a large number of tools well, and may consume a significant portion of the LLM's context window. We recommend keeping the number of tools in a single MCP Gateway below 80.``` + You can select as many tools for your MCP Gateway as you want, but be mindful of how the MCP clients will handle the large number of tools. Some clients may not handle a large number of tools well, and may consume a significant portion of the LLM's context window. The recommendation is to keep the number of tools in a single MCP Gateway below 80. ### Connect the MCP Gateway to an MCP client @@ -153,7 +158,7 @@ Get the URL of your MCP Gateway by clicking the "Copy URL" button in the MCP Gat - 1. Open the command palette (Mac: Cmd + Shift + p / Windows: Ctrl + Shift + p) and select **MCP: Add Server...** + 1. Open the command palette (Mac: Cmd + Shift + p / Windows: Ctrl + Shift + p) and select **MCP: Add Server** 1. Choose **HTTP** 1. Paste the URL of your MCP Gateway. 1. Give your MCP server a name, like `mcp-arcade` @@ -166,16 +171,17 @@ Get the URL of your MCP Gateway by clicking the "Copy URL" button in the MCP Gat ### Try it out 1. Open your IDE's chat pane. -1. Ask the agent to do something! For example, "Check the latest linear issue assigned to me. Then, create a new GitHub branch, implement the fix, and add tests. If all the tests pass, create a pull request and assign it to me." +1. Ask the agent to do something For example, "Check the latest linear issue assigned to me. Then, create a new GitHub branch, implement the fix, and add tests. If all the tests pass, create a pull request and assign it to me." -As you interact with the agent, it will call the tools from the MCP Gateway. Your agent should prompt you to visit links to authorize access to Linear and GitHub. After this, it will start using tools to carry out the task! Subsequent calls will not require authorization. +As you interact with the agent, it will call the tools from the MCP Gateway. Your agent should prompt you to visit links to authorize access to Linear and GitHub. After this, it will start using tools to carry out the task Subsequent calls will not require authorization. -## Next Steps +## Next steps - Learn more about [MCP Gateways](/guides/create-tools/mcp-gateways). - Learn how to use MCP Gateways with: - [Cursor](/guides/tool-calling/mcp-clients/cursor) - [Visual Studio Code](/guides/tool-calling/mcp-clients/visual-studio-code) - Build your own MCP servers with [arcade-mcp](/get-started/quickstarts/mcp-server-quickstart). +``` \ No newline at end of file From b0162811c2be8e658dea70cb2550333e90d30338 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 15 Jan 2026 17:56:37 +0000 Subject: [PATCH 4/5] Editorial: Voice and Tone (Use "you" for the reader) - Changed "Build and run an MCP Server" to "Build and run an MCP server"; Arcade Terminology - Changed "MCP Server" to "MCP server" throughout --- .../mcp-server-quickstart/page.mdx | 26 ++++++++++--------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/app/en/get-started/quickstarts/mcp-server-quickstart/page.mdx b/app/en/get-started/quickstarts/mcp-server-quickstart/page.mdx index 57a2ef479..7bb46af1f 100644 --- a/app/en/get-started/quickstarts/mcp-server-quickstart/page.mdx +++ b/app/en/get-started/quickstarts/mcp-server-quickstart/page.mdx @@ -3,16 +3,18 @@ title: "Build MCP Server QuickStart" description: "Create your custom MCP Server with Arcade MCP" --- + + import { Steps, Tabs, Callout } from "nextra/components"; import { SignupLink } from "@/app/_components/analytics"; import { GuideOverview } from "@/app/_components/guide-overview"; -# Build MCP Server QuickStart +# Build MCP server quickstart -Build and run an MCP Server with tools that you create. +Build and run an MCP server with tools that you create. @@ -67,9 +69,9 @@ pip install arcade-mcp -## Create Your Server +## Create your server -In your terminal, run the following command to scaffold a new MCP Server called `my_server`: +In your terminal, run the following command to scaffold a new MCP server called `my_server`: ```bash arcade new my_server @@ -100,7 +102,7 @@ my_server/ > If you're having issues with the `arcade` command, please see the [Troubleshooting](#troubleshooting) section. -## Setup the secrets in your environment +## Set up the secrets in your environment Secrets are sensitive strings like passwords, API keys, or other tokens that grant access to a protected resource or API. Arcade includes the "whisper_secret" tool that requires you to set a secret key in your environment. If you don't set the secret, the tool will return an error. @@ -140,9 +142,9 @@ arcade login Follow the instructions in your browser to connect your terminal to your Arcade account. -## Run your MCP Server +## Run your MCP server -Run your MCP Server using one of the following commands in your terminal: +Run your MCP server using one of the following commands in your terminal: Date: Thu, 15 Jan 2026 17:56:39 +0000 Subject: [PATCH 5/5] Editorial: Structure (Default Page Structure) - Added opening sentence; Voice and Tone (Use "you" for reader) - Changed "Before you begin" to direct address --- app/en/get-started/setup/api-keys/page.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/en/get-started/setup/api-keys/page.mdx b/app/en/get-started/setup/api-keys/page.mdx index 83b1e16f0..f7bc86f64 100644 --- a/app/en/get-started/setup/api-keys/page.mdx +++ b/app/en/get-started/setup/api-keys/page.mdx @@ -1,14 +1,19 @@ +```mdx --- title: "Getting Your API Key" description: "Learn how to obtain and manage your Arcade API key" --- + + import { Steps, Tabs, Callout } from "nextra/components"; import { SignupLink } from "@/app/_components/analytics"; # Getting Your API Key -Before you begin, you'll need an Arcade account - if you haven't created one yet, you can sign up here. Once you have an account, you can generate API keys through either the dashboard or CLI. +You can generate API keys through either the dashboard or CLI to authenticate with Arcade. + +You'll need an Arcade account - if you haven't created one yet, you can sign up here. Once you have an account, you can generate API keys through either the dashboard or CLI. @@ -108,3 +113,4 @@ Once you have your API key, you can: - [Start using tools](/get-started/quickstarts/call-tool-agent) - [Create custom tools](/guides/create-tools/tool-basics/build-mcp-server) +``` \ No newline at end of file