Skip to content

Commit f989118

Browse files
github-actions[bot]nearestnaborsclaude
authored
Editorial improvements for #662 (#663)
* Editorial: Voice and Tone - Changed "you" references to be more direct; Terminology - Corrected "MCP Servers" to "MCP servers" * Editorial: Structural improvements * Editorial: Voice and Tone (Use "you" for the reader), Structure (Default Page Structure 10/20/70 format) - Added intro line and restructured opening * Update app/en/get-started/about-arcade/page.mdx * Update landing page with marketing feedback and fix MDX errors - Change hero title to "MCP Runtime for AI agents" - Rename "Arcade Engine" to "Runtime" and "Authorized Tool Calling" to "Agent Authorization" - Update Popular Integrations: remove Twitch, Spotify, Figma, Discord, Salesforce; add X, MS Teams, Outlook, HubSpot, Asana - Add logo rows to QuickStartCards with side gradient fade effect - Add gradient overlay to Popular Integrations section - Remove sample app images (outdated logos) - Center column titles, remove offset from Use Arcade column - Fix MDX syntax errors in about-arcade and examples pages Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Editorial cleanup: update copy and fix formatting - Remove editorial comment blocks from MDX files - Fix indentation on tags props in example cards - Update intro copy in examples and agent-frameworks pages - Add newlines at end of files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: RL "Nearest" Nabors <236306+nearestnabors@users.noreply.github.com> Co-authored-by: Rachel Lee Nabors <nearestnabors@users.noreply.github.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent f6ac7ff commit f989118

5 files changed

Lines changed: 149 additions & 78 deletions

File tree

