Skip to content
Open
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
37 changes: 24 additions & 13 deletions app/_lib/integration-catalog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,34 +17,45 @@ const getToolkitDocsLink = (toolkit: Toolkit): string | undefined => {
* (enriched with a `docsLink` from their data file when the catalog entry
* lacks one, so the card's slug matches the generated page) plus docs-local
* partner toolkits.
*
* A "coming soon" catalog entry that now has a generated data file has real
* published docs, so it is promoted to a live, clickable card using the data
* file's docsLink and category (the design-system entry may lag until its next
* release).
*/
export const getToolkitsWithDocsLinks = async (): Promise<
ToolkitWithDocsLink[]
> => {
const docsLinkById = new Map<string, string>();
const dataById = new Map<string, { docsLink?: string; category?: string }>();

await Promise.all(
TOOLKITS.map(async (toolkit) => {
const existing = getToolkitDocsLink(toolkit);
if (existing) {
return;
}

const data = await readToolkitData(toolkit.id);
if (data?.metadata?.docsLink) {
docsLinkById.set(
normalizeToolkitId(toolkit.id),
data.metadata.docsLink
);
if (data?.metadata) {
dataById.set(normalizeToolkitId(toolkit.id), {
docsLink: data.metadata.docsLink ?? undefined,
category: data.metadata.category ?? undefined,
});
}
})
);

const dsToolkits: ToolkitWithDocsLink[] = TOOLKITS.map((toolkit) => {
const data = dataById.get(normalizeToolkitId(toolkit.id));
const existing = getToolkitDocsLink(toolkit);
const docsLink =
existing ?? docsLinkById.get(normalizeToolkitId(toolkit.id));
const isComingSoon =
"isComingSoon" in toolkit && Boolean(toolkit.isComingSoon);

if (isComingSoon && data?.docsLink) {
return {
...toolkit,
isComingSoon: false,
...(data.category ? { category: data.category } : {}),
docsLink: data.docsLink,
};
}

const docsLink = existing ?? data?.docsLink;
return docsLink ? { ...toolkit, docsLink } : toolkit;
});

Expand Down
4 changes: 4 additions & 0 deletions app/en/resources/integrations/databases/_meta.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ const meta: MetaRecord = {
title: "Postgres",
href: "/en/resources/integrations/databases/postgres",
},
snowflake: {
title: "Snowflake",
href: "/en/resources/integrations/databases/snowflake",
},
"-- Starter": {
type: "separator",
title: "Starter",
Expand Down
3 changes: 2 additions & 1 deletion public/llms.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<!-- git-sha: cddbb0b457d4e9aebb84c178514a36a49605be91 generation-date: 2026-07-24T11:39:52.424Z -->
<!-- git-sha: fa8274d6b90a6da474290967a93dd607c6e205dc generation-date: 2026-07-26T20:08:13.937Z -->

# Arcade

Expand Down Expand Up @@ -261,6 +261,7 @@ Arcade delivers three capabilities. Enforce (Agent Authorization): deploy agents
- [Salesforce](https://docs.arcade.dev/en/resources/integrations/sales/salesforce): Arcade's Salesforce toolkit lets LLMs interact with Salesforce orgs to create, update, search, and convert CRM records, log activities, and fetch enriched relational data. It validates against org-configured picklists and returns contextual warnings and IDs to guide multi-step…
- [Slack](https://docs.arcade.dev/en/resources/integrations/social/slack): The Slack toolkit integrates Arcade with Slack's API, enabling LLM agents to read, send, and manage Slack conversations, messages, and users on behalf of an authenticated user. Capabilities - Conversation discovery & metadata : List all conversations the user belongs to…
- [Slack API](https://docs.arcade.dev/en/resources/integrations/social/slack-api): The Arcade Toolkit for SlackApi provides a comprehensive interface for interacting with Slack's low-level API endpoints. Developers can utilize this toolkit to automate and enhance various administrative and communication tasks within Slack. Capabilities: - Create and manage…
- [Snowflake](https://docs.arcade.dev/en/resources/integrations/databases/snowflake): Arcade Snowflake Toolkit Query Snowflake from your agents with per-user, per-role access . Every end user authenticates as themselves via OAuth, and each query runs under that user's own Snowflake identity, so Snowflake's RBAC, row-access, and masking policies decide what each…
- [Spotify](https://docs.arcade.dev/en/resources/integrations/entertainment/spotify): The Arcade toolkit for Spotify empowers developers to integrate with Spotify's music streaming services seamlessly. It enables a variety of playback functionalities and retrieval of music data. Capabilities - Control playback by adjusting position, pausing, and resuming tracks.…
- [SquareUp API](https://docs.arcade.dev/en/resources/integrations/productivity/squareup-api): SquareupApi is a toolkit designed for integrating with the Squareup API, empowering developers to facilitate seamless interactions with various Square services. This toolkit enables various operations, including managing customer data, handling invoices, and managing loyalty…
- [Stripe](https://docs.arcade.dev/en/resources/integrations/payments/stripe): Arcade.dev provides a powerful toolkit for integrating with Stripe, enabling seamless management of billing, customer data, and payment processes. This toolkit simplifies common tasks, making it easier for developers to leverage Stripe's capabilities. Capabilities - Create and…
Expand Down
11 changes: 10 additions & 1 deletion toolkit-docs-generator/data/toolkits/index.json
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,15 @@
"toolCount": 73,
"authType": "oauth2"
},
{
"id": "Snowflake",
"label": "Snowflake",
"version": "0.1.0",
"category": "databases",
"type": "arcade",
"toolCount": 6,
"authType": "oauth2"
},
{
"id": "Spotify",
"label": "Spotify",
Expand Down Expand Up @@ -1056,4 +1065,4 @@
"authType": "oauth2"
}
]
}
}
Loading
Loading