Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .cursorrules
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ You are writing documentation for Arcade, an AI platform for developers. Follow
3. **Sentence case**: Use sentence case for titles and headings.
4. **Active voice**: Make instructions direct and easy to follow.
5. **Friendly and supportive**: Assume the reader is eager to learn, and maintain a positive, approachable tone.
6. **Developer-focused**: Tailor language to developers. Assume basic Python knowledge but introduce Arcade concepts clearly.
6. **Persona-aware**: Write for agent developers (Get Started, Build) or platform operators (Operate). Name the audience in the page intro. For developers, assume basic Python knowledge; for operators, focus on deploy, identity, and governance.
7. **Encourage exploration**: Use phrases that invite experimentation, like “Let’s try…” or “You can explore…”
8. **Always refer to the product as 'Arcade'**. Do not abbreviate or shorten the product name.
9. **Code first**: Provide clear, copy/paste-ready code snippets, with brief, essential comments.
Expand Down
2 changes: 1 addition & 1 deletion AUTHORING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ These are the guidelines for writing documentation for Arcade, to help keep the

- **Active voice**: Write in an active voice to make the instructions direct and easy to follow. Example: “Install Arcade” rather than “Arcade should be installed.”
- **Friendly and supportive**: Assume the reader is unfamiliar with Arcade but is eager to learn. Keep the tone positive, friendly, and approachable.
- **Developer-focused**: Tailor your language to a developer audience, using code-centric explanations but ensuring clarity for beginners. Assume the reader knows Python but might be unfamiliar with Arcade’s specifics.
- **Persona-aware**: Arcade docs serve **agent developers** (Get Started, Build) and **platform operators** (Operate). Open each page by naming who it is for. For agent developers, use code-centric explanations and assume basic Python knowledge. For platform operators, emphasize deployment, identity, and governance; link out to Build when code samples belong there.
- **Encouraging exploration**: Use phrases that invite readers to try things out and explore the capabilities of Arcade. Example: “Let’s try…” or “You can explore…”

## Examples and code
Expand Down
16 changes: 16 additions & 0 deletions STYLEGUIDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,22 @@ Vale handles mechanical style checks (grammar, passive voice, etc.). This guide

Assume readers know programming fundamentals. Don't explain what a function is, but do explain Arcade-specific concepts.

### Write for the right persona

Arcade docs serve two primary personas. State which one a page is for in the opening paragraph.

| Persona | Who they are | Primary sections |
| --- | --- | --- |
| **Agent developer** | Builds agents, calls tools, or ships custom MCP servers | Get Started, Build |
| **Platform operator** | Deploys, secures, and governs Arcade for an organization | Operate |

Shared sections (Learn, Resources, References) serve both. When a topic diverges by job, link to the other persona's path instead of mixing both workflows on one page.

- **Do:** "These docs are for platform operators who deploy Arcade for a company."
- **Don't:** Assume every reader is building an agent, or bury operator setup under developer quickstarts.

Prefer **Operate** (or "platform operator") over vague labels like "Enterprise" when naming navigation or page audiences.

### Use "you" for the reader