app/_components/quick-start-card.tsx

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -61,28 +61,39 @@ export function QuickStartCard({
6161
{description}
6262
</p>
6363
{logos && logos.length > 0 && (
64-
<div className="mt-4 flex items-center justify-center gap-4 px-2">
65-
{logos.map((logo) => {
66-
const getInvertClass = () => {
67-
if (logo.invertInLight) {
68-
return "invert dark:invert-0";
69-
}
70-
if (logo.invertInDark) {
71-
return "dark:invert";
72-
}
73-
return "";
74-
};
75-
return (
76-
<img
77-
alt={logo.alt}
78-
className={`h-7 w-7 object-contain ${getInvertClass()}`}
79-
height={28}
80-
key={logo.src}
81-
src={logo.src}
82-
width={28}
83-
/>
84-
);
85-
})}
64+
<div className="relative mt-4 overflow-hidden">
65+
<div className="flex items-center justify-center gap-4 px-6">
66+
{logos.map((logo) => {
67+
const getInvertClass = () => {
68+
if (logo.invertInLight) {
69+
return "invert dark:invert-0";
70+
}
71+
if (logo.invertInDark) {
72+
return "dark:invert";
73+
}
74+
return "";
75+
};
76+
return (
77+
<img
78+
alt={logo.alt}
79+
className={`h-7 w-7 object-contain ${getInvertClass()}`}
80+
height={28}
81+
key={logo.src}
82+
src={logo.src}
83+
width={28}
84+
/>
85+
);
86+
})}
87+
</div>
88+
{/* Side gradients */}
89+
<div
90+
aria-hidden="true"
91+
className="pointer-events-none absolute inset-y-0 left-0 w-8 bg-linear-to-r from-white to-transparent dark:from-[rgb(17,17,17)]"
92+
/>
93+
<div
94+
aria-hidden="true"
95+
className="pointer-events-none absolute inset-y-0 right-0 w-8 bg-linear-to-l from-white to-transparent dark:from-[rgb(17,17,17)]"
96+
/>
8697
</div>
8798
)}
8899
{code && (

app/en/get-started/about-arcade/page.mdx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,25 @@ title: "How Arcade helps with Agent Authorization"
33
description: "Learn how Arcade helps with auth and tool calling"
44
---
55

6+
67
import { Tabs } from "nextra/components";
78

89
# About Arcade
910

10-
Applications that use models to perform tasks (_agentic applications_) commonly require access to sensitive data and services. Authentication complexities often hinder AI from performing tasks that require user-specific information, like what emails you recently received or what's coming up on your calendar.
11+
Applications that use models to perform tasks (_agentic applications_) commonly require access to sensitive data and services. Authentication complexities often hinder AI from performing tasks that require user-specific information, like what emails were recently received or what's coming up on a calendar.
1112

12-
To retrieve this information, agentic applications need to be able to authenticate and authorize access to external services you use like Gmail or Google Calendar.
13+
To retrieve this information, agentic applications need to be able to authenticate and authorize access to external services like Gmail or Google Calendar.
1314

14-
Authenticating to retrieve information, however, is not the only challenge. Agentic applications also need to authenticate to **act** on your behalf - like sending an email or updating your calendar.
15+
Authenticating to retrieve information, however, is not the only challenge. Agentic applications also need to authenticate to **act** on behalf of users - like sending an email or updating a calendar.
1516

1617
Without auth, AI agents are severely limited in what they can do.
1718

1819
## How Arcade solves this
1920

20-
Arcade provides an authorization system that handles OAuth 2.0, API keys, and user tokens needed by AI agents to access external services through tools. This means your AI agents can now act on behalf of users securely and privately.
21+
Arcade provides an authorization system that handles OAuth 2.0, API keys, and user tokens needed by AI agents to access external services through tools. This means AI agents can now act on behalf of users securely and privately.
2122

2223
<picture>
23-
<source srcSet="/images/overview-dark.png" media="(prefers-color-scheme: dark)" />
24+
<source srcSet="/images/overview-dark.png" media="(prefers-color-scheme: dark)"></source>
2425
<img src="/images/overview-light.png" alt="Arcade architecture overview" />
2526
</picture>
2627

@@ -32,15 +33,15 @@ With Arcade, developers can now create agents that can _act as the end users of
3233

3334
## Auth permissions and scopes
3435

35-
Each tool in Arcade's MCP Servers has a set of required permissions - or, more commonly referred to in OAuth 2.0, **scopes**. For example, the [`Gmail.SendEmail`](/resources/integrations/productivity/gmail#gmailsendemail) tool requires the [`https://www.googleapis.com/auth/gmail.send`](https://developers.google.com/identity/protocols/oauth2/scopes#gmail) scope.
36+
Each tool in Arcade's MCP servers has a set of required permissions - or, more commonly referred to in OAuth 2.0, **scopes**. For example, the [`Gmail.SendEmail`](/resources/integrations/productivity/gmail#gmailsendemail) tool requires the [`https://www.googleapis.com/auth/gmail.send`](https://developers.google.com/identity/protocols/oauth2/scopes#gmail) scope.
3637

3738
A scope is what the user has authorized someone else (in this case, the AI agent) to do on their behalf. In any OAuth 2.0-compatible service, each kind of action requires a different set of permissions. This gives the user fine-grained control over what data third-party services can access and what actions they can take in their accounts.
3839

3940
When an agent calls a tool, if the user has not granted the required permissions, Arcade Engine will automatically prompt the user to authorize the tool and coordinate the OAuth 2.0 flow with the service provider.
4041

4142
## How to implement OAuth 2.0-authorized tool calling
4243

43-
To learn how Arcade authorizes actions (tools) through OAuth 2.0 and how to implement your own auth flow, check out [Authorized Tool Calling](/guides/tool-calling/custom-apps/auth-tool-calling).
44+
To learn how Arcade authorizes actions (tools) through OAuth 2.0 and how to implement auth flow, check out [Authorized Tool Calling](/guides/tool-calling/custom-apps/auth-tool-calling).
4445

4546
## Tools that don't require authorization
4647

@@ -78,4 +79,4 @@ console.log(response.output.value);
7879
```
7980

8081
</Tabs.Tab>
81-
</Tabs>
82+
</Tabs>

app/en/guides/agent-frameworks/page.mdx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
```mdx
12
import { PlatformCard } from "@/app/_components/platform-card";
23
import { Tabs } from "nextra/components";
34

4-
{/* Editorial: Structure - Added intro line explaining what readers will learn; Voice and tone - Removed marketing language "seamlessly" and "making it straightforward" */}
5-
65
# Arcade with Agent Frameworks and MCP Clients
76

87
Arcade integrates with agent frameworks and MCP clients to add tool-calling capabilities to your AI applications.
98

9+
These guides are for developers building AI applications who need to connect Arcade tools to their agent frameworks or MCP clients. These guides show you how to authenticate with Arcade, load tools, and execute them within your chosen framework. Each guide provides code examples and configuration steps to get you started quickly.
10+
1011
## Agent Frameworks
1112

1213
<Tabs items={["Python", "JavaScript"]} storageKey="preferredLanguage">
@@ -71,4 +72,4 @@ Arcade integrates with agent frameworks and MCP clients to add tool-calling capa
7172
</div>
7273
</Tabs.Tab>
7374
</Tabs>
74-
```
75+
```

app/en/home/landing-page.tsx

Lines changed: 84 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ const POPULAR_INTEGRATIONS_ROW1 = [
6868
href: "/resources/integrations/productivity/google-slides",
6969
},
7070
{
71-
name: "Salesforce",
72-
icon: "/images/icons/salesforce.png",
73-
href: "/resources/integrations/sales/salesforce",
71+
name: "HubSpot",
72+
icon: "/images/icons/hubspot.png",
73+
href: "/resources/integrations/crm/hubspot",
7474
},
7575
{
7676
name: "Linear",
@@ -93,19 +93,19 @@ const POPULAR_INTEGRATIONS_ROW2 = [
9393
invertInLight: true,
9494
},
9595
{
96-
name: "Discord",
97-
icon: "/images/icons/discord.png",
98-
href: "/resources/integrations/social-communication/discord",
96+
name: "X",
97+
icon: "/images/icons/twitter.png",
98+
href: "/resources/integrations/social-communication/x",
9999
},
100100
{
101-
name: "Spotify",
102-
icon: "/images/icons/spotify.png",
103-
href: "/resources/integrations/entertainment/spotify",
101+
name: "MS Teams",
102+
icon: "/images/icons/ms_teams.png",
103+
href: "/resources/integrations/social-communication/microsoft-teams",
104104
},
105105
{
106-
name: "Figma",
107-
icon: "/images/icons/figma.svg",
108-
href: "/resources/integrations/development/figma",
106+
name: "Outlook",
107+
icon: "/images/icons/outlook_mail.png",
108+
href: "/resources/integrations/productivity/outlook-mail",
109109
},
110110
{
111111
name: "Stripe",
@@ -118,9 +118,9 @@ const POPULAR_INTEGRATIONS_ROW2 = [
118118
href: "/resources/integrations/productivity/notion",
119119
},
120120
{
121-
name: "Twitch",
122-
icon: "/images/icons/twitch.png",
123-
href: "/resources/integrations/entertainment/twitch",
121+
name: "Asana",
122+
icon: "/images/icons/asana.svg",
123+
href: "/resources/integrations/productivity/asana",
124124
},
125125
{
126126
name: "Reddit",
@@ -199,7 +199,7 @@ export function LandingPage() {
199199
};
200200

201201
return (
202-
<div>
202+
<div className="relative">
203203
{/* Hero Section */}
204204
<section className="relative isolate px-6 lg:px-8">
205205
<div
@@ -222,7 +222,7 @@ export function LandingPage() {
222222
initial={{ opacity: 0, y: 20 }}
223223
transition={{ duration: ANIMATION_DURATION }}
224224
>
225-
Authorized tools for AI agents that get things done.
225+
MCP Runtime for AI agents that get things done.
226226
</motion.h1>
227227
<motion.p
228228
animate={{ opacity: 1, y: 0 }}
@@ -290,14 +290,43 @@ export function LandingPage() {
290290
<div className="mx-auto grid max-w-4xl grid-cols-1 gap-8 min-[1062px]:grid-cols-2">
291291
{/* Get Tools Column */}
292292
<div>
293-
<h2 className="mb-6 text-center font-bold text-2xl text-gray-900 tracking-tight md:text-3xl min-[1062px]:text-left dark:text-white">
293+
<h2 className="mb-6 text-center font-bold text-2xl text-gray-900 tracking-tight md:text-3xl dark:text-white">
294294
Get Tools
295295
</h2>
296296
<div className="space-y-4">
297297
<QuickStartCard
298-
description="Browse 100+ ready-to-use integrations for Gmail, Slack, GitHub, Salesforce, and more."
298+
description="Browse 100+ ready-to-use integrations for Gmail, Slack, GitHub, and more."
299299
href="/resources/integrations"
300300
icon={Puzzle}
301+
logos={[
302+
{ src: "/images/icons/gmail.png", alt: "Gmail" },
303+
{ src: "/images/icons/slack.png", alt: "Slack" },
304+
{
305+
src: "/images/icons/github.png",
306+
alt: "GitHub",
307+
invertInLight: true,
308+
},
309+
{
310+
src: "/images/icons/google_sheets.svg",
311+
alt: "Google Sheets",
312+
},
313+
{ src: "/images/icons/jira.svg", alt: "Jira" },
314+
{ src: "/images/icons/notion.png", alt: "Notion" },
315+
{ src: "/images/icons/linear.svg", alt: "Linear" },
316+
{ src: "/images/icons/hubspot.png", alt: "HubSpot" },
317+
{ src: "/images/icons/stripe.svg", alt: "Stripe" },
318+
{
319+
src: "/images/icons/google_drive.png",
320+
alt: "Google Drive",
321+
},
322+
{ src: "/images/icons/dropbox.png", alt: "Dropbox" },
323+
{
324+
src: "/images/icons/confluence.svg",
325+
alt: "Confluence",
326+
invertInDark: true,
327+
},
328+
{ src: "/images/icons/reddit.png", alt: "Reddit" },
329+
]}
301330
title="Pre-built Integrations"
302331
/>
303332
<QuickStartCard
@@ -309,8 +338,8 @@ export function LandingPage() {
309338
</div>
310339
</div>
311340
{/* Use Tools Column */}
312-
<div className="min-[1062px]:mt-[100px]">
313-
<h2 className="mb-6 text-center font-bold text-2xl text-gray-900 tracking-tight md:text-3xl min-[1062px]:text-left dark:text-white">
341+
<div>
342+
<h2 className="mb-6 text-center font-bold text-2xl text-gray-900 tracking-tight md:text-3xl dark:text-white">
314343
Use Arcade
315344
</h2>
316345
<div className="space-y-4">
@@ -337,6 +366,29 @@ export function LandingPage() {
337366
description="Integrate with LangChain, OpenAI Agents, CrewAI, Vercel AI, and more."
338367
href="/guides/agent-frameworks"
339368
icon={Code}
369+
logos={[
370+
{
371+
src: "/images/icons/langchain.svg",
372+
alt: "LangChain",
373+
invertInDark: true,
374+
},
375+
{ src: "/images/icons/openai.png", alt: "OpenAI" },
376+
{
377+
src: "https://avatars.githubusercontent.com/u/170677839?s=200&v=4",
378+
alt: "CrewAI",
379+
},
380+
{
381+
src: "/images/icons/vercel.svg",
382+
alt: "Vercel AI",
383+
invertInDark: true,
384+
},
385+
{ src: "/images/icons/google.png", alt: "Google ADK" },
386+
{
387+
src: "/images/icons/mastra.svg",
388+
alt: "Mastra",
389+
invertInDark: true,
390+
},
391+
]}
340392
title="Power Your Agent"
341393
/>
342394
</div>
@@ -346,7 +398,7 @@ export function LandingPage() {
346398
</section>
347399

348400
{/* Popular Integrations Section */}
349-
<section className="bg-gray-50/50 py-16 dark:bg-gray-900/30">
401+
<section className="relative bg-gray-50/50 py-16 dark:bg-gray-900/30">
350402
<div className="container mx-auto px-4">
351403
<div className="mb-10 flex flex-col items-center text-center min-[1062px]:flex-row min-[1062px]:items-end min-[1062px]:justify-between min-[1062px]:text-left">
352404
<div>
@@ -395,7 +447,7 @@ export function LandingPage() {
395447
width={32}
396448
/>
397449
</div>
398-
<span className="text-center font-medium text-gray-900 text-sm dark:text-white">
450+
<span className="break-keep text-center font-medium text-gray-900 text-sm dark:text-white">
399451
{integration.name}
400452
</span>
401453
</Link>
@@ -421,14 +473,19 @@ export function LandingPage() {
421473
width={32}
422474
/>
423475
</div>
424-
<span className="text-center font-medium text-gray-900 text-sm dark:text-white">
476+
<span className="break-keep text-center font-medium text-gray-900 text-sm dark:text-white">
425477
{integration.name}
426478
</span>
427479
</Link>
428480
))}
429481
</div>
430482
</div>
431483
</div>
484+
{/* Gradient overlay */}
485+
<div
486+
aria-hidden="true"
487+
className="pointer-events-none absolute inset-x-0 bottom-0 h-[200px] bg-linear-to-t from-white to-transparent dark:from-[#0a0a0a]"
488+
/>
432489
</section>
433490

434491
{/* Framework Compatibility Section */}
@@ -463,7 +520,7 @@ export function LandingPage() {
463520
width={40}
464521
/>
465522
</div>
466-
<span className="text-center font-medium text-gray-900 text-sm dark:text-white">
523+
<span className="break-keep text-center font-medium text-gray-900 text-sm dark:text-white">
467524
{framework.name}
468525
</span>
469526
</Link>
@@ -488,7 +545,7 @@ export function LandingPage() {
488545
description="Your MCP server and agentic tool provider. Manages authentication, tool registration, and execution."
489546
href="/get-started/about-arcade"
490547
icon={Cog}
491-
title="Arcade Engine"
548+
title="Runtime"
492549
/>
493550
<QuickStartCard
494551
description="Catalog of pre-built tools and integrations. Browse 100+ ready-to-use MCP servers."
@@ -500,7 +557,7 @@ export function LandingPage() {
500557
description="Let agents act on behalf of users. Handle OAuth, API keys, and tokens for tools like Gmail and Google Drive."
501558
href="/guides/tool-calling/custom-apps/auth-tool-calling"
502559
icon={Shield}
503-
title="Authorized Tool Calling"
560+
title="Agent Authorization"
504561
/>
505562
</div>
506563
</div>
@@ -540,19 +597,16 @@ export function LandingPage() {
540597
blank
541598
description="A chatbot that can help you with your daily tasks."
542599
href="https://chat.arcade.dev/"
543-
image="/images/sample-apps/arcade-chat.png"
544600
title="Arcade Chat"
545601
/>
546602
<SampleAppCard
547603
description="A bot for Slack that can act on your behalf."
548604
href="https://github.com/ArcadeAI/ArcadeSlackAgent"
549-
image="/images/logo/arcade.png"
550605
title="Archer"
551606
/>
552607
<SampleAppCard
553608
description="A Slack bot that extracts and summarizes YouTube transcripts."
554609
href="https://github.com/dforwardfeed/slack-AIpodcast-summaries"
555-
image="/images/sample-apps/slack-aipodcast-summaries.jpg"
556610
title="YouTube Podcast Summarizer"
557611
/>
558612
</div>

0 commit comments

Comments
 (0)