From 7c3b70810ade2baa6460bf6ccadd65f33e509298 Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 12:13:59 -0400 Subject: [PATCH 01/11] docs(agent-plugin): add install guides for the Arcade agent plugin Adds a Get Started section for installing Arcade through the agent plugin: an overview with the one-command install and per-agent verification in tabs, a Claude Desktop connector guide, a tools-only guide for any MCP client, and a page on what changes when a trial becomes a team rollout. The existing MCP Clients guides all assume you want your own gateway and an API key, so each one now points trial users at the plugin, and the plugin pages point back for anyone who needs their own tool list and identities. Every install surface resolves from two constants in lib/agent-plugin.ts. Pages reference them as {{TOKEN}} placeholders and a remark plugin resolves those in prose, code blocks, and link targets, so the staging gateway URL becomes a one-line change at launch. The Cursor and VS Code one-click links are derived from the same URL rather than pasted, and the plugin rewrites the raw source Nextra exports so the copy-page button and the markdown the site serves to agents get resolved values too. Co-Authored-By: Claude Opus 5 (1M context) --- app/en/get-started/_meta.tsx | 1 + app/en/get-started/agent-plugin/_meta.tsx | 18 ++ .../agent-plugin/any-mcp-client/page.mdx | 31 ++++ .../agent-plugin/claude-desktop/page.mdx | 59 +++++++ app/en/get-started/agent-plugin/page.mdx | 154 ++++++++++++++++++ .../agent-plugin/team-rollout/page.mdx | 47 ++++++ .../mcp-clients/claude-code/page.mdx | 7 + .../mcp-clients/claude-desktop/page.mdx | 8 + .../get-started/mcp-clients/cursor/page.mdx | 7 + .../mcp-clients/github-copilot/page.mdx | 7 + app/en/get-started/mcp-clients/page.mdx | 6 +- .../mcp-clients/visual-studio-code/page.mdx | 9 +- lib/agent-plugin.ts | 36 ++++ lib/remark-substitute.ts | 69 ++++++++ next.config.ts | 2 + tests/broken-link-check.test.ts | 11 +- tests/remark-substitute.test.ts | 100 ++++++++++++ 17 files changed, 569 insertions(+), 3 deletions(-) create mode 100644 app/en/get-started/agent-plugin/_meta.tsx create mode 100644 app/en/get-started/agent-plugin/any-mcp-client/page.mdx create mode 100644 app/en/get-started/agent-plugin/claude-desktop/page.mdx create mode 100644 app/en/get-started/agent-plugin/page.mdx create mode 100644 app/en/get-started/agent-plugin/team-rollout/page.mdx create mode 100644 lib/agent-plugin.ts create mode 100644 lib/remark-substitute.ts create mode 100644 tests/remark-substitute.test.ts diff --git a/app/en/get-started/_meta.tsx b/app/en/get-started/_meta.tsx index 93c4fc3af..589f4674e 100644 --- a/app/en/get-started/_meta.tsx +++ b/app/en/get-started/_meta.tsx @@ -2,6 +2,7 @@ import type { MetaRecord } from "nextra"; export const meta: MetaRecord = { "about-arcade": "About Arcade", + "agent-plugin": "Agent Plugin", setup: "Setup", quickstarts: "Quickstarts", "agent-frameworks": "Agent Frameworks", diff --git a/app/en/get-started/agent-plugin/_meta.tsx b/app/en/get-started/agent-plugin/_meta.tsx new file mode 100644 index 000000000..2184cc123 --- /dev/null +++ b/app/en/get-started/agent-plugin/_meta.tsx @@ -0,0 +1,18 @@ +import type { MetaRecord } from "nextra"; + +export const meta: MetaRecord = { + index: { + title: "Overview", + }, + "claude-desktop": { + title: "Claude Desktop", + }, + "any-mcp-client": { + title: "Any MCP client", + }, + "team-rollout": { + title: "From trial to team rollout", + }, +}; + +export default meta; diff --git a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx new file mode 100644 index 000000000..f2e115a1a --- /dev/null +++ b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx @@ -0,0 +1,31 @@ +--- +title: "Install Arcade in any MCP client" +description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key." +--- + +import { Callout } from "nextra/components"; + +# Install Arcade in any MCP client + +Any client that can talk to a Streamable HTTP MCP server can use Arcade tools, including OpenCode and clients that do not support agent plugins at all. Add this URL as an MCP server: + +```text +{{ARCADE_PLUGIN_GATEWAY_URL}} +``` + +That gives you tools only. The plugin's skills, commands, and `arcade-operator` subagent need a client that loads [agent plugins](https://agent-plugins.org). See the [install guide](/get-started/agent-plugin) for the list. + +## Sign in to your apps + +No API keys. The first task that touches an app returns a browser sign-in link. Approve it once and Arcade holds the token from then on. + +## Try it + +- "What's on my calendar tomorrow?" +- "What apps can Arcade use?" + +## Next steps + +- [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex +- [Connect to MCP clients](/get-started/mcp-clients): point a client at a gateway you control, with your own tool list +- [From trial to team rollout](/get-started/agent-plugin/team-rollout): what changes when a team depends on the workflow diff --git a/app/en/get-started/agent-plugin/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/claude-desktop/page.mdx new file mode 100644 index 000000000..ac577875a --- /dev/null +++ b/app/en/get-started/agent-plugin/claude-desktop/page.mdx @@ -0,0 +1,59 @@ +--- +title: "Install Arcade in Claude Desktop" +description: "Add Arcade tools to Claude Desktop as a custom connector, so Claude can act across the apps you connect." +--- + +import { Callout } from "nextra/components"; + +# Install Arcade in Claude Desktop + +Claude Desktop Chat does not install agent plugins, so it gets Arcade tools through a connector instead. You still sign in to each app in the browser, and you still need no API key. You just do not get the plugin's skills, commands, or `arcade-operator` subagent. + + + + +Connect Claude Desktop to Arcade and run a task against one of your apps. + + + + + +1. Claude Desktop, updated to a version that supports custom connectors + + + + + + + Using Cowork or Claude Code inside the Claude desktop app? Those do load agent + plugins. Install the full plugin with [one + command](/get-started/agent-plugin) instead. + + +## Add Arcade as a custom connector + +1. Open **Settings → Connectors** +2. Click **Add custom connector** +3. Paste the Arcade gateway URL: + +```text +{{ARCADE_PLUGIN_GATEWAY_URL}} +``` + +4. Save, then start a new conversation + +## Sign in to your apps + +The first time Claude reaches for an app, it returns a browser sign-in link. Approve it and Arcade holds the token from then on, so you only do this once per app. + +## Try it + +- "What's on my calendar tomorrow?" +- "What apps can Arcade use?" +- "Summarize the unread email from this week." + +## Next steps + +- [Install the agent plugin](/get-started/agent-plugin): the full experience in Cursor, Claude Code, VS Code, Copilot CLI, or Codex +- [From trial to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto a gateway you control +- [Use Arcade in Claude Desktop with your own gateway](/get-started/mcp-clients/claude-desktop): pick exactly which tools Claude can call diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx new file mode 100644 index 000000000..0a475a261 --- /dev/null +++ b/app/en/get-started/agent-plugin/page.mdx @@ -0,0 +1,154 @@ +--- +title: "Install the Arcade agent plugin" +description: "Install Arcade in Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex with one command. Your agent gets tools for every app you connect, with browser sign-in and no API keys." +--- + +import { Callout, Tabs } from "nextra/components"; + +# Install the Arcade agent plugin + +The Arcade agent plugin puts Arcade inside your coding agent with one command. Your agent gains tools for email, calendar, chat, issues, docs, and dozens of other apps, and you sign in to each app in the browser the first time it comes up. No API keys to create, no gateway to configure. + + + + +Install the Arcade agent plugin in your coding agent and run your first task against a connected app. + + + + + +1. [Node.js](https://nodejs.org) so you can run `npx` +2. A supported agent: Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex + + + + + + + The plugin is built for personal use and evaluation. When you are ready to put + a workflow in front of a team, read [from trial to team + rollout](/get-started/agent-plugin/team-rollout). You will want your own [MCP + Gateway](/operate/governance/mcp-gateways) with a curated tool list and your + own identity provider. + + +## Install + +```bash +{{ARCADE_PLUGIN_INSTALL_COMMAND}} +``` + +The CLI detects the supported agents on your machine and installs to each one. To install to a single agent, pass `--target`: + +```bash +{{ARCADE_PLUGIN_INSTALL_COMMAND}} --target cursor +{{ARCADE_PLUGIN_INSTALL_COMMAND}} --target claude-code +{{ARCADE_PLUGIN_INSTALL_COMMAND}} --target vscode +{{ARCADE_PLUGIN_INSTALL_COMMAND}} --target copilot +{{ARCADE_PLUGIN_INSTALL_COMMAND}} --target codex +``` + +To see what an install would write without changing anything: + +```bash +npx plugins discover {{ARCADE_PLUGIN_REPO}} +``` + +Reload your agent afterwards if it does not pick up the plugin on its own. + +Using Claude Desktop or an agent that is not listed here? See [Claude Desktop](/get-started/agent-plugin/claude-desktop) or [any MCP client](/get-started/agent-plugin/any-mcp-client). + +## Verify the install per agent + + + + +Reload the window, open **Customize**, and confirm you see two skills, the `arcade-operator` agent, and the `arcade` MCP server. + +Cursor reads the plugin's Cursor manifest, so it loads the skills, the operator subagent, the slash commands, an always-on rule, and a session hook. + +**Tools only:** if you want Arcade tools without the skills and subagent, use the [one-click MCP install link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}). + + + + +Run `claude plugin` and enable the plugin if Claude Code prompts you. Then run `/mcp` and confirm that the server named `arcade` is connected. + +The same install works in Claude Cowork and the Claude Code desktop app once you enable the plugin there. + + + The plugin registers one MCP server, named `arcade`. If your agent already has + other Arcade MCP connectors configured, the tool names collide and your agent + may call the wrong gateway. Disable the other Arcade connectors while you try + the plugin. + + + + + +Set `chat.plugins.enabled` to `true` if agent plugins are not enabled yet, then confirm the two skills and the `arcade` MCP server appear. + +VS Code loads the portable part of the plugin: the skills and the gateway. It does not register the `arcade-operator` subagent. + +If you already installed the plugin through GitHub Copilot CLI, VS Code may discover that copy too. Install in one place only. + +**Tools only:** use the [one-click MCP install link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) to add the gateway without the skills. + + + + +Confirm the two skills, the `arcade` MCP server, and the `arcade-operator` subagent are available. + +Copilot CLI reads the portable plugin manifest and also discovers the operator subagent. It does not load the plugin's session hooks, which use Claude Code's hook format. The skills carry the same guidance on this agent. + + + + +Confirm the two skills appear and the `arcade` MCP server is connected. Codex does not load the `arcade-operator` subagent. + +Codex and ChatGPT share one plugin directory, so a single install shows up on both surfaces. + + + + +## Sign in to your apps + +You never give your agent an API key or a password. The first task that touches an app returns a sign-in link, you approve it in the browser, and Arcade holds the token from then on. Ask your agent to run `/arcade-status` to list your connected apps, or `/arcade-connect google` to connect one ahead of time. + +## What you get in each agent + +Every install connects to the same Arcade gateway and gets the same tools. What differs is how much of the rest of the plugin each agent can load. + +| Agent | Tools | Skills | Subagent | Commands | Rule | Hooks | +| --- | :--: | :--: | :--: | :--: | :--: | :--: | +| Cursor | ✅ | 2 | ✅ | 3 | ✅ | ✅ | +| Claude Code | ✅ | 2 | ✅ | 3 | — | ✅ | +| Claude Cowork | ✅ | 2 | ✅ | 3 | — | ✅ | +| GitHub Copilot CLI | ✅ | 2 | ✅ | — | — | — | +| VS Code | ✅ | 2 | — | — | — | — | +| Codex and ChatGPT | ✅ | 2 | — | — | — | — | +| Claude Desktop | ✅ | — | — | — | — | — | +| Any other MCP client | ✅ | — | — | — | — | — | + +The two skills are `try-arcade`, which runs real work across your connected apps, and `scale-arcade`, which walks you through a team rollout. The subagent is `arcade-operator`, which keeps tool discovery out of your main conversation. The commands are `/arcade-apps`, `/arcade-connect`, and `/arcade-status`. + +The columns thin out because the [Agent Plugins](https://agent-plugins.org) 1.0 specification only makes skills and MCP servers portable. Commands, subagents, hooks, and editor rules are specific to each agent, so the plugin ships them where the agents that support them will find them. + +## Try it + +Ask your agent for an outcome rather than naming a tool: + +- "What's on my calendar tomorrow?" +- "Summarize the unread email from this week." +- "Draft a reply to that thread, then wait for me before sending it." +- "What can Arcade do?" + +Your agent asks you to confirm before it sends, creates, or deletes anything. + +## Next steps + +- [From trial to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto your own gateway +- [Connect to MCP clients](/get-started/mcp-clients): configure a client against a gateway you control +- [Integrations catalog](/resources/integrations): every app and toolkit Arcade supports +- [Agentic development](/get-started/setup/connect-arcade-docs): point your agent at these docs with `llms.txt` diff --git a/app/en/get-started/agent-plugin/team-rollout/page.mdx b/app/en/get-started/agent-plugin/team-rollout/page.mdx new file mode 100644 index 000000000..237e5f613 --- /dev/null +++ b/app/en/get-started/agent-plugin/team-rollout/page.mdx @@ -0,0 +1,47 @@ +--- +title: "From trial to team rollout" +description: "What changes when an Arcade workflow you proved with the agent plugin becomes something a team depends on: your own MCP Gateway, a curated tool list, and your own identity provider." +--- + +import { Callout } from "nextra/components"; + +# From trial to team rollout + +The [agent plugin](/get-started/agent-plugin) serves one person evaluating Arcade. It points every install at a shared Arcade gateway, offers a broad tool selection, and identifies you by the apps you signed in to yourself. That is exactly what you want while you are finding out whether a workflow is worth having. + +Once a team depends on that workflow, three things change. This page names them and points at the setup for each. + + + If your agent loaded the plugin's skills, ask it to run `/scale-arcade`. The + skill walks through the same decisions interactively against your own + workspace. + + +## You want your own gateway + +An [MCP Gateway](/operate/governance/mcp-gateways) is the endpoint your team's clients connect to, and it is where you decide what those clients can do. Create one per project in the [Arcade dashboard](https://app.arcade.dev) so each project gets a URL you control, its own tool list, and its own audit trail. + +Clients connect to it exactly the way they connected to the plugin's gateway. See the [MCP client guides](/get-started/mcp-clients) for Cursor, Claude Code, Claude Desktop, VS Code, and Copilot. + +## You want a curated tool list + +The gateway is the filter that decides which tools reach your agent. Open the **Allowed Tools** picker on your gateway and select across everything in scope: Arcade-hosted toolkits from the [integrations catalog](/resources/integrations), [remote MCP servers](/operate/governance/remote-mcp-servers) you register, and your own [custom MCP servers](/build/create-tools/tool-basics/build-mcp-server) deployed with [Arcade Deploy](/build/arcade-deploy). + +A smaller, deliberate tool list makes agents more accurate, not less capable. Save the gateway and connected clients see the new list on their next request, with no restart. + +Beyond the allowlist, [contextual access](/operate/governance/contextual-access) lets you allow or deny each individual tool call as it arrives, and [audit logs](/operate/governance/audit-logs) and [tool executions](/operate/governance/tool-executions) show you what actually ran. + +## You want your own user identities + +During a trial, you are the only user, and browser sign-in is enough. In production, each of your end users needs their own authorization, so an agent acting for one person can never reach another person's data. + +Configure a [User Source](/operate/identity/user-sources) on your gateway and Arcade redirects each end user to your existing identity provider, whether that is Entra ID, Okta, Auth0, Clerk, or another OIDC provider, then identifies them by an OIDC subject claim. + +## Going beyond MCP + +Connecting a client to a gateway takes the least work, and for many teams it is the whole rollout. When you are building your own product rather than configuring an agent, call Arcade directly instead: + +- [Arcade API reference](/references/api): the REST surface for tool calling and authorization +- [Agent frameworks](/get-started/agent-frameworks) for LangChain, CrewAI, OpenAI Agents, Google ADK, Mastra, Vercel AI SDK, and more +- [Get an API key](/get-started/setup/api-keys): required once you are calling Arcade from your own code +- [Build user-facing agents](/build/user-facing-agents): patterns for handling authorization on behalf of your users diff --git a/app/en/get-started/mcp-clients/claude-code/page.mdx b/app/en/get-started/mcp-clients/claude-code/page.mdx index fcfe7080b..67dcea789 100644 --- a/app/en/get-started/mcp-clients/claude-code/page.mdx +++ b/app/en/get-started/mcp-clients/claude-code/page.mdx @@ -3,6 +3,13 @@ import { SignupLink } from "@/app/_components/analytics"; # Use Arcade in Claude Code + + **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + installs in one command, needs no API key, and signs you in to each app in the + browser. This guide is for pointing Claude Code at a gateway you control, with + your own tool list and your own end-user identities. + + diff --git a/app/en/get-started/mcp-clients/claude-desktop/page.mdx b/app/en/get-started/mcp-clients/claude-desktop/page.mdx index 827c84356..f7dd3c3af 100644 --- a/app/en/get-started/mcp-clients/claude-desktop/page.mdx +++ b/app/en/get-started/mcp-clients/claude-desktop/page.mdx @@ -34,6 +34,14 @@ export const STEP_7_LIGHT_HEIGHT = 2450; # Use Arcade in Claude Desktop + + **Just trying Arcade?** Add Arcade to Claude Desktop [as a + connector](/get-started/agent-plugin/claude-desktop), which needs no API key + and signs you in to each app in the browser. This guide is for pointing Claude + Desktop at a gateway you control, with your own tool list and your own + end-user identities. + + diff --git a/app/en/get-started/mcp-clients/cursor/page.mdx b/app/en/get-started/mcp-clients/cursor/page.mdx index 9e852f132..630922c7a 100644 --- a/app/en/get-started/mcp-clients/cursor/page.mdx +++ b/app/en/get-started/mcp-clients/cursor/page.mdx @@ -8,6 +8,13 @@ import { SignupLink } from "@/app/_components/analytics"; # Use Arcade in Cursor + + **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + installs in one command, needs no API key, and signs you in to each app in the + browser. This guide is for pointing Cursor at a gateway you control, with your + own tool list and your own end-user identities. + + Cursor is an MCP client. Point it at an Arcade [MCP Gateway](/operate/governance/mcp-gateways) URL over the Streamable HTTP transport and Cursor's agent can call any tool you selected on that gateway — GitHub, Linear, Gmail, Slack, or any other toolkit from the [Arcade integrations catalog](/resources/integrations), plus tools from your own [custom MCP servers](/build/create-tools/tool-basics/build-mcp-server). diff --git a/app/en/get-started/mcp-clients/github-copilot/page.mdx b/app/en/get-started/mcp-clients/github-copilot/page.mdx index 7d73779ee..67f02aff5 100644 --- a/app/en/get-started/mcp-clients/github-copilot/page.mdx +++ b/app/en/get-started/mcp-clients/github-copilot/page.mdx @@ -20,6 +20,13 @@ export const VISUAL_STUDIO_STEP_6_HEIGHT = 360; # Use Arcade in GitHub Copilot + + **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + installs into Copilot CLI in one command, needs no API key, and signs you in + to each app in the browser. This guide is for pointing Copilot at a gateway + you control, with your own tool list and your own end-user identities. + + diff --git a/app/en/get-started/mcp-clients/page.mdx b/app/en/get-started/mcp-clients/page.mdx index f9e3177b8..ac1f8af85 100644 --- a/app/en/get-started/mcp-clients/page.mdx +++ b/app/en/get-started/mcp-clients/page.mdx @@ -9,6 +9,10 @@ import { MCPClientGrid } from "./mcp-client-grid"; You can connect [Arcade MCP servers](/resources/integrations) to MCP-compatible clients and development environments to unlock powerful flows for your agents. -Every supported MCP client — Cursor, Claude Desktop, Claude Code, VS Code, GitHub Copilot, and Copilot Studio — connects to an Arcade [MCP Gateway](/operate/governance/mcp-gateways) over the Streamable HTTP transport. The gateway decides which tools the client can call: pick from Arcade-hosted toolkits (GitHub, Linear, Gmail, Slack, Google Calendar, Notion, Jira, Confluence, and dozens more in the [integrations catalog](/resources/integrations)), from [remote MCP servers](/operate/governance/remote-mcp-servers) you registered, and from your own [custom MCP servers](/build/create-tools/tool-basics/build-mcp-server) hosted with [Arcade Deploy](/build/arcade-deploy). +Every supported MCP client, including Cursor, Claude Desktop, Claude Code, VS Code, GitHub Copilot, and Copilot Studio, connects to an Arcade [MCP Gateway](/operate/governance/mcp-gateways) over the Streamable HTTP transport. The gateway decides which tools the client can call: pick from Arcade-hosted toolkits (GitHub, Linear, Gmail, Slack, Google Calendar, Notion, Jira, Confluence, and dozens more in the [integrations catalog](/resources/integrations)), from [remote MCP servers](/operate/governance/remote-mcp-servers) you registered, and from your own [custom MCP servers](/build/create-tools/tool-basics/build-mcp-server) hosted with [Arcade Deploy](/build/arcade-deploy). + +## Just trying Arcade out? + +These guides assume you want your own gateway, with a tool list and end-user identities you control. If you are evaluating Arcade for yourself, the [Arcade agent plugin](/get-started/agent-plugin) is faster: one command installs it into Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex, there is no API key to create, and you sign in to each app in the browser. diff --git a/app/en/get-started/mcp-clients/visual-studio-code/page.mdx b/app/en/get-started/mcp-clients/visual-studio-code/page.mdx index 1957a3d50..96d15ca8e 100644 --- a/app/en/get-started/mcp-clients/visual-studio-code/page.mdx +++ b/app/en/get-started/mcp-clients/visual-studio-code/page.mdx @@ -5,6 +5,13 @@ import { SignupLink } from "@/app/_components/analytics"; In this guide, you'll learn how to connect Visual Studio Code to an Arcade MCP Gateway. + + **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + installs in one command, needs no API key, and signs you in to each app in the + browser. This guide is for pointing VS Code at a gateway you control, with + your own tool list and your own end-user identities. + + **Production end users with their own identities?** If your end users already sign in to Entra ID, Okta, Auth0, Clerk, or another OIDC provider, configure a [User Source](/operate/identity/user-sources) on your gateway. Arcade redirects each end user to your identity provider on sign-in and identifies them by an OIDC subject claim. @@ -62,4 +69,4 @@ Note: if you are using the Arcade Header auth mode for your MCP Gateway, you wil } ``` -You will not see the authentication prompts when you start the MCP Server in Visual Studio Code because the API Key is passed directly. +You will not see the authentication prompts when you start the MCP Server in Visual Studio Code because the config passes the API key directly. diff --git a/lib/agent-plugin.ts b/lib/agent-plugin.ts new file mode 100644 index 000000000..8f5aefc31 --- /dev/null +++ b/lib/agent-plugin.ts @@ -0,0 +1,36 @@ +/** + * Every install surface for the Arcade agent plugin resolves from the values + * here. The gateway still points at staging, so swapping these two constants + * at public launch updates the prose, the copyable commands, and the one-click + * install links together. + * + * MDX pages reach these through `{{TOKEN}}` placeholders — see + * `lib/remark-substitute.ts` for the token list. + */ +export const AGENT_PLUGIN_GATEWAY_URL = + "https://api.bosslevel.dev/mcp/all-optimized"; + +export const AGENT_PLUGIN_REPO = "ArcadeAI/arcade-plugin"; + +export const AGENT_PLUGIN_INSTALL_COMMAND = `npx plugins add ${AGENT_PLUGIN_REPO}`; + +/** + * Cursor takes its MCP config as base64-encoded JSON in a query parameter. + */ +export const AGENT_PLUGIN_CURSOR_INSTALL_LINK = (() => { + const config = JSON.stringify({ url: AGENT_PLUGIN_GATEWAY_URL }); + const encoded = Buffer.from(config, "utf-8").toString("base64"); + return `https://cursor.com/install-mcp?name=arcade&config=${encoded}`; +})(); + +/** + * VS Code takes the same JSON percent-encoded instead, and wants the transport + * named explicitly. + */ +export const AGENT_PLUGIN_VSCODE_INSTALL_LINK = (() => { + const config = JSON.stringify({ + type: "http", + url: AGENT_PLUGIN_GATEWAY_URL, + }); + return `https://vscode.dev/redirect/mcp/install?name=arcade&config=${encodeURIComponent(config)}`; +})(); diff --git a/lib/remark-substitute.ts b/lib/remark-substitute.ts new file mode 100644 index 000000000..fb90af329 --- /dev/null +++ b/lib/remark-substitute.ts @@ -0,0 +1,69 @@ +import type { Root } from "mdast"; +import { visit } from "unist-util-visit"; +import { + AGENT_PLUGIN_CURSOR_INSTALL_LINK, + AGENT_PLUGIN_GATEWAY_URL, + AGENT_PLUGIN_INSTALL_COMMAND, + AGENT_PLUGIN_REPO, + AGENT_PLUGIN_VSCODE_INSTALL_LINK, +} from "./agent-plugin"; + +/** + * Tokens an MDX page can write as `{{NAME}}`. Prose, inline code, fenced code + * blocks, and link targets all resolve them, which is why pages use these + * instead of importing the constants directly — a fenced code block cannot + * interpolate JavaScript. + */ +export const substitutions: Record = { + ARCADE_PLUGIN_GATEWAY_URL: AGENT_PLUGIN_GATEWAY_URL, + ARCADE_PLUGIN_REPO: AGENT_PLUGIN_REPO, + ARCADE_PLUGIN_INSTALL_COMMAND: AGENT_PLUGIN_INSTALL_COMMAND, + ARCADE_PLUGIN_CURSOR_INSTALL_LINK: AGENT_PLUGIN_CURSOR_INSTALL_LINK, + ARCADE_PLUGIN_VSCODE_INSTALL_LINK: AGENT_PLUGIN_VSCODE_INSTALL_LINK, +}; + +/** + * Unknown tokens are left alone. Auth provider reference pages already write + * OAuth placeholders such as `{{client_id}}`, and those have to survive to the + * rendered page. + */ +export function applySubstitutions(value: string): string { + let result = value; + for (const [token, replacement] of Object.entries(substitutions)) { + result = result.split(`{{${token}}}`).join(replacement); + } + return result; +} + +/** + * The shape of a VFile that this plugin touches. Declared here so the plugin + * does not depend on `vfile` directly. + */ +type SourceFile = { value?: unknown }; + +export function remarkSubstitute() { + return (tree: Root, file: SourceFile) => { + // Nextra exports the untouched source string alongside the AST, and that + // copy is what feeds the "copy page" button and the markdown the site + // serves to agents. Substitute there too, or those readers get the raw + // token. + if (typeof file.value === "string") { + file.value = applySubstitutions(file.value); + } + + visit(tree, (node) => { + if ( + node.type === "text" || + node.type === "inlineCode" || + node.type === "code" + ) { + node.value = applySubstitutions(node.value); + return; + } + + if (node.type === "link" || node.type === "definition") { + node.url = applySubstitutions(node.url); + } + }); + }; +} diff --git a/next.config.ts b/next.config.ts index c6a53a2a5..e9da6d70c 100644 --- a/next.config.ts +++ b/next.config.ts @@ -2,6 +2,7 @@ import type { NextConfig } from "next"; import nextra from "nextra"; import { withLlmsTxt } from "./lib/next-plugin-llmstxt"; import { remarkGlossary } from "./lib/remark-glossary"; +import { remarkSubstitute } from "./lib/remark-substitute"; import { stripMarkdownFromSwcPageExtensions } from "./lib/swc-page-extensions"; import { redirects } from "./redirects"; @@ -16,6 +17,7 @@ const withNextra = nextra({ remarkGlossary, { glossaryPath: "./app/en/resources/glossary/page.mdx" }, ], + remarkSubstitute, ], }, }); diff --git a/tests/broken-link-check.test.ts b/tests/broken-link-check.test.ts index 593a89eac..d505e97da 100644 --- a/tests/broken-link-check.test.ts +++ b/tests/broken-link-check.test.ts @@ -3,6 +3,7 @@ import { join } from "node:path"; import fg from "fast-glob"; import { scanURLs, validateFiles } from "next-validate-link"; import { expect, test } from "vitest"; +import { applySubstitutions } from "@/lib/remark-substitute"; import { INTEGRATION_CATEGORIES, normalizeToolkitId, @@ -256,7 +257,15 @@ test( return false; }; - const found = await validateFiles(await fg("app/**/*.{md,mdx}"), { + // Pages write `{{TOKEN}}` placeholders for values that live in one place in + // the codebase, so resolve them before validating or the checker sees the + // literal token as a relative path. + const files = (await fg("app/**/*.{md,mdx}")).map((path) => ({ + path, + content: applySubstitutions(readFileSync(path, "utf-8")), + })); + + const found = await validateFiles(files, { scanned, whitelist, }); diff --git a/tests/remark-substitute.test.ts b/tests/remark-substitute.test.ts new file mode 100644 index 000000000..cf8f1ed5f --- /dev/null +++ b/tests/remark-substitute.test.ts @@ -0,0 +1,100 @@ +import type { Code, Link, Paragraph, Root, Text } from "mdast"; +import { describe, expect, it } from "vitest"; +import { AGENT_PLUGIN_GATEWAY_URL } from "@/lib/agent-plugin"; +import { applySubstitutions, remarkSubstitute } from "@/lib/remark-substitute"; + +const substitute = remarkSubstitute(); + +describe("applySubstitutions", () => { + it("replaces a known token", () => { + expect(applySubstitutions("Paste {{ARCADE_PLUGIN_GATEWAY_URL}}")).toBe( + `Paste ${AGENT_PLUGIN_GATEWAY_URL}` + ); + }); + + it("replaces every occurrence of a token", () => { + const result = applySubstitutions( + "{{ARCADE_PLUGIN_REPO}} and {{ARCADE_PLUGIN_REPO}}" + ); + expect(result).toBe("ArcadeAI/arcade-plugin and ArcadeAI/arcade-plugin"); + }); + + it("leaves unknown tokens alone so OAuth placeholders survive", () => { + expect(applySubstitutions('client_id: "{{client_id}}"')).toBe( + 'client_id: "{{client_id}}"' + ); + }); + + it("derives the one-click install links from the gateway URL", () => { + const cursor = applySubstitutions("{{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}"); + const encoded = new URL(cursor).searchParams.get("config") ?? ""; + const config = JSON.parse(Buffer.from(encoded, "base64").toString("utf-8")); + expect(config.url).toBe(AGENT_PLUGIN_GATEWAY_URL); + + const vscode = applySubstitutions("{{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}"); + const vscodeConfig = JSON.parse( + new URL(vscode).searchParams.get("config") ?? "" + ); + expect(vscodeConfig).toEqual({ + type: "http", + url: AGENT_PLUGIN_GATEWAY_URL, + }); + }); +}); + +describe("remarkSubstitute", () => { + it("substitutes in the raw source Nextra exports for copy-page and agents", () => { + const file = { + value: "Paste {{ARCADE_PLUGIN_GATEWAY_URL}} as an MCP server.", + }; + const tree: Root = { type: "root", children: [] }; + + substitute(tree, file); + + expect(file.value).toBe( + `Paste ${AGENT_PLUGIN_GATEWAY_URL} as an MCP server.` + ); + }); + + it("substitutes inside fenced code blocks", () => { + const code: Code = { + type: "code", + lang: "text", + value: "{{ARCADE_PLUGIN_GATEWAY_URL}}", + }; + const tree: Root = { type: "root", children: [code] }; + + substitute(tree, {}); + + expect(code.value).toBe(AGENT_PLUGIN_GATEWAY_URL); + }); + + it("substitutes inside link targets", () => { + const link: Link = { + type: "link", + url: "{{ARCADE_PLUGIN_GATEWAY_URL}}", + children: [], + }; + const paragraph: Paragraph = { type: "paragraph", children: [link] }; + const tree: Root = { type: "root", children: [paragraph] }; + + substitute(tree, {}); + + expect(link.url).toBe(AGENT_PLUGIN_GATEWAY_URL); + }); + + it("substitutes inside prose", () => { + const text: Text = { + type: "text", + value: "Run {{ARCADE_PLUGIN_INSTALL_COMMAND}} to start.", + }; + const paragraph: Paragraph = { type: "paragraph", children: [text] }; + const tree: Root = { type: "root", children: [paragraph] }; + + substitute(tree, {}); + + expect(text.value).toBe( + "Run npx plugins add ArcadeAI/arcade-plugin to start." + ); + }); +}); From b7ecaabeeea8ceae3eb9f28558864e81d0d4ebab Mon Sep 17 00:00:00 2001 From: "arcade-docs-bot[bot]" <321924871+arcade-docs-bot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 16:15:28 +0000 Subject: [PATCH 02/11] =?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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/public/llms.txt b/public/llms.txt index ce30ec34c..c88332e2b 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -129,6 +129,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Evaluate Tools](https://docs.arcade.dev/en/build/create-tools/evaluate-tools): Documentation page - [Examples](https://docs.arcade.dev/en/resources/examples): This documentation page provides a collection of example applications that utilize Arcade's tools and MCP servers, showcasing various real-world scenarios and integration patterns. Users can explore complete source code and setup instructions for each example, enabling them to quickly understand and implement similar projects. - [Frequently Asked Questions](https://docs.arcade.dev/en/resources/faq): This documentation page provides answers to common questions about the Arcade platform, including how to create and contribute tools, the differences between various API keys, and authentication methods. Users can learn how to build custom tools, manage API keys for team collaboration, and understand +- [From trial to team rollout](https://docs.arcade.dev/en/get-started/agent-plugin/team-rollout): Documentation page - [Get Formatted Tool Definitions](https://docs.arcade.dev/en/build/tool-calling/custom-apps/get-tool-definitions): Documentation page - [Getting Your API Key](https://docs.arcade.dev/en/get-started/setup/api-keys): This documentation page guides users on how to obtain and manage their Arcade API key, detailing the steps for generating keys through both the Arcade dashboard and CLI. It emphasizes the importance of securely storing API keys, as they serve as administrator credentials that grant access to - [Governance](https://docs.arcade.dev/en/operate/governance): Documentation page @@ -138,6 +139,9 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Hybrid MCP servers](https://docs.arcade.dev/en/operate/deploy/on-prem): Documentation page - [Identity](https://docs.arcade.dev/en/operate/identity): Documentation page - [In Custom Applications](https://docs.arcade.dev/en/build/tool-calling/custom-apps): Documentation page +- [Install Arcade in any MCP client](https://docs.arcade.dev/en/get-started/agent-plugin/any-mcp-client): Documentation page +- [Install Arcade in Claude Desktop](https://docs.arcade.dev/en/get-started/agent-plugin/claude-desktop): Documentation page +- [Install the Arcade agent plugin](https://docs.arcade.dev/en/get-started/agent-plugin): Documentation page - [Mastra](https://docs.arcade.dev/en/get-started/agent-frameworks/mastra): This documentation page guides users in building a TypeScript AI agent using the Mastra framework, enabling interaction with Gmail and Slack through Arcade tools. Users will learn to create an agent capable of reading emails, sending messages, and summarizing emails for Slack, - [MCP Gateways](https://docs.arcade.dev/en/operate/governance/mcp-gateways): Documentation page - [Microsoft Entra ID](https://docs.arcade.dev/en/operate/identity/user-sources/microsoft-entra-id): Documentation page From 4bdf47f2f2dc11272f9e2718b67f20e6d7abdee9 Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 12:22:02 -0400 Subject: [PATCH 03/11] docs(agent-plugin): say plainly that Arcade needs an account The pages implied the plugin needs no account at all, conflating "no API key" with "no signup". An Arcade account is required; what is different about this path is the timing. You install first, and the link your agent hands you on its first app task both creates the account and authorizes the app. Adds "Claude Desktop" to the Vale vocabulary so the new page title stops reading as stray capitalization. Co-Authored-By: Claude Opus 5 (1M context) --- app/en/get-started/agent-plugin/any-mcp-client/page.mdx | 4 ++-- app/en/get-started/agent-plugin/claude-desktop/page.mdx | 6 ++++-- app/en/get-started/agent-plugin/page.mdx | 8 +++++++- styles/config/vocabularies/Arcade/accept.txt | 1 + 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx index f2e115a1a..5c0792c2d 100644 --- a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx +++ b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx @@ -3,7 +3,7 @@ title: "Install Arcade in any MCP client" description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key." --- -import { Callout } from "nextra/components"; +import { SignupLink } from "@/app/_components/analytics"; # Install Arcade in any MCP client @@ -17,7 +17,7 @@ That gives you tools only. The plugin's skills, commands, and `arcade-operator` ## Sign in to your apps -No API keys. The first task that touches an app returns a browser sign-in link. Approve it once and Arcade holds the token from then on. +No API keys. The first task that touches an app returns a browser link. Following it signs you in to Arcade, creating your account if you do not have one yet, and asks you to authorize the app. Approve it once and Arcade holds the token from then on. ## Try it diff --git a/app/en/get-started/agent-plugin/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/claude-desktop/page.mdx index ac577875a..a9ff771f0 100644 --- a/app/en/get-started/agent-plugin/claude-desktop/page.mdx +++ b/app/en/get-started/agent-plugin/claude-desktop/page.mdx @@ -4,10 +4,11 @@ description: "Add Arcade tools to Claude Desktop as a custom connector, so Claud --- import { Callout } from "nextra/components"; +import { SignupLink } from "@/app/_components/analytics"; # Install Arcade in Claude Desktop -Claude Desktop Chat does not install agent plugins, so it gets Arcade tools through a connector instead. You still sign in to each app in the browser, and you still need no API key. You just do not get the plugin's skills, commands, or `arcade-operator` subagent. +Claude Desktop Chat does not install agent plugins, so it gets Arcade tools through a connector instead. You still authorize each app in the browser, and you still need no API key. You just do not get the plugin's skills, commands, or `arcade-operator` subagent. @@ -19,6 +20,7 @@ Connect Claude Desktop to Arcade and run a task against one of your apps. 1. Claude Desktop, updated to a version that supports custom connectors +2. An Arcade account, which you can create when Claude first asks you to authenticate @@ -44,7 +46,7 @@ Connect Claude Desktop to Arcade and run a task against one of your apps. ## Sign in to your apps -The first time Claude reaches for an app, it returns a browser sign-in link. Approve it and Arcade holds the token from then on, so you only do this once per app. +The first time Claude reaches for an app, it returns a browser link. Following it signs you in to Arcade, creating your account if you do not have one yet, and asks you to authorize the app Claude wants to use. Approve it and Arcade holds the token from then on, so you only do this once per app. ## Try it diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index 0a475a261..cd61e0389 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -4,11 +4,14 @@ description: "Install Arcade in Cursor, Claude Code, VS Code, GitHub Copilot CLI --- import { Callout, Tabs } from "nextra/components"; +import { SignupLink } from "@/app/_components/analytics"; # Install the Arcade agent plugin The Arcade agent plugin puts Arcade inside your coding agent with one command. Your agent gains tools for email, calendar, chat, issues, docs, and dozens of other apps, and you sign in to each app in the browser the first time it comes up. No API keys to create, no gateway to configure. +You do need an Arcade account, but not before you install. The first time your agent reaches for an app, it hands you a link, and you can create your account right there. + @@ -20,6 +23,7 @@ Install the Arcade agent plugin in your coding agent and run your first task aga 1. [Node.js](https://nodejs.org) so you can run `npx` 2. A supported agent: Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex +3. An Arcade account, which you can create when your agent first asks you to authenticate @@ -114,7 +118,9 @@ Codex and ChatGPT share one plugin directory, so a single install shows up on bo ## Sign in to your apps -You never give your agent an API key or a password. The first task that touches an app returns a sign-in link, you approve it in the browser, and Arcade holds the token from then on. Ask your agent to run `/arcade-status` to list your connected apps, or `/arcade-connect google` to connect one ahead of time. +You never give your agent an API key or a password. The first task that touches an app returns a link, and that link does two things the first time you follow it: it signs you in to Arcade, creating your account if you do not have one yet, and it asks you to authorize the app your agent wants to use. Every app after that only needs the authorization step. + +Once you approve, Arcade holds the token, so you do this once per app. Ask your agent to run `/arcade-status` to list your connected apps, or `/arcade-connect google` to connect one ahead of time. ## What you get in each agent diff --git a/styles/config/vocabularies/Arcade/accept.txt b/styles/config/vocabularies/Arcade/accept.txt index 568ddd3f8..2863175ca 100644 --- a/styles/config/vocabularies/Arcade/accept.txt +++ b/styles/config/vocabularies/Arcade/accept.txt @@ -13,6 +13,7 @@ Entra ID Stytch Connected App Connected Apps +Claude Desktop LLM SDK API From 6fe150e9a8f9bf859ff09e1b510bffd2afc2e5fb Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 12:54:37 -0400 Subject: [PATCH 04/11] docs(agent-plugin): fix the auth model, drop the verify step, reframe rollout Corrects the sign-in story. An Arcade gateway authorizes on two layers and the pages described only one, blurred together: signing in to the gateway when your client connects, and authorizing each app when a task needs it. Both are now named, with a link to the existing server-level vs tool-level explainer, and the pages say plainly that tool calls, tokens, and secrets route through your own project, isolated from other users of the same gateway. Removes "Verify the install per agent". Checking that a plugin loaded is not something to do before trying it. The parts of that section that were real install steps (the enable flags, the one-click gateway-only links, the shared Codex/Copilot directories) moved into Install and a new Tools only section. Expands the component list into what each piece does for you, since naming six things in one paragraph explained none of them. Reframes the rollout page around the three questions a team has to answer rather than three things the reader is told they want, with a matching numbered list up front so the page survives skimming. Drops "trial" throughout in favor of personal use; nothing here is time limited. Co-Authored-By: Claude Opus 5 (1M context) --- app/en/get-started/agent-plugin/_meta.tsx | 2 +- .../agent-plugin/any-mcp-client/page.mdx | 8 +- .../agent-plugin/claude-desktop/page.mdx | 10 ++- app/en/get-started/agent-plugin/page.mdx | 89 +++++++------------ .../agent-plugin/team-rollout/page.mdx | 26 ++++-- .../mcp-clients/claude-code/page.mdx | 2 +- .../mcp-clients/claude-desktop/page.mdx | 2 +- .../get-started/mcp-clients/cursor/page.mdx | 2 +- .../mcp-clients/github-copilot/page.mdx | 2 +- app/en/get-started/mcp-clients/page.mdx | 4 +- .../mcp-clients/visual-studio-code/page.mdx | 2 +- 11 files changed, 66 insertions(+), 83 deletions(-) diff --git a/app/en/get-started/agent-plugin/_meta.tsx b/app/en/get-started/agent-plugin/_meta.tsx index 2184cc123..cbb3569d4 100644 --- a/app/en/get-started/agent-plugin/_meta.tsx +++ b/app/en/get-started/agent-plugin/_meta.tsx @@ -11,7 +11,7 @@ export const meta: MetaRecord = { title: "Any MCP client", }, "team-rollout": { - title: "From trial to team rollout", + title: "From personal use to team rollout", }, }; diff --git a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx index 5c0792c2d..30ce5e44e 100644 --- a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx +++ b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx @@ -15,9 +15,11 @@ Any client that can talk to a Streamable HTTP MCP server can use Arcade tools, i That gives you tools only. The plugin's skills, commands, and `arcade-operator` subagent need a client that loads [agent plugins](https://agent-plugins.org). See the [install guide](/get-started/agent-plugin) for the list. -## Sign in to your apps +## Sign in -No API keys. The first task that touches an app returns a browser link. Following it signs you in to Arcade, creating your account if you do not have one yet, and asks you to authorize the app. Approve it once and Arcade holds the token from then on. +No API keys. You authorize twice: your client signs you in to Arcade with your Arcade account when it first connects to the gateway, and then each app gets authorized on its own the first time a task needs it. Approve that once per app and Arcade holds the token. + +Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. ## Try it @@ -28,4 +30,4 @@ No API keys. The first task that touches an app returns a browser link. Followin - [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex - [Connect to MCP clients](/get-started/mcp-clients): point a client at a gateway you control, with your own tool list -- [From trial to team rollout](/get-started/agent-plugin/team-rollout): what changes when a team depends on the workflow +- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): what changes when a team depends on the workflow diff --git a/app/en/get-started/agent-plugin/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/claude-desktop/page.mdx index a9ff771f0..ec54a3d45 100644 --- a/app/en/get-started/agent-plugin/claude-desktop/page.mdx +++ b/app/en/get-started/agent-plugin/claude-desktop/page.mdx @@ -20,7 +20,7 @@ Connect Claude Desktop to Arcade and run a task against one of your apps. 1. Claude Desktop, updated to a version that supports custom connectors -2. An Arcade account, which you can create when Claude first asks you to authenticate +2. An Arcade account @@ -44,9 +44,11 @@ Connect Claude Desktop to Arcade and run a task against one of your apps. 4. Save, then start a new conversation -## Sign in to your apps +## Sign in -The first time Claude reaches for an app, it returns a browser link. Following it signs you in to Arcade, creating your account if you do not have one yet, and asks you to authorize the app Claude wants to use. Approve it and Arcade holds the token from then on, so you only do this once per app. +You authorize twice. Clicking **Connect** on the connector signs you in to Arcade and links Claude Desktop to the gateway. After that, the first time Claude reaches for an app, it returns a browser link asking you to authorize that app; approve it and Arcade holds the token, so you only do this once per app. + +Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. ## Try it @@ -57,5 +59,5 @@ The first time Claude reaches for an app, it returns a browser link. Following i ## Next steps - [Install the agent plugin](/get-started/agent-plugin): the full experience in Cursor, Claude Code, VS Code, Copilot CLI, or Codex -- [From trial to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto a gateway you control +- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto a gateway you control - [Use Arcade in Claude Desktop with your own gateway](/get-started/mcp-clients/claude-desktop): pick exactly which tools Claude can call diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index cd61e0389..38a86f569 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -3,14 +3,12 @@ title: "Install the Arcade agent plugin" description: "Install Arcade in Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex with one command. Your agent gets tools for every app you connect, with browser sign-in and no API keys." --- -import { Callout, Tabs } from "nextra/components"; +import { Callout } from "nextra/components"; import { SignupLink } from "@/app/_components/analytics"; # Install the Arcade agent plugin -The Arcade agent plugin puts Arcade inside your coding agent with one command. Your agent gains tools for email, calendar, chat, issues, docs, and dozens of other apps, and you sign in to each app in the browser the first time it comes up. No API keys to create, no gateway to configure. - -You do need an Arcade account, but not before you install. The first time your agent reaches for an app, it hands you a link, and you can create your account right there. +The Arcade agent plugin puts Arcade inside your coding agent with one command. Your agent gains tools for email, calendar, chat, issues, docs, and dozens of other apps, and you authorize each app in the browser the first time it comes up. No API keys to create, no gateway to configure. @@ -23,15 +21,15 @@ Install the Arcade agent plugin in your coding agent and run your first task aga 1. [Node.js](https://nodejs.org) so you can run `npx` 2. A supported agent: Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex -3. An Arcade account, which you can create when your agent first asks you to authenticate +3. An Arcade account - The plugin is built for personal use and evaluation. When you are ready to put - a workflow in front of a team, read [from trial to team + The plugin is built for personal use. When you are ready to put + a workflow in front of a team, read [from personal use to team rollout](/get-started/agent-plugin/team-rollout). You will want your own [MCP Gateway](/operate/governance/mcp-gateways) with a curated tool list and your own identity provider. @@ -59,68 +57,33 @@ To see what an install would write without changing anything: npx plugins discover {{ARCADE_PLUGIN_REPO}} ``` -Reload your agent afterwards if it does not pick up the plugin on its own. - -Using Claude Desktop or an agent that is not listed here? See [Claude Desktop](/get-started/agent-plugin/claude-desktop) or [any MCP client](/get-started/agent-plugin/any-mcp-client). - -## Verify the install per agent - - - - -Reload the window, open **Customize**, and confirm you see two skills, the `arcade-operator` agent, and the `arcade` MCP server. +Reload your agent afterwards if it does not pick up the plugin on its own. A couple of agents gate plugins behind a setting. Claude Code may ask you to enable it with `claude plugin`, and VS Code needs `chat.plugins.enabled` set to `true`. -Cursor reads the plugin's Cursor manifest, so it loads the skills, the operator subagent, the slash commands, an always-on rule, and a session hook. +Two things worth knowing if you use more than one agent. Codex and ChatGPT share a plugin directory, so one install covers both. And VS Code can discover a copy installed through GitHub Copilot CLI, so install in one place rather than both. -**Tools only:** if you want Arcade tools without the skills and subagent, use the [one-click MCP install link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}). - - - - -Run `claude plugin` and enable the plugin if Claude Code prompts you. Then run `/mcp` and confirm that the server named `arcade` is connected. - -The same install works in Claude Cowork and the Claude Code desktop app once you enable the plugin there. - - - The plugin registers one MCP server, named `arcade`. If your agent already has - other Arcade MCP connectors configured, the tool names collide and your agent - may call the wrong gateway. Disable the other Arcade connectors while you try - the plugin. - - - - - -Set `chat.plugins.enabled` to `true` if agent plugins are not enabled yet, then confirm the two skills and the `arcade` MCP server appear. - -VS Code loads the portable part of the plugin: the skills and the gateway. It does not register the `arcade-operator` subagent. - -If you already installed the plugin through GitHub Copilot CLI, VS Code may discover that copy too. Install in one place only. - -**Tools only:** use the [one-click MCP install link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) to add the gateway without the skills. +Using Claude Desktop or an agent that is not listed here? See [Claude Desktop](/get-started/agent-plugin/claude-desktop) or [any MCP client](/get-started/agent-plugin/any-mcp-client). - - +## Tools only -Confirm the two skills, the `arcade` MCP server, and the `arcade-operator` subagent are available. +If you want Arcade tools without the skills, commands, and subagent, Cursor and VS Code can add the gateway on its own: -Copilot CLI reads the portable plugin manifest and also discovers the operator subagent. It does not load the plugin's session hooks, which use Claude Code's hook format. The skills carry the same guidance on this agent. +- **Cursor:** use [this link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}) for a one-click MCP install. +- **VS Code:** use [this link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) for a one-click MCP install. - - +For any other client, add the gateway URL by hand. See [any MCP client](/get-started/agent-plugin/any-mcp-client). -Confirm the two skills appear and the `arcade` MCP server is connected. Codex does not load the `arcade-operator` subagent. +## Sign in -Codex and ChatGPT share one plugin directory, so a single install shows up on both surfaces. +You authorize twice, and the two are doing different jobs. - - +1. **Into the gateway.** Your client asks you to authenticate when it first connects. You sign in to Arcade in the browser, and the client can reach the gateway from then on. +2. **Into each app.** When a task needs Gmail, Slack, Linear, or anything else, your agent hands you a link that grants the scopes that task requires. Approve it once and Arcade holds the token for that app. -## Sign in to your apps +You never give your agent an API key or a password for either layer. Ask your agent to run `/arcade-status` to see where you stand, or `/arcade-connect google` to authorize an app before you need it. -You never give your agent an API key or a password. The first task that touches an app returns a link, and that link does two things the first time you follow it: it signs you in to Arcade, creating your account if you do not have one yet, and it asks you to authorize the app your agent wants to use. Every app after that only needs the authorization step. +Every install points at the same gateway URL, but your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of that gateway. No one else's agent can reach your apps. -Once you approve, Arcade holds the token, so you do this once per app. Ask your agent to run `/arcade-status` to list your connected apps, or `/arcade-connect google` to connect one ahead of time. +Every Arcade gateway works this way, not just the one in the plugin. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) goes deeper on the split. ## What you get in each agent @@ -137,7 +100,15 @@ Every install connects to the same Arcade gateway and gets the same tools. What | Claude Desktop | ✅ | — | — | — | — | — | | Any other MCP client | ✅ | — | — | — | — | — | -The two skills are `try-arcade`, which runs real work across your connected apps, and `scale-arcade`, which walks you through a team rollout. The subagent is `arcade-operator`, which keeps tool discovery out of your main conversation. The commands are `/arcade-apps`, `/arcade-connect`, and `/arcade-status`. +Here is what each of those is for. + +**Commands** are the part you type. `/arcade-status` reports whether the gateway is reachable, whether you have signed in, and which apps you have authorized. `/arcade-connect ` authorizes an app on demand, so you are not interrupted mid-task. `/arcade-apps` lists what you have connected and lets you disconnect one. + +**Skills** are instructions your agent reads on its own, so you never have to invoke them. `try-arcade` teaches it to turn a request like "reply to that thread" into the right sequence of tool calls across your apps. `scale-arcade` handles the other kind of question, the one about moving a workflow onto a team gateway, and it walks you through the decisions on [this page](/get-started/agent-plugin/team-rollout) against your own workspace. + +**The subagent**, `arcade-operator`, runs an app task in its own context and reports back just the result. Arcade exposes a lot of tools, and searching them fills a conversation with noise that pushes out your actual work. The operator absorbs that. + +**The rule and hooks** are Cursor and Claude Code specific. They tell your agent that Arcade exists and when reaching for it is the right move, which is the difference between a tool that sits unused and one your agent actually picks up. The columns thin out because the [Agent Plugins](https://agent-plugins.org) 1.0 specification only makes skills and MCP servers portable. Commands, subagents, hooks, and editor rules are specific to each agent, so the plugin ships them where the agents that support them will find them. @@ -154,7 +125,7 @@ Your agent asks you to confirm before it sends, creates, or deletes anything. ## Next steps -- [From trial to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto your own gateway +- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto your own gateway - [Connect to MCP clients](/get-started/mcp-clients): configure a client against a gateway you control - [Integrations catalog](/resources/integrations): every app and toolkit Arcade supports - [Agentic development](/get-started/setup/connect-arcade-docs): point your agent at these docs with `llms.txt` diff --git a/app/en/get-started/agent-plugin/team-rollout/page.mdx b/app/en/get-started/agent-plugin/team-rollout/page.mdx index 237e5f613..46788f4ba 100644 --- a/app/en/get-started/agent-plugin/team-rollout/page.mdx +++ b/app/en/get-started/agent-plugin/team-rollout/page.mdx @@ -1,15 +1,23 @@ --- -title: "From trial to team rollout" +title: "From personal use to team rollout" description: "What changes when an Arcade workflow you proved with the agent plugin becomes something a team depends on: your own MCP Gateway, a curated tool list, and your own identity provider." --- import { Callout } from "nextra/components"; -# From trial to team rollout +# From personal use to team rollout -The [agent plugin](/get-started/agent-plugin) serves one person evaluating Arcade. It points every install at a shared Arcade gateway, offers a broad tool selection, and identifies you by the apps you signed in to yourself. That is exactly what you want while you are finding out whether a workflow is worth having. +The [agent plugin](/get-started/agent-plugin) serves one person working on their own. Every install points at the same global gateway URL, and that is where the sharing ends. Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of that gateway. No one else's agent can reach your Gmail, and yours cannot reach theirs. -Once a team depends on that workflow, three things change. This page names them and points at the setup for each. +What the plugin gives you is a broad tool selection and an identity that is yours alone, which is what you want for your own work. + +Once a team depends on that workflow, three questions you never had to answer start to matter: + +1. Where does your team connect? +2. Which tools can they call? +3. Who is each end user? + +Each one has a section below, in that order. If your agent loaded the plugin's skills, ask it to run `/scale-arcade`. The @@ -17,13 +25,13 @@ Once a team depends on that workflow, three things change. This page names them workspace. -## You want your own gateway +## Where does your team connect? An [MCP Gateway](/operate/governance/mcp-gateways) is the endpoint your team's clients connect to, and it is where you decide what those clients can do. Create one per project in the [Arcade dashboard](https://app.arcade.dev) so each project gets a URL you control, its own tool list, and its own audit trail. Clients connect to it exactly the way they connected to the plugin's gateway. See the [MCP client guides](/get-started/mcp-clients) for Cursor, Claude Code, Claude Desktop, VS Code, and Copilot. -## You want a curated tool list +## Which tools can they call? The gateway is the filter that decides which tools reach your agent. Open the **Allowed Tools** picker on your gateway and select across everything in scope: Arcade-hosted toolkits from the [integrations catalog](/resources/integrations), [remote MCP servers](/operate/governance/remote-mcp-servers) you register, and your own [custom MCP servers](/build/create-tools/tool-basics/build-mcp-server) deployed with [Arcade Deploy](/build/arcade-deploy). @@ -31,13 +39,13 @@ A smaller, deliberate tool list makes agents more accurate, not less capable. Sa Beyond the allowlist, [contextual access](/operate/governance/contextual-access) lets you allow or deny each individual tool call as it arrives, and [audit logs](/operate/governance/audit-logs) and [tool executions](/operate/governance/tool-executions) show you what actually ran. -## You want your own user identities +## Who is each end user? -During a trial, you are the only user, and browser sign-in is enough. In production, each of your end users needs their own authorization, so an agent acting for one person can never reach another person's data. +When you are the only user, signing in to each app yourself is enough. In production, each of your end users needs their own authorization, so an agent acting for one person can never reach another person's data. Configure a [User Source](/operate/identity/user-sources) on your gateway and Arcade redirects each end user to your existing identity provider, whether that is Entra ID, Okta, Auth0, Clerk, or another OIDC provider, then identifies them by an OIDC subject claim. -## Going beyond MCP +## Building your own product? Connecting a client to a gateway takes the least work, and for many teams it is the whole rollout. When you are building your own product rather than configuring an agent, call Arcade directly instead: diff --git a/app/en/get-started/mcp-clients/claude-code/page.mdx b/app/en/get-started/mcp-clients/claude-code/page.mdx index 67dcea789..e97bb9f22 100644 --- a/app/en/get-started/mcp-clients/claude-code/page.mdx +++ b/app/en/get-started/mcp-clients/claude-code/page.mdx @@ -4,7 +4,7 @@ import { SignupLink } from "@/app/_components/analytics"; # Use Arcade in Claude Code - **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + **Setting Arcade up for yourself?** The [Arcade agent plugin](/get-started/agent-plugin) installs in one command, needs no API key, and signs you in to each app in the browser. This guide is for pointing Claude Code at a gateway you control, with your own tool list and your own end-user identities. diff --git a/app/en/get-started/mcp-clients/claude-desktop/page.mdx b/app/en/get-started/mcp-clients/claude-desktop/page.mdx index f7dd3c3af..0e016d6e4 100644 --- a/app/en/get-started/mcp-clients/claude-desktop/page.mdx +++ b/app/en/get-started/mcp-clients/claude-desktop/page.mdx @@ -35,7 +35,7 @@ export const STEP_7_LIGHT_HEIGHT = 2450; # Use Arcade in Claude Desktop - **Just trying Arcade?** Add Arcade to Claude Desktop [as a + **Setting Arcade up for yourself?** Add Arcade to Claude Desktop [as a connector](/get-started/agent-plugin/claude-desktop), which needs no API key and signs you in to each app in the browser. This guide is for pointing Claude Desktop at a gateway you control, with your own tool list and your own diff --git a/app/en/get-started/mcp-clients/cursor/page.mdx b/app/en/get-started/mcp-clients/cursor/page.mdx index 630922c7a..c7bc52e01 100644 --- a/app/en/get-started/mcp-clients/cursor/page.mdx +++ b/app/en/get-started/mcp-clients/cursor/page.mdx @@ -9,7 +9,7 @@ import { SignupLink } from "@/app/_components/analytics"; # Use Arcade in Cursor - **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + **Setting Arcade up for yourself?** The [Arcade agent plugin](/get-started/agent-plugin) installs in one command, needs no API key, and signs you in to each app in the browser. This guide is for pointing Cursor at a gateway you control, with your own tool list and your own end-user identities. diff --git a/app/en/get-started/mcp-clients/github-copilot/page.mdx b/app/en/get-started/mcp-clients/github-copilot/page.mdx index 67f02aff5..de4e0d7b8 100644 --- a/app/en/get-started/mcp-clients/github-copilot/page.mdx +++ b/app/en/get-started/mcp-clients/github-copilot/page.mdx @@ -21,7 +21,7 @@ export const VISUAL_STUDIO_STEP_6_HEIGHT = 360; # Use Arcade in GitHub Copilot - **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + **Setting Arcade up for yourself?** The [Arcade agent plugin](/get-started/agent-plugin) installs into Copilot CLI in one command, needs no API key, and signs you in to each app in the browser. This guide is for pointing Copilot at a gateway you control, with your own tool list and your own end-user identities. diff --git a/app/en/get-started/mcp-clients/page.mdx b/app/en/get-started/mcp-clients/page.mdx index ac1f8af85..bfb55baaf 100644 --- a/app/en/get-started/mcp-clients/page.mdx +++ b/app/en/get-started/mcp-clients/page.mdx @@ -13,6 +13,6 @@ Every supported MCP client, including Cursor, Claude Desktop, Claude Code, VS Co -## Just trying Arcade out? +## Setting Arcade up for yourself? -These guides assume you want your own gateway, with a tool list and end-user identities you control. If you are evaluating Arcade for yourself, the [Arcade agent plugin](/get-started/agent-plugin) is faster: one command installs it into Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex, there is no API key to create, and you sign in to each app in the browser. +These guides assume you want your own gateway, with a tool list and end-user identities you control. If you are setting Arcade up for your own work, the [Arcade agent plugin](/get-started/agent-plugin) is faster: one command installs it into Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex, there is no API key to create, and you sign in to each app in the browser. diff --git a/app/en/get-started/mcp-clients/visual-studio-code/page.mdx b/app/en/get-started/mcp-clients/visual-studio-code/page.mdx index 96d15ca8e..83a0ede30 100644 --- a/app/en/get-started/mcp-clients/visual-studio-code/page.mdx +++ b/app/en/get-started/mcp-clients/visual-studio-code/page.mdx @@ -6,7 +6,7 @@ import { SignupLink } from "@/app/_components/analytics"; In this guide, you'll learn how to connect Visual Studio Code to an Arcade MCP Gateway. - **Just trying Arcade?** The [Arcade agent plugin](/get-started/agent-plugin) + **Setting Arcade up for yourself?** The [Arcade agent plugin](/get-started/agent-plugin) installs in one command, needs no API key, and signs you in to each app in the browser. This guide is for pointing VS Code at a gateway you control, with your own tool list and your own end-user identities. From b3d51d5d8f9278c7908e7f0bd224f03a04e0f6b3 Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 13:10:36 -0400 Subject: [PATCH 05/11] docs(agent-plugin): install Claude Desktop from the bundle, reframe tools-only Claude Desktop ships as a downloadable .mcpb bundle, so the page now leads with that download and keeps the custom-connector URL as the by-hand alternative at the bottom. The bundle URL points at the latest GitHub release and derives from the repo constant; confirm the asset filename once a release publishes. Renames "any MCP client" to "tools only", which is the actual distinction. The old page sorted clients by whether they support plugins; readers care whether they want the tools alone or the whole plugin. It now says what you give up by skipping the skills, commands, and subagent, so the choice is informed rather than a fallback. Co-Authored-By: Claude Opus 5 (1M context) --- app/en/get-started/agent-plugin/_meta.tsx | 4 +- .../agent-plugin/any-mcp-client/page.mdx | 33 -------------- .../agent-plugin/claude-desktop/page.mdx | 40 +++++++++-------- app/en/get-started/agent-plugin/page.mdx | 4 +- .../agent-plugin/tools-only/page.mdx | 45 +++++++++++++++++++ .../mcp-clients/claude-desktop/page.mdx | 10 ++--- lib/agent-plugin.ts | 7 +++ lib/remark-substitute.ts | 2 + redirects.ts | 5 +++ 9 files changed, 90 insertions(+), 60 deletions(-) delete mode 100644 app/en/get-started/agent-plugin/any-mcp-client/page.mdx create mode 100644 app/en/get-started/agent-plugin/tools-only/page.mdx diff --git a/app/en/get-started/agent-plugin/_meta.tsx b/app/en/get-started/agent-plugin/_meta.tsx index cbb3569d4..b14e6acf0 100644 --- a/app/en/get-started/agent-plugin/_meta.tsx +++ b/app/en/get-started/agent-plugin/_meta.tsx @@ -7,8 +7,8 @@ export const meta: MetaRecord = { "claude-desktop": { title: "Claude Desktop", }, - "any-mcp-client": { - title: "Any MCP client", + "tools-only": { + title: "Tools only", }, "team-rollout": { title: "From personal use to team rollout", diff --git a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/any-mcp-client/page.mdx deleted file mode 100644 index 30ce5e44e..000000000 --- a/app/en/get-started/agent-plugin/any-mcp-client/page.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: "Install Arcade in any MCP client" -description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key." ---- - -import { SignupLink } from "@/app/_components/analytics"; - -# Install Arcade in any MCP client - -Any client that can talk to a Streamable HTTP MCP server can use Arcade tools, including OpenCode and clients that do not support agent plugins at all. Add this URL as an MCP server: - -```text -{{ARCADE_PLUGIN_GATEWAY_URL}} -``` - -That gives you tools only. The plugin's skills, commands, and `arcade-operator` subagent need a client that loads [agent plugins](https://agent-plugins.org). See the [install guide](/get-started/agent-plugin) for the list. - -## Sign in - -No API keys. You authorize twice: your client signs you in to Arcade with your Arcade account when it first connects to the gateway, and then each app gets authorized on its own the first time a task needs it. Approve that once per app and Arcade holds the token. - -Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. - -## Try it - -- "What's on my calendar tomorrow?" -- "What apps can Arcade use?" - -## Next steps - -- [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex -- [Connect to MCP clients](/get-started/mcp-clients): point a client at a gateway you control, with your own tool list -- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): what changes when a team depends on the workflow diff --git a/app/en/get-started/agent-plugin/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/claude-desktop/page.mdx index ec54a3d45..aab35fa5e 100644 --- a/app/en/get-started/agent-plugin/claude-desktop/page.mdx +++ b/app/en/get-started/agent-plugin/claude-desktop/page.mdx @@ -1,6 +1,6 @@ --- title: "Install Arcade in Claude Desktop" -description: "Add Arcade tools to Claude Desktop as a custom connector, so Claude can act across the apps you connect." +description: "Install the Arcade bundle in Claude Desktop with one download, or add the gateway as a custom connector, so Claude can act across the apps you connect." --- import { Callout } from "nextra/components"; @@ -8,18 +8,18 @@ import { SignupLink } from "@/app/_components/analytics"; # Install Arcade in Claude Desktop -Claude Desktop Chat does not install agent plugins, so it gets Arcade tools through a connector instead. You still authorize each app in the browser, and you still need no API key. You just do not get the plugin's skills, commands, or `arcade-operator` subagent. +Claude Desktop installs Arcade from a bundle rather than the `npx` command the coding agents use. Download it, open it, and Claude Desktop handles the rest. No API keys, and you authorize each app in the browser the first time it comes up. -Connect Claude Desktop to Arcade and run a task against one of your apps. +Install the Arcade bundle in Claude Desktop and run a task against one of your apps. -1. Claude Desktop, updated to a version that supports custom connectors +1. Claude Desktop, updated to a version that supports extensions 2. An Arcade account @@ -27,26 +27,20 @@ Connect Claude Desktop to Arcade and run a task against one of your apps. - Using Cowork or Claude Code inside the Claude desktop app? Those do load agent - plugins. Install the full plugin with [one - command](/get-started/agent-plugin) instead. + Using Cowork or Claude Code inside the Claude desktop app? Those load the full + agent plugin, with skills, commands, and the `arcade-operator` subagent. + Install it with [one command](/get-started/agent-plugin) instead. -## Add Arcade as a custom connector +## Install the bundle -1. Open **Settings → Connectors** -2. Click **Add custom connector** -3. Paste the Arcade gateway URL: - -```text -{{ARCADE_PLUGIN_GATEWAY_URL}} -``` - -4. Save, then start a new conversation +1. Download [the Arcade bundle]({{ARCADE_PLUGIN_MCPB_URL}}) +2. Open the downloaded `.mcpb` file, and Claude Desktop offers to install it +3. Confirm the install, then start a new conversation ## Sign in -You authorize twice. Clicking **Connect** on the connector signs you in to Arcade and links Claude Desktop to the gateway. After that, the first time Claude reaches for an app, it returns a browser link asking you to authorize that app; approve it and Arcade holds the token, so you only do this once per app. +You authorize twice. Connecting Arcade signs you in and links Claude Desktop to the gateway. After that, the first time Claude reaches for an app, it returns a browser link asking you to authorize that app. Approve it and Arcade holds the token, so you only do this once per app. Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. @@ -56,6 +50,16 @@ Your tool calls, tokens, and secrets route through your own Arcade project, isol - "What apps can Arcade use?" - "Summarize the unread email from this week." +## Add the gateway by hand instead + +If you would rather not install a bundle, Claude Desktop can reach the same gateway as a custom connector. Open **Settings → Connectors**, click **Add custom connector**, and paste: + +```text +{{ARCADE_PLUGIN_GATEWAY_URL}} +``` + +Save, then start a new conversation. You get the same tools this way; the bundle just saves you the trip through settings. + ## Next steps - [Install the agent plugin](/get-started/agent-plugin): the full experience in Cursor, Claude Code, VS Code, Copilot CLI, or Codex diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index 38a86f569..e10a95b3d 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -61,7 +61,7 @@ Reload your agent afterwards if it does not pick up the plugin on its own. A cou Two things worth knowing if you use more than one agent. Codex and ChatGPT share a plugin directory, so one install covers both. And VS Code can discover a copy installed through GitHub Copilot CLI, so install in one place rather than both. -Using Claude Desktop or an agent that is not listed here? See [Claude Desktop](/get-started/agent-plugin/claude-desktop) or [any MCP client](/get-started/agent-plugin/any-mcp-client). +Using Claude Desktop? It installs from a downloadable bundle instead. See [Install Arcade in Claude Desktop](/get-started/agent-plugin/claude-desktop). For any other client, see [Arcade tools without the plugin](/get-started/agent-plugin/tools-only). ## Tools only @@ -70,7 +70,7 @@ If you want Arcade tools without the skills, commands, and subagent, Cursor and - **Cursor:** use [this link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}) for a one-click MCP install. - **VS Code:** use [this link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) for a one-click MCP install. -For any other client, add the gateway URL by hand. See [any MCP client](/get-started/agent-plugin/any-mcp-client). +For any other client, add the gateway URL by hand. See [Arcade tools without the plugin](/get-started/agent-plugin/tools-only). ## Sign in diff --git a/app/en/get-started/agent-plugin/tools-only/page.mdx b/app/en/get-started/agent-plugin/tools-only/page.mdx new file mode 100644 index 000000000..f35a4389d --- /dev/null +++ b/app/en/get-started/agent-plugin/tools-only/page.mdx @@ -0,0 +1,45 @@ +--- +title: "Arcade tools without the plugin" +description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key and no plugin install." +--- + +import { SignupLink } from "@/app/_components/analytics"; + +# Arcade tools without the plugin + +The plugin bundles more than tools: two skills, three commands, and the `arcade-operator` subagent, all of which need a client that loads [agent plugins](https://agent-plugins.org). If you only want the tools, or your client does not load plugins at all, point it straight at the gateway: + +```text +{{ARCADE_PLUGIN_GATEWAY_URL}} +``` + +Any client that speaks the Streamable HTTP MCP transport works, OpenCode included. Your agent gets every tool on the gateway and nothing else changes about how you use it. + +Cursor and VS Code can add the gateway this way in one click. [The install guide](/get-started/agent-plugin#tools-only) has those links. + +## What you give up + +Tools alone still do the work. What you lose is the part that helps your agent use them well: + +- **The skills** teach your agent to turn "reply to that thread" into the right sequence of tool calls, and to walk you through a team rollout when you ask about one. +- **The commands** give you `/arcade-status`, `/arcade-connect`, and `/arcade-apps` for checking and managing connections without leaving your agent. +- **The subagent** keeps tool search out of your main conversation, so it does not crowd out your actual work. + +If your client supports plugins, [install the full plugin](/get-started/agent-plugin) instead. + +## Sign in + +No API keys. You authorize twice: your client signs you in to Arcade with your Arcade account when it first connects to the gateway, and then each app gets authorized on its own the first time a task needs it. Approve that once per app and Arcade holds the token. + +Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. + +## Try it + +- "What's on my calendar tomorrow?" +- "What apps can Arcade use?" + +## Next steps + +- [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex +- [Connect to MCP clients](/get-started/mcp-clients): point a client at a gateway you control, with your own tool list +- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): what changes when a team depends on the workflow diff --git a/app/en/get-started/mcp-clients/claude-desktop/page.mdx b/app/en/get-started/mcp-clients/claude-desktop/page.mdx index 0e016d6e4..3bade526b 100644 --- a/app/en/get-started/mcp-clients/claude-desktop/page.mdx +++ b/app/en/get-started/mcp-clients/claude-desktop/page.mdx @@ -35,11 +35,11 @@ export const STEP_7_LIGHT_HEIGHT = 2450; # Use Arcade in Claude Desktop - **Setting Arcade up for yourself?** Add Arcade to Claude Desktop [as a - connector](/get-started/agent-plugin/claude-desktop), which needs no API key - and signs you in to each app in the browser. This guide is for pointing Claude - Desktop at a gateway you control, with your own tool list and your own - end-user identities. + **Setting Arcade up for yourself?** Install [the Arcade + bundle](/get-started/agent-plugin/claude-desktop), which needs no API key and + authorizes each app in the browser. This guide is for pointing Claude Desktop + at a gateway you control, with your own tool list and your own end-user + identities. diff --git a/lib/agent-plugin.ts b/lib/agent-plugin.ts index 8f5aefc31..6152de29c 100644 --- a/lib/agent-plugin.ts +++ b/lib/agent-plugin.ts @@ -14,6 +14,13 @@ export const AGENT_PLUGIN_REPO = "ArcadeAI/arcade-plugin"; export const AGENT_PLUGIN_INSTALL_COMMAND = `npx plugins add ${AGENT_PLUGIN_REPO}`; +/** + * The Claude Desktop bundle, served off the latest GitHub release so the link + * does not need updating per version. Confirm the asset filename matches what + * the release actually publishes. + */ +export const AGENT_PLUGIN_MCPB_URL = `https://github.com/${AGENT_PLUGIN_REPO}/releases/latest/download/arcade.mcpb`; + /** * Cursor takes its MCP config as base64-encoded JSON in a query parameter. */ diff --git a/lib/remark-substitute.ts b/lib/remark-substitute.ts index fb90af329..15fc09910 100644 --- a/lib/remark-substitute.ts +++ b/lib/remark-substitute.ts @@ -4,6 +4,7 @@ import { AGENT_PLUGIN_CURSOR_INSTALL_LINK, AGENT_PLUGIN_GATEWAY_URL, AGENT_PLUGIN_INSTALL_COMMAND, + AGENT_PLUGIN_MCPB_URL, AGENT_PLUGIN_REPO, AGENT_PLUGIN_VSCODE_INSTALL_LINK, } from "./agent-plugin"; @@ -18,6 +19,7 @@ export const substitutions: Record = { ARCADE_PLUGIN_GATEWAY_URL: AGENT_PLUGIN_GATEWAY_URL, ARCADE_PLUGIN_REPO: AGENT_PLUGIN_REPO, ARCADE_PLUGIN_INSTALL_COMMAND: AGENT_PLUGIN_INSTALL_COMMAND, + ARCADE_PLUGIN_MCPB_URL: AGENT_PLUGIN_MCPB_URL, ARCADE_PLUGIN_CURSOR_INSTALL_LINK: AGENT_PLUGIN_CURSOR_INSTALL_LINK, ARCADE_PLUGIN_VSCODE_INSTALL_LINK: AGENT_PLUGIN_VSCODE_INSTALL_LINK, }; diff --git a/redirects.ts b/redirects.ts index 7432fd24f..fbc1c82bc 100644 --- a/redirects.ts +++ b/redirects.ts @@ -1163,4 +1163,9 @@ export const redirects: Redirect[] = [ destination: "/:locale/build", permanent: true, }, + { + source: "/:locale/get-started/agent-plugin/any-mcp-client", + destination: "/:locale/get-started/agent-plugin/tools-only", + permanent: true, + }, ]; From 4f7d2ce5151530c220426c3323ae6cf9d21f8b77 Mon Sep 17 00:00:00 2001 From: "arcade-docs-bot[bot]" <321924871+arcade-docs-bot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 17:11:24 +0000 Subject: [PATCH 06/11] =?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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/llms.txt b/public/llms.txt index c88332e2b..3800b1c4f 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -80,6 +80,7 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Arcade Cloud infrastructure](https://docs.arcade.dev/en/operate/deploy/arcade-cloud): Documentation page - [Arcade Gateway Assistant](https://docs.arcade.dev/en/operate/governance/mcp-gateways/create-via-ai): Documentation page - [Arcade Glossary](https://docs.arcade.dev/en/resources/glossary): The Arcade Glossary provides definitions and explanations of key terms and concepts related to the Arcade platform, including agents, harnesses, MCP servers, and tools. This resource helps users understand the components and functionalities necessary for building, deploying, and managing applications that +- [Arcade tools without the plugin](https://docs.arcade.dev/en/get-started/agent-plugin/tools-only): Documentation page - [Arcade with Agent Frameworks and MCP Clients](https://docs.arcade.dev/en/get-started/agent-frameworks): This documentation page provides developers with guidance on integrating Arcade with agent frameworks and MCP clients to enhance AI applications with tool-calling capabilities. It offers detailed instructions on authentication, tool loading, and execution, along with code examples and configuration steps for popular frameworks and - [Arcade with Google ADK](https://docs.arcade.dev/en/get-started/agent-frameworks/google-adk/overview): The "Arcade with Google ADK" documentation page provides guidance on integrating Arcade tools with the Google ADK framework, enabling users to build AI agents that can interact with various services like Gmail, Slack, and GitHub. It offers setup instructions for - [Arcade with LangChain](https://docs.arcade.dev/en/get-started/agent-frameworks/langchain/overview): This documentation page provides guidance on integrating Arcade tools with LangChain agents, enabling users to build AI agents that can interact with various services like Gmail, GitHub, and Slack. It offers setup instructions for both Python and TypeScript, along with examples of @@ -139,7 +140,6 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Hybrid MCP servers](https://docs.arcade.dev/en/operate/deploy/on-prem): Documentation page - [Identity](https://docs.arcade.dev/en/operate/identity): Documentation page - [In Custom Applications](https://docs.arcade.dev/en/build/tool-calling/custom-apps): Documentation page -- [Install Arcade in any MCP client](https://docs.arcade.dev/en/get-started/agent-plugin/any-mcp-client): Documentation page - [Install Arcade in Claude Desktop](https://docs.arcade.dev/en/get-started/agent-plugin/claude-desktop): Documentation page - [Install the Arcade agent plugin](https://docs.arcade.dev/en/get-started/agent-plugin): Documentation page - [Mastra](https://docs.arcade.dev/en/get-started/agent-frameworks/mastra): This documentation page guides users in building a TypeScript AI agent using the Mastra framework, enabling interaction with Gmail and Slack through Arcade tools. Users will learn to create an agent capable of reading emails, sending messages, and summarizing emails for Slack, From 9a3a18c3ac5862ec6d3df89757e6c40519402d5b Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 13:22:33 -0400 Subject: [PATCH 07/11] docs(agent-plugin): nest Claude Desktop and any-MCP-client under tools-only Both pages describe the same thing, the gateway as a plain MCP server with none of the plugin's skills, commands, or subagent. Sitting them beside Overview implied they were alternative full installs. They are now children of a Tools-only MCP server page that carries the shared concept, the gateway URL, what you give up, and the two-layer sign-in, so each child is just its install steps. Co-Authored-By: Claude Opus 5 (1M context) --- app/en/get-started/agent-plugin/_meta.tsx | 5 +-- app/en/get-started/agent-plugin/page.mdx | 4 +- .../agent-plugin/tools-only/_meta.tsx | 15 ++++++++ .../tools-only/any-mcp-client/page.mdx | 38 +++++++++++++++++++ .../{ => tools-only}/claude-desktop/page.mdx | 6 +-- .../agent-plugin/tools-only/page.mdx | 20 +++++----- .../mcp-clients/claude-desktop/page.mdx | 2 +- redirects.ts | 7 +++- 8 files changed, 74 insertions(+), 23 deletions(-) create mode 100644 app/en/get-started/agent-plugin/tools-only/_meta.tsx create mode 100644 app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx rename app/en/get-started/agent-plugin/{ => tools-only}/claude-desktop/page.mdx (78%) diff --git a/app/en/get-started/agent-plugin/_meta.tsx b/app/en/get-started/agent-plugin/_meta.tsx index b14e6acf0..bce8ae202 100644 --- a/app/en/get-started/agent-plugin/_meta.tsx +++ b/app/en/get-started/agent-plugin/_meta.tsx @@ -4,11 +4,8 @@ export const meta: MetaRecord = { index: { title: "Overview", }, - "claude-desktop": { - title: "Claude Desktop", - }, "tools-only": { - title: "Tools only", + title: "Tools-only MCP server", }, "team-rollout": { title: "From personal use to team rollout", diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index e10a95b3d..da24c7d2c 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -61,7 +61,7 @@ Reload your agent afterwards if it does not pick up the plugin on its own. A cou Two things worth knowing if you use more than one agent. Codex and ChatGPT share a plugin directory, so one install covers both. And VS Code can discover a copy installed through GitHub Copilot CLI, so install in one place rather than both. -Using Claude Desktop? It installs from a downloadable bundle instead. See [Install Arcade in Claude Desktop](/get-started/agent-plugin/claude-desktop). For any other client, see [Arcade tools without the plugin](/get-started/agent-plugin/tools-only). +Using Claude Desktop, or a client that does not load plugins? Those connect to the same gateway as a [tools-only MCP server](/get-started/agent-plugin/tools-only). ## Tools only @@ -70,7 +70,7 @@ If you want Arcade tools without the skills, commands, and subagent, Cursor and - **Cursor:** use [this link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}) for a one-click MCP install. - **VS Code:** use [this link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) for a one-click MCP install. -For any other client, add the gateway URL by hand. See [Arcade tools without the plugin](/get-started/agent-plugin/tools-only). +For any other client, add the gateway URL by hand. See [Tools-only MCP server](/get-started/agent-plugin/tools-only). ## Sign in diff --git a/app/en/get-started/agent-plugin/tools-only/_meta.tsx b/app/en/get-started/agent-plugin/tools-only/_meta.tsx new file mode 100644 index 000000000..4187c208e --- /dev/null +++ b/app/en/get-started/agent-plugin/tools-only/_meta.tsx @@ -0,0 +1,15 @@ +import type { MetaRecord } from "nextra"; + +export const meta: MetaRecord = { + index: { + title: "Overview", + }, + "claude-desktop": { + title: "Claude Desktop", + }, + "any-mcp-client": { + title: "Any MCP client", + }, +}; + +export default meta; diff --git a/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx new file mode 100644 index 000000000..7a6a5e812 --- /dev/null +++ b/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx @@ -0,0 +1,38 @@ +--- +title: "Install Arcade in any MCP client" +description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key and no plugin install." +--- + +# Install Arcade in any MCP client + +Any client that speaks the Streamable HTTP MCP transport can use Arcade tools, OpenCode included. Add this as an MCP server: + +```text +{{ARCADE_PLUGIN_GATEWAY_URL}} +``` + +Your agent gets every tool on the gateway. Nothing else about how you use it changes. + +## One-click links + +Cursor and VS Code can add the gateway without editing any config: + +- **Cursor:** use [this link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}) for a one-click MCP install. +- **VS Code:** use [this link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) for a one-click MCP install. + +Both of those clients also load the full plugin, so use these only if you want the tools on their own. [Install the agent plugin](/get-started/agent-plugin) for the rest. + +## Sign in + +Your client signs you in to Arcade when it first connects, and each app gets authorized the first time a task needs it. See [signing in](/get-started/agent-plugin/tools-only#sign-in) for how the two layers fit together. + +## Try it + +- "What's on my calendar tomorrow?" +- "What apps can Arcade use?" + +## Next steps + +- [Tools-only MCP server](/get-started/agent-plugin/tools-only): what you give up by skipping the plugin +- [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex +- [Connect to MCP clients](/get-started/mcp-clients): point a client at a gateway you control, with your own tool list diff --git a/app/en/get-started/agent-plugin/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx similarity index 78% rename from app/en/get-started/agent-plugin/claude-desktop/page.mdx rename to app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx index aab35fa5e..90b26b3f3 100644 --- a/app/en/get-started/agent-plugin/claude-desktop/page.mdx +++ b/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx @@ -40,9 +40,7 @@ Install the Arcade bundle in Claude Desktop and run a task against one of your a ## Sign in -You authorize twice. Connecting Arcade signs you in and links Claude Desktop to the gateway. After that, the first time Claude reaches for an app, it returns a browser link asking you to authorize that app. Approve it and Arcade holds the token, so you only do this once per app. - -Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. +Connecting Arcade signs you in and links Claude Desktop to the gateway. After that, the first time Claude reaches for an app, it returns a browser link asking you to authorize that app. Approve it and Arcade holds the token, so you only do this once per app. See [signing in](/get-started/agent-plugin/tools-only#sign-in) for how the two layers fit together. ## Try it @@ -62,6 +60,6 @@ Save, then start a new conversation. You get the same tools this way; the bundle ## Next steps +- [Tools-only MCP server](/get-started/agent-plugin/tools-only): what you give up by skipping the plugin - [Install the agent plugin](/get-started/agent-plugin): the full experience in Cursor, Claude Code, VS Code, Copilot CLI, or Codex -- [From personal use to team rollout](/get-started/agent-plugin/team-rollout): move a workflow onto a gateway you control - [Use Arcade in Claude Desktop with your own gateway](/get-started/mcp-clients/claude-desktop): pick exactly which tools Claude can call diff --git a/app/en/get-started/agent-plugin/tools-only/page.mdx b/app/en/get-started/agent-plugin/tools-only/page.mdx index f35a4389d..a9949433f 100644 --- a/app/en/get-started/agent-plugin/tools-only/page.mdx +++ b/app/en/get-started/agent-plugin/tools-only/page.mdx @@ -1,21 +1,24 @@ --- -title: "Arcade tools without the plugin" -description: "Point any Streamable HTTP MCP client at the Arcade gateway to get tools for every app you connect, with no API key and no plugin install." +title: "Tools-only MCP server" +description: "Connect any MCP client to the Arcade gateway to get tools for every app you connect, without the agent plugin's skills, commands, or subagent." --- import { SignupLink } from "@/app/_components/analytics"; -# Arcade tools without the plugin +# Tools-only MCP server -The plugin bundles more than tools: two skills, three commands, and the `arcade-operator` subagent, all of which need a client that loads [agent plugins](https://agent-plugins.org). If you only want the tools, or your client does not load plugins at all, point it straight at the gateway: +The [agent plugin](/get-started/agent-plugin) ships more than tools: two skills, three commands, and the `arcade-operator` subagent, all of which need a client that loads [agent plugins](https://agent-plugins.org). Clients that do not, Claude Desktop among them, can still connect to the same gateway and get every tool on it. + +That is what this section covers. The gateway URL is: ```text {{ARCADE_PLUGIN_GATEWAY_URL}} ``` -Any client that speaks the Streamable HTTP MCP transport works, OpenCode included. Your agent gets every tool on the gateway and nothing else changes about how you use it. +## Install it -Cursor and VS Code can add the gateway this way in one click. [The install guide](/get-started/agent-plugin#tools-only) has those links. +- **[Claude Desktop](/get-started/agent-plugin/tools-only/claude-desktop)** installs from a downloadable bundle, so you never paste a URL. +- **[Any other MCP client](/get-started/agent-plugin/tools-only/any-mcp-client)** takes the gateway URL directly. Cursor and VS Code also have one-click links. ## What you give up @@ -33,11 +36,6 @@ No API keys. You authorize twice: your client signs you in to Arcade with your < Your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of the same gateway. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) covers the split in depth. -## Try it - -- "What's on my calendar tomorrow?" -- "What apps can Arcade use?" - ## Next steps - [Install the agent plugin](/get-started/agent-plugin): one command for Cursor, Claude Code, VS Code, Copilot CLI, and Codex diff --git a/app/en/get-started/mcp-clients/claude-desktop/page.mdx b/app/en/get-started/mcp-clients/claude-desktop/page.mdx index 3bade526b..34d5b9037 100644 --- a/app/en/get-started/mcp-clients/claude-desktop/page.mdx +++ b/app/en/get-started/mcp-clients/claude-desktop/page.mdx @@ -36,7 +36,7 @@ export const STEP_7_LIGHT_HEIGHT = 2450; **Setting Arcade up for yourself?** Install [the Arcade - bundle](/get-started/agent-plugin/claude-desktop), which needs no API key and + bundle](/get-started/agent-plugin/tools-only/claude-desktop), which needs no API key and authorizes each app in the browser. This guide is for pointing Claude Desktop at a gateway you control, with your own tool list and your own end-user identities. diff --git a/redirects.ts b/redirects.ts index fbc1c82bc..9285e762c 100644 --- a/redirects.ts +++ b/redirects.ts @@ -1165,7 +1165,12 @@ export const redirects: Redirect[] = [ }, { source: "/:locale/get-started/agent-plugin/any-mcp-client", - destination: "/:locale/get-started/agent-plugin/tools-only", + destination: "/:locale/get-started/agent-plugin/tools-only/any-mcp-client", + permanent: true, + }, + { + source: "/:locale/get-started/agent-plugin/claude-desktop", + destination: "/:locale/get-started/agent-plugin/tools-only/claude-desktop", permanent: true, }, ]; From ea2cbc3bdc037e26ba7de24f558ba93ff8d2f29e Mon Sep 17 00:00:00 2001 From: "arcade-docs-bot[bot]" <321924871+arcade-docs-bot[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 17:23:24 +0000 Subject: [PATCH 08/11] =?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 | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/public/llms.txt b/public/llms.txt index 3800b1c4f..9fb1aa712 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -1,4 +1,4 @@ - + # Arcade @@ -140,7 +140,8 @@ Arcade docs serve two audiences. Start with the path that matches your goal: - [Hybrid MCP servers](https://docs.arcade.dev/en/operate/deploy/on-prem): Documentation page - [Identity](https://docs.arcade.dev/en/operate/identity): Documentation page - [In Custom Applications](https://docs.arcade.dev/en/build/tool-calling/custom-apps): Documentation page -- [Install Arcade in Claude Desktop](https://docs.arcade.dev/en/get-started/agent-plugin/claude-desktop): Documentation page +- [Install Arcade in any MCP client](https://docs.arcade.dev/en/get-started/agent-plugin/tools-only/any-mcp-client): Documentation page +- [Install Arcade in Claude Desktop](https://docs.arcade.dev/en/get-started/agent-plugin/tools-only/claude-desktop): Documentation page - [Install the Arcade agent plugin](https://docs.arcade.dev/en/get-started/agent-plugin): Documentation page - [Mastra](https://docs.arcade.dev/en/get-started/agent-frameworks/mastra): This documentation page guides users in building a TypeScript AI agent using the Mastra framework, enabling interaction with Gmail and Slack through Arcade tools. Users will learn to create an agent capable of reading emails, sending messages, and summarizing emails for Slack, - [MCP Gateways](https://docs.arcade.dev/en/operate/governance/mcp-gateways): Documentation page From d6d785dbeb0273cc6393318c757fa573e975a39a Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 14:56:26 -0400 Subject: [PATCH 09/11] continue to iterate --- app/en/get-started/agent-plugin/page.mdx | 66 +++++++++---------- .../tools-only/any-mcp-client/page.mdx | 8 ++- .../tools-only/claude-desktop/page.mdx | 9 ++- 3 files changed, 45 insertions(+), 38 deletions(-) diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index da24c7d2c..4f7c292e1 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -8,12 +8,12 @@ import { SignupLink } from "@/app/_components/analytics"; # Install the Arcade agent plugin -The Arcade agent plugin puts Arcade inside your coding agent with one command. Your agent gains tools for email, calendar, chat, issues, docs, and dozens of other apps, and you authorize each app in the browser the first time it comes up. No API keys to create, no gateway to configure. +The Arcade agent plugin puts Arcade inside your agent with one command. Your agent gains access to thousands of tools for email, calendar, chat, issues, docs, and dozens of other apps. You authorize each app in the browser the first time it comes up. No API keys to create, no gateway to configure. -Install the Arcade agent plugin in your coding agent and run your first task against a connected app. +Install the Arcade agent plugin in your agent and run your first task against a connected app. @@ -28,8 +28,8 @@ Install the Arcade agent plugin in your coding agent and run your first task aga - The plugin is built for personal use. When you are ready to put - a workflow in front of a team, read [from personal use to team + The plugin is built for personal use. When you are ready to put a workflow in + front of a team, read [from personal use to team rollout](/get-started/agent-plugin/team-rollout). You will want your own [MCP Gateway](/operate/governance/mcp-gateways) with a curated tool list and your own identity provider. @@ -61,27 +61,20 @@ Reload your agent afterwards if it does not pick up the plugin on its own. A cou Two things worth knowing if you use more than one agent. Codex and ChatGPT share a plugin directory, so one install covers both. And VS Code can discover a copy installed through GitHub Copilot CLI, so install in one place rather than both. -Using Claude Desktop, or a client that does not load plugins? Those connect to the same gateway as a [tools-only MCP server](/get-started/agent-plugin/tools-only). +// todo: claude mcpb instructions -## Tools only - -If you want Arcade tools without the skills, commands, and subagent, Cursor and VS Code can add the gateway on its own: - -- **Cursor:** use [this link]({{ARCADE_PLUGIN_CURSOR_INSTALL_LINK}}) for a one-click MCP install. -- **VS Code:** use [this link]({{ARCADE_PLUGIN_VSCODE_INSTALL_LINK}}) for a one-click MCP install. - -For any other client, add the gateway URL by hand. See [Tools-only MCP server](/get-started/agent-plugin/tools-only). +Using a client that does not load plugins? Those connect to the same gateway as a [tools-only MCP server](/get-started/agent-plugin/tools-only). ## Sign in -You authorize twice, and the two are doing different jobs. +Authentication happens in two layers: -1. **Into the gateway.** Your client asks you to authenticate when it first connects. You sign in to Arcade in the browser, and the client can reach the gateway from then on. -2. **Into each app.** When a task needs Gmail, Slack, Linear, or anything else, your agent hands you a link that grants the scopes that task requires. Approve it once and Arcade holds the token for that app. +1. **Into the gateway.** Your client will ask you to authenticate when it first connects. You sign in to Arcade in the browser, and the client can reach the gateway from then on. +2. **Into each app.** When a task needs Gmail, Slack, Linear, or anything else, your agent hands you a link that grants the scopes that task requires. Approve it once and Arcade holds the token for that app. You won't need to authenticate that service again unless a later task requires greater scopes. -You never give your agent an API key or a password for either layer. Ask your agent to run `/arcade-status` to see where you stand, or `/arcade-connect google` to authorize an app before you need it. +You never give your agent an API key or a password for either layer. Ask your agent to run `/arcade-status` to see what applications are currently enabled , or `/arcade-connect google` to authorize an app with the widest possible scope before you need it. -Every install points at the same gateway URL, but your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of that gateway. No one else's agent can reach your apps. +All of your tool calls, tokens, and secrets route through your own Arcade project, isolated from every other user of that gateway. No one else's agent can ever reach your apps, tools, or tokens. Every Arcade gateway works this way, not just the one in the plugin. [Server-level and tool-level authorization](/learn/server-level-vs-tool-level-auth) goes deeper on the split. @@ -89,22 +82,22 @@ Every Arcade gateway works this way, not just the one in the plugin. [Server-lev Every install connects to the same Arcade gateway and gets the same tools. What differs is how much of the rest of the plugin each agent can load. -| Agent | Tools | Skills | Subagent | Commands | Rule | Hooks | -| --- | :--: | :--: | :--: | :--: | :--: | :--: | -| Cursor | ✅ | 2 | ✅ | 3 | ✅ | ✅ | -| Claude Code | ✅ | 2 | ✅ | 3 | — | ✅ | -| Claude Cowork | ✅ | 2 | ✅ | 3 | — | ✅ | -| GitHub Copilot CLI | ✅ | 2 | ✅ | — | — | — | -| VS Code | ✅ | 2 | — | — | — | — | -| Codex and ChatGPT | ✅ | 2 | — | — | — | — | -| Claude Desktop | ✅ | — | — | — | — | — | -| Any other MCP client | ✅ | — | — | — | — | — | +| Agent | Tools | Skills | Subagent | Commands | Rule | Hooks | +| -------------------- | :------------: | :----: | :------: | :------: | :--: | :---: | --- | -------------- | +| Cursor | ✅ | 2 | ✅ | 3 | ✅ | ✅ | +| Claude Code | ✅ | 2 | ✅ | 3 | — | ✅ | +| Claude Cowork | ✅ | 2 | ✅ | 3 | — | ✅ | +| GitHub Copilot CLI | ✅ | 2 | ✅ | — | — | — | +| VS Code | ✅ | 2 | — | — | — | — | +| Codex and ChatGPT | ✅ | 2 | — | — | — | — | +| Any other MCP client | ✅ | — | — | — | — | — | +| // | Claude Desktop | ✅ | — | — | — | — | — | TODO: not true | Here is what each of those is for. **Commands** are the part you type. `/arcade-status` reports whether the gateway is reachable, whether you have signed in, and which apps you have authorized. `/arcade-connect ` authorizes an app on demand, so you are not interrupted mid-task. `/arcade-apps` lists what you have connected and lets you disconnect one. -**Skills** are instructions your agent reads on its own, so you never have to invoke them. `try-arcade` teaches it to turn a request like "reply to that thread" into the right sequence of tool calls across your apps. `scale-arcade` handles the other kind of question, the one about moving a workflow onto a team gateway, and it walks you through the decisions on [this page](/get-started/agent-plugin/team-rollout) against your own workspace. +**Skills** are instructions your agent reads on its own, so you never have to invoke them. `try-arcade` teaches it to turn a request like "reply to that thread" into the right sequence of tool calls across your apps. `scale-arcade` handles the other kind of question, the one about moving a workflow onto a team gateway, and it walks you through the decisions on [this page](/get-started/agent-plugin/team-rollout) against your own project. **The subagent**, `arcade-operator`, runs an app task in its own context and reports back just the result. Arcade exposes a lot of tools, and searching them fills a conversation with noise that pushes out your actual work. The operator absorbs that. @@ -114,14 +107,17 @@ The columns thin out because the [Agent Plugins](https://agent-plugins.org) 1.0 ## Try it -Ask your agent for an outcome rather than naming a tool: +The Arcade Agent Plugin exposes hundreds of tools from our catalog that need zero additional configuration. Try asking your agent: + +- "Send a summary of tomorrow's calendar events to me on Slack." +- "Read my Granola notes from last week, check them against Linear, and file anything I promised that is not a ticket yet. Wait for me before creating anything." +- "Find unread mail that needs a reply. Look the sender up in HubSpot if you can, draft a response, and Slack me the draft before sending." +- "Pull my open GitHub pull requests, my Linear issues, and tomorrow's calendar. Write a standup update and send it to me on Slack." +- "Search my Drive and Notion for the latest product spec, then drop a one-paragraph summary in Slack." -- "What's on my calendar tomorrow?" -- "Summarize the unread email from this week." -- "Draft a reply to that thread, then wait for me before sending it." -- "What can Arcade do?" +Or ask "What can Arcade do?" and pick a workflow from the answer. -Your agent asks you to confirm before it sends, creates, or deletes anything. +\ ## Next steps diff --git a/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx b/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx index 7a6a5e812..0aae74c1e 100644 --- a/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx +++ b/app/en/get-started/agent-plugin/tools-only/any-mcp-client/page.mdx @@ -28,7 +28,13 @@ Your client signs you in to Arcade when it first connects, and each app gets aut ## Try it -- "What's on my calendar tomorrow?" +Ask your agent for an outcome rather than naming a tool. This gateway has every [optimized toolkit](/resources/integrations). The first time a task needs an app you have not authorized, your agent hands you a link. Approve it and the rest of the task continues, including steps that land in a different app. + +Swap the app names for whatever you actually use: + +- "Send a summary of tomorrow's calendar events to me on Slack." +- "Read my Granola notes from last week, check them against Linear, and file anything I promised that is not a ticket yet. Wait for me before creating anything." +- "Find unread mail that needs a reply. Draft a response, Slack me the draft, and wait for me before sending it." - "What apps can Arcade use?" ## Next steps diff --git a/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx b/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx index 90b26b3f3..da23c1867 100644 --- a/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx +++ b/app/en/get-started/agent-plugin/tools-only/claude-desktop/page.mdx @@ -44,9 +44,14 @@ Connecting Arcade signs you in and links Claude Desktop to the gateway. After th ## Try it -- "What's on my calendar tomorrow?" +Ask Claude for an outcome rather than naming a tool. This gateway has every [optimized toolkit](/resources/integrations). The first time a task needs an app you have not authorized, Claude hands you a link. Approve it and the rest of the task continues, including steps that land in a different app. + +Swap the app names for whatever you actually use: + +- "Send a summary of tomorrow's calendar events to me on Slack." +- "Read my Granola notes from last week, check them against Linear, and file anything I promised that is not a ticket yet. Wait for me before creating anything." +- "Find unread mail that needs a reply. Draft a response, Slack me the draft, and wait for me before sending it." - "What apps can Arcade use?" -- "Summarize the unread email from this week." ## Add the gateway by hand instead From 94b8415c17a0b99027c07f304a3df2b8d2d433ba Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 19:48:47 -0400 Subject: [PATCH 10/11] Update app/en/get-started/agent-plugin/page.mdx Co-authored-by: Mateo Torres --- app/en/get-started/agent-plugin/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/get-started/agent-plugin/page.mdx b/app/en/get-started/agent-plugin/page.mdx index 4f7c292e1..73526ada5 100644 --- a/app/en/get-started/agent-plugin/page.mdx +++ b/app/en/get-started/agent-plugin/page.mdx @@ -20,7 +20,7 @@ Install the Arcade agent plugin in your agent and run your first task against a 1. [Node.js](https://nodejs.org) so you can run `npx` -2. A supported agent: Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex +2. An agent with [plugins](https://agent-plugins.org) support: Cursor, Claude Code, VS Code, GitHub Copilot CLI, or Codex 3. An Arcade account From 9fa0f851c5d5f39845667518d5baf134044e458a Mon Sep 17 00:00:00 2001 From: Teal Larson Date: Thu, 3 Sep 2026 19:49:14 -0400 Subject: [PATCH 11/11] Update app/en/get-started/agent-plugin/tools-only/page.mdx Co-authored-by: Mateo Torres --- app/en/get-started/agent-plugin/tools-only/page.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/en/get-started/agent-plugin/tools-only/page.mdx b/app/en/get-started/agent-plugin/tools-only/page.mdx index a9949433f..933b1812e 100644 --- a/app/en/get-started/agent-plugin/tools-only/page.mdx +++ b/app/en/get-started/agent-plugin/tools-only/page.mdx @@ -28,7 +28,7 @@ Tools alone still do the work. What you lose is the part that helps your agent u - **The commands** give you `/arcade-status`, `/arcade-connect`, and `/arcade-apps` for checking and managing connections without leaving your agent. - **The subagent** keeps tool search out of your main conversation, so it does not crowd out your actual work. -If your client supports plugins, [install the full plugin](/get-started/agent-plugin) instead. +If your client supports [plugins](https://agent-plugins.org), you should [install the full plugin](/get-started/agent-plugin) instead. ## Sign in