- **Do:** "You can configure the server with environment variables" or "Configure the server with environment variables"
Expand Down
6 changes: 3 additions & 3 deletions app/_components/starter-tool-info.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const StarterToolInfo: React.FC<StarterToolInfoProps> = ({ toolkitName }) => (
<p>
{toolkitName} is a{" "}
<u>
<a href="/guides/create-tools/improve/types-of-tools#unoptimized-tools">
<a href="/build/create-tools/improve/types-of-tools#unoptimized-tools">
Unoptimized MCP Server
</a>
</u>
Expand All @@ -21,15 +21,15 @@ const StarterToolInfo: React.FC<StarterToolInfoProps> = ({ toolkitName }) => (
<p>
Differently from{" "}
<u>
<a href="/guides/create-tools/improve/types-of-tools#optimized-tools">
<a href="/build/create-tools/improve/types-of-tools#optimized-tools">
Optimized MCP Servers
</a>
</u>
, Unoptimized tools are heavily influenced by the original API design,
which is not usually optimized for LLM usage. For this reason, we
recommend thoroughly evaluating the tools with your Agents or chatbots
before using it in production.{" "}
<a href="/guides/create-tools/improve/types-of-tools">Read more</a> about
<a href="/build/create-tools/improve/types-of-tools">Read more</a> about
Optimized vs Unoptimized tools.
</p>
</Callout>
Expand Down
2 changes: 1 addition & 1 deletion app/_components/tool-footer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const ToolFooter: React.FC<ToolFooterProps> = ({ pipPackageName }) => (
description={
"Arcade tools can be self-hosted on your own infrastructure. Learn more about self-hosting."
}
href="/guides/deployment-hosting"
href="/operate/deploy"
icon={Puzzle}
title="Self Host Arcade tools"
/>
Expand Down
10 changes: 7 additions & 3 deletions app/en/_meta.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
Home,
Pencil,
Ruler,
ServerCog,
} from "lucide-react";
import type { MetaRecord } from "nextra";

Expand Down Expand Up @@ -41,12 +42,15 @@ export const meta: MetaRecord = {
"get-started": {
title: <TitleWithIcon icon={BookOpen}>Get Started</TitleWithIcon>,
},
build: {
title: <TitleWithIcon icon={Ruler}>Build</TitleWithIcon>,
},
operate: {
title: <TitleWithIcon icon={ServerCog}>Operate</TitleWithIcon>,
},
resources: {
title: <TitleWithIcon icon={Pencil}>Resources</TitleWithIcon>,
},
guides: {
title: <TitleWithIcon icon={Ruler}>Guides</TitleWithIcon>,
},
learn: {
title: <TitleWithIcon icon={Book}>Learn</TitleWithIcon>,
},
Expand Down
17 changes: 4 additions & 13 deletions app/en/guides/_meta.tsx → app/en/build/_meta.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,8 @@
import type { MetaRecord } from "nextra";

export const meta: MetaRecord = {
"audit-logs": {
title: "Audit Logs",
},
"contextual-access": {
title: "Contextual Access",
},
"mcp-gateways": {
title: "MCP Gateways",
},
"user-sources": {
title: "User Sources",
index: {
title: "Overview",
},
"tool-calling": {
title: "Call tools",
Expand All @@ -22,8 +13,8 @@ export const meta: MetaRecord = {
"user-facing-agents": {
title: "User-facing agents",
},
"deployment-hosting": {
title: "Deployment & hosting",
"arcade-deploy": {
title: "Arcade Deploy",
},
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { SignupLink } from "@/app/_components/analytics";
Running your MCP servers locally is very convenient during development and testing. Once your MCP server is mature, however, you may want to access it from any MCP client, or to facilitate multi-user support. Doing all that from your computer comes with the complexity of running and maintaining a server, handling auth and high availability for all your users and all the integrations you want to support. Arcade Deploy takes care of all that for you. Your MCP server will be registered to Arcade, adding all the tools you created to the larger tool catalog. From there, you can create MCP Gateways to pick and choose which tools you want to use in your MCP clients, which can be from any connected MCP server.

<Callout type="info">
Arcade Deploy hosts *your* MCP server on Arcade Cloud. It's a feature for serving tools — not a way to deploy the Arcade platform. For a full platform deployment, see the [marketplace guides](/guides/deployment-hosting) or [self-host with Helm](/guides/deployment-hosting/helm).
Arcade Deploy hosts *your* MCP server on Arcade Cloud. It's a feature for serving tools — not a way to deploy the Arcade platform. For a full platform deployment, see the [marketplace guides](/operate/deploy) or [self-host with Helm](/operate/deploy/helm).
</Callout>

<GuideOverview>
Expand All @@ -25,7 +25,7 @@ This guide shows you how to deploy your MCP Server with Arcade Deploy.

- <DashboardLink path="register" />
- [uv package manager](https://docs.astral.sh/uv/getting-started/installation/)
- [Create an MCP Server](/guides/create-tools/tool-basics/build-mcp-server)
- [Create an MCP Server](/build/create-tools/tool-basics/build-mcp-server)

</GuideOverview.Prerequisites>

Expand Down Expand Up @@ -64,7 +64,7 @@ This guide shows you how to deploy your MCP Server with Arcade Deploy.

## Create an MCP server using Arcade MCP

If you have not created an MCP server yet, then follow the steps outlined in [this guide](/guides/create-tools/tool-basics/build-mcp-server) before deploying.
If you have not created an MCP server yet, then follow the steps outlined in [this guide](/build/create-tools/tool-basics/build-mcp-server) before deploying.

## Deploy your MCP Server

Expand Down Expand Up @@ -152,11 +152,11 @@ Navigate to the [Servers](https://api.arcade.dev/dashboard/servers) page in your
- Test and execute all the tools
- Manage users connected to the Auth providers
- Manage the secrets for the server
- Create [MCP Gateways](/guides/mcp-gateways)
- Create [MCP Gateways](/operate/governance/mcp-gateways)

## Create an MCP Gateway to call the tools in your MCP Server

Once the MCP server is deployed to Arcade, all the tools in the server will be available in the [tool catalog](https://api.arcade.dev/dashboard/tools) page in your Arcade dashboard. To call the tools from an MCP client, you first need to [create an MCP Gateway](/guides/mcp-gateways) to pick and choose which tools you want to use in your MCP clients.
Once the MCP server is deployed to Arcade, all the tools in the server will be available in the [tool catalog](https://api.arcade.dev/dashboard/tools) page in your Arcade dashboard. To call the tools from an MCP client, you first need to [create an MCP Gateway](/operate/governance/mcp-gateways) to pick and choose which tools you want to use in your MCP clients.

When creating an MCP gateway, you can select the tools you want to include in the Gateway from any MCP Servers available to the project, including the one you just deployed.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,18 @@ import type { MetaRecord } from "nextra";
export const meta: MetaRecord = {
"tool-basics": {
title: "Build a tool",
href: "/guides/create-tools/tool-basics",
href: "/build/create-tools/tool-basics",
},
"evaluate-tools": {
title: "Evaluate tools",
href: "/guides/create-tools/evaluate-tools",
href: "/build/create-tools/evaluate-tools",
},
improve: {
title: "Improve an existing toolkit",
},
"error-handling": {
title: "Handle errors",
href: "/guides/create-tools/error-handling",
href: "/build/create-tools/error-handling",
},
"secure-your-server": {
title: "Secure your server",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ Learn how to implement robust error handling that improves user experience and e

Robust error handling is crucial for building reliable tools that provide great user experiences. Arcade provides a comprehensive error handling system that helps you manage different types of errors gracefully.

<SubpageList basePath="/guides/create-tools/error-handling" meta={meta} />
<SubpageList basePath="/build/create-tools/error-handling" meta={meta} />
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ def search_posts(
# ... rest of implementation
```

Learn more about [RetryableToolError](/guides/create-tools/error-handling/retry-tools).
Learn more about [RetryableToolError](/build/create-tools/error-handling/retry-tools).

### ContextRequiredToolError

Expand Down Expand Up @@ -234,4 +234,4 @@ This will raise a `ToolOutputError` because the return type doesn't match the an

## Handling tool errors in agents

To learn more about how to handle tool errors in your Agent, see the [Use Tools](/guides/tool-calling/error-handling) section.
To learn more about how to handle tool errors in your Agent, see the [Use Tools](/build/tool-calling/error-handling) section.
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ ExpectedMCPToolCall("GetWeather", {"location": "Tokyo", "units": "celsius"})

### Step 3: Add critics

Add critics to validate parameters. See [Critics](/guides/create-tools/evaluate-tools/create-evaluation-suite#critics) for options.
Add critics to validate parameters. See [Critics](/build/create-tools/evaluate-tools/create-evaluation-suite#critics) for options.

### Step 4: Run evaluations

Expand Down Expand Up @@ -441,5 +441,5 @@ suite = EvalSuite(

## Next steps

- Learn about [comparative evaluations](/guides/create-tools/evaluate-tools/comparative-evaluations) to compare tool sources
- [Create evaluation suites](/guides/create-tools/evaluate-tools/create-evaluation-suite) with expectations
- Learn about [comparative evaluations](/build/create-tools/evaluate-tools/comparative-evaluations) to compare tool sources
- [Create evaluation suites](/build/create-tools/evaluate-tools/create-evaluation-suite) with expectations
Original file line number Diff line number Diff line change
Expand Up @@ -522,7 +522,7 @@ Combine comparative tracks with multiple models:
arcade evals . -p openai:gpt-4o,gpt-4o-mini -p anthropic:claude-sonnet-4-5-20250929
```

Multi-run flags (`--num-runs`, `--seed`, `--multi-run-pass-rule`) also work with comparative tracks. See [Run evaluations](/guides/create-tools/evaluate-tools/run-evaluations).
Multi-run flags (`--num-runs`, `--seed`, `--multi-run-pass-rule`) also work with comparative tracks. See [Run evaluations](/build/create-tools/evaluate-tools/run-evaluations).

Results show:

Expand Down Expand Up @@ -752,6 +752,6 @@ suite.add_tool_catalog(catalog_v2, track="Python v2")

## Next steps

- [Create an evaluation suite](/guides/create-tools/evaluate-tools/create-evaluation-suite) with tracks
- Use [capture mode](/guides/create-tools/evaluate-tools/capture-mode) to discover track-specific tool calls
- [Run evaluations](/guides/create-tools/evaluate-tools/run-evaluations) with multiple models and tracks
- [Create an evaluation suite](/build/create-tools/evaluate-tools/create-evaluation-suite) with tracks
- Use [capture mode](/build/create-tools/evaluate-tools/capture-mode) to discover track-specific tool calls
- [Run evaluations](/build/create-tools/evaluate-tools/run-evaluations) with multiple models and tracks
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { Steps, Tabs, Callout } from "nextra/components";

### Prerequisites

- [Create an MCP Server](/guides/create-tools/tool-basics/build-mcp-server)
- [Create an MCP Server](/build/create-tools/tool-basics/build-mcp-server)
- Install the evaluation dependencies:

<Tabs items={["uv", "pip"]} storageKey="packageManager">
Expand Down Expand Up @@ -164,7 +164,7 @@ arcade evals . --num-runs 3 --seed random --multi-run-pass-rule majority
</Tabs.Tab>
</Tabs>

See [Run evaluations](/guides/create-tools/evaluate-tools/run-evaluations) for all available options.
See [Run evaluations](/build/create-tools/evaluate-tools/run-evaluations) for all available options.

### Understand the results

Expand Down Expand Up @@ -380,6 +380,6 @@ If you want stricter suites, increase thresholds (for example `fail_threshold=0.

## Next steps

- Learn how to [run evaluations with different providers](/guides/create-tools/evaluate-tools/run-evaluations)
- Explore [capture mode](/guides/create-tools/evaluate-tools/capture-mode) to record tool calls
- Compare tool sources with [comparative evaluations](/guides/create-tools/evaluate-tools/comparative-evaluations)
- Learn how to [run evaluations with different providers](/build/create-tools/evaluate-tools/run-evaluations)
- Explore [capture mode](/build/create-tools/evaluate-tools/capture-mode) to record tool calls
- Compare tool sources with [comparative evaluations](/build/create-tools/evaluate-tools/comparative-evaluations)
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ import meta from './_meta';

Learn how to systematically test and improve your tools to ensure they work reliably in production. Use these techniques after you've built your initial tools to validate their performance and guide iterative improvements.

<SubpageList basePath="/guides/create-tools/evaluate-tools" meta={meta} />
<SubpageList basePath="/build/create-tools/evaluate-tools" meta={meta} />
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ Capture mode is useful for:
- Debugging model behavior
- Understanding tool call patterns

See [Capture mode](/guides/create-tools/evaluate-tools/capture-mode) for details.
See [Capture mode](/build/create-tools/evaluate-tools/capture-mode) for details.

## Output formats

Expand Down Expand Up @@ -497,5 +497,5 @@ Ensure your evaluation files:

## Next steps

- Explore [capture mode](/guides/create-tools/evaluate-tools/capture-mode) for recording tool calls
- Learn about [comparative evaluations](/guides/create-tools/evaluate-tools/comparative-evaluations) for comparing tool sources
- Explore [capture mode](/build/create-tools/evaluate-tools/capture-mode) for recording tool calls
- Learn about [comparative evaluations](/build/create-tools/evaluate-tools/comparative-evaluations) for comparing tool sources
Original file line number Diff line number Diff line change
Expand Up @@ -65,23 +65,23 @@ FAILED Wrong tool selected -- Score: 50.00%

## Next steps

- [Create an evaluation suite](/guides/create-tools/evaluate-tools/create-evaluation-suite) to start testing your tools
- [Run evaluations](/guides/create-tools/evaluate-tools/run-evaluations) with multiple providers
- Explore [capture mode](/guides/create-tools/evaluate-tools/capture-mode) to bootstrap test expectations
- Compare tool sources with [comparative evaluations](/guides/create-tools/evaluate-tools/comparative-evaluations)
- [Create an evaluation suite](/build/create-tools/evaluate-tools/create-evaluation-suite) to start testing your tools
- [Run evaluations](/build/create-tools/evaluate-tools/run-evaluations) with multiple providers
- Explore [capture mode](/build/create-tools/evaluate-tools/capture-mode) to bootstrap test expectations
- Compare tool sources with [comparative evaluations](/build/create-tools/evaluate-tools/comparative-evaluations)

## Advanced features

Once you're comfortable with basic evaluations, explore these advanced capabilities:

### Capture mode

Record tool calls without scoring to discover what models actually call. Useful for bootstrapping test expectations and debugging. [Learn more →](/guides/create-tools/evaluate-tools/capture-mode)
Record tool calls without scoring to discover what models actually call. Useful for bootstrapping test expectations and debugging. [Learn more →](/build/create-tools/evaluate-tools/capture-mode)

### Comparative evaluations

Test the same cases against different tool sources (tracks) with isolated registries. Compare how models perform with different tool implementations. [Learn more →](/guides/create-tools/evaluate-tools/comparative-evaluations)
Test the same cases against different tool sources (tracks) with isolated registries. Compare how models perform with different tool implementations. [Learn more →](/build/create-tools/evaluate-tools/comparative-evaluations)

### Output formats

Save results in multiple formats (txt, md, html, json) for reporting and analysis. Specify output files with extensions or use no extension for all formats. [Learn more →](/guides/create-tools/evaluate-tools/run-evaluations#output-formats)
Save results in multiple formats (txt, md, html, json) for reporting and analysis. Specify output files with extensions or use no extension for all formats. [Learn more →](/build/create-tools/evaluate-tools/run-evaluations#output-formats)
Loading
Loading