Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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
1,736 changes: 1,713 additions & 23 deletions public/data/agent-tools-index.json

Large diffs are not rendered by default.

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components'

Register your Amplitude API Key and Secret Key with Scalekit so it can authenticate and proxy requests on behalf of your users. Amplitude uses HTTP Basic Auth — the API Key is the username and the Secret Key is the password. There is no redirect URI or OAuth flow.

<Steps>
1. ### Find your Amplitude data residency region

Amplitude runs two separate data residency regions with different credentials and API hosts. Before generating keys, confirm which region your project (or organization) lives in:

| Region | API host |
|--------|----------|
| US (default) | `amplitude.com` |
| EU | `analytics.eu.amplitude.com` |

<Aside type="caution" title="Region must match your keys">
An API Key and Secret Key generated in one region will not authenticate against the other. Using the wrong region in Scalekit causes every request to fail.
</Aside>

2. ### Get your API Key

- Sign in to Amplitude and go to **Settings** → **Agent Connectors** (or **API and Secret Keys**) → **API Keys**.
- Click **Generate API Key**, or copy an existing key's value.

![Amplitude API and Secret Keys page showing the API Keys tab with a generated key](@/assets/docs/agent-connectors/amplitudeanalytics/api-keys.png)

3. ### Get your Secret Key

- Click the **Secret Keys** tab.
- Click **Show** next to the secret key that matches the API key you copied in step 2, and copy it.

![Amplitude API and Secret Keys page showing the Secret Keys tab with a hidden secret key](@/assets/docs/agent-connectors/amplitudeanalytics/secret-keys.png)

<Aside type="note" title="Project vs. organization credentials">
Most tools need **project-level** API Key and Secret Key. DSAR (data subject access request) tools need a separate connected account using **organization-level** credentials in the same fields. Use two different connected accounts if you need both.
</Aside>

4. ### Create a connection in Scalekit

- In the [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**.
- Search for **Amplitude Analytics** and click **Create**.
- Note the **Connection name** — use this as `connection_name` in your code (e.g., `amplitudeanalytics`).

5. ### Add a connected account

Connected accounts link a specific user identifier in your system to an Amplitude API Key, Secret Key, and region. Add them via the dashboard for testing, or via the Scalekit API in production.

**Via dashboard (for testing)**

- Open the connection and click the **Connected Accounts** tab → **Add account**.
- Fill in **Your User's ID**, **API Key**, **Secret Key**, and select the **Data Residency Region** that matches your keys.
- Click **Save**.

**Via API (for production)**

<Tabs syncKey="tech-stack">
<TabItem label="Node.js">
```ts
// US region (default) — omit `domain` or set it to 'amplitude.com'
await scalekit.connect.upsertConnectedAccount({
connectionName: 'amplitudeanalytics',
identifier: 'user@example.com',
credentials: {
username: 'your-amplitude-api-key',
password: 'your-amplitude-secret-key',
domain: 'amplitude.com',
},
})

// EU region
await scalekit.connect.upsertConnectedAccount({
connectionName: 'amplitudeanalytics',
identifier: 'eu-user@example.com',
credentials: {
username: 'your-eu-amplitude-api-key',
password: 'your-eu-amplitude-secret-key',
domain: 'analytics.eu.amplitude.com',
},
})
```
Comment thread
Pranesh-Raghu marked this conversation as resolved.
</TabItem>
<TabItem label="Python">
```python
# US region (default) — omit domain or set it to "amplitude.com"
scalekit_client.connect.upsert_connected_account(
connection_name="amplitudeanalytics",
identifier="user@example.com",
credentials={
"username": "your-amplitude-api-key",
"password": "your-amplitude-secret-key",
"domain": "amplitude.com",
},
)

# EU region
scalekit_client.connect.upsert_connected_account(
connection_name="amplitudeanalytics",
identifier="eu-user@example.com",
credentials={
"username": "your-eu-amplitude-api-key",
"password": "your-eu-amplitude-secret-key",
"domain": "analytics.eu.amplitude.com",
},
)
```
Comment thread
Pranesh-Raghu marked this conversation as resolved.
</TabItem>
</Tabs>

<Aside type="tip" title="Running both regions side by side">
If your organization has projects in both the US and EU, create a separate connected account per user (or per project) with the matching `domain` value. Scalekit routes each account's requests to the correct regional host automatically — you don't need separate connections.
</Aside>

</Steps>
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components'

Register your Amplitude Experiment Management API key with Scalekit so it can authenticate and proxy requests on behalf of your users. This connector uses a Bearer token — there is no redirect URI or OAuth flow.

<Steps>
1. ### Find your Amplitude Experiment data residency region

Amplitude Experiment runs two separate data residency regions with different keys and API hosts. Before generating a key, confirm which region your project lives in:

| Region | API host |
|--------|----------|
| US (default) | `experiment.amplitude.com` |
| EU | `experiment.eu.amplitude.com` |

<Aside type="caution" title="Region must match your key">
A Management API key generated in one region will not authenticate against the other. Using the wrong region in Scalekit causes every request to fail.
</Aside>

<Aside type="note" title="Separate from the Analytics Secret Key">
This is a different credential from the API Key + Secret Key used by the Amplitude Analytics connector. Generate it from Amplitude's **Experiment** product, not the account-level **API and Secret Keys** page.
</Aside>

2. ### Get your Management API key

- Sign in to Amplitude and go to **Experiment** → **Management API** in the left sidebar.
- Select the **Project** you want a key for.
- Click **Create key for project**, or copy an existing key's value from the list.

![Amplitude Experiment Management API page showing existing keys per project](@/assets/docs/agent-connectors/amplitudeexperimentmanagement/management-api-keys.png)

<Aside type="tip" title="Manager or Admin role required">
Generating a Management API key requires the Manager or Admin role on the Amplitude organization. If **Create key for project** is disabled, ask an org admin to grant you access or generate the key for you.
</Aside>

3. ### Create a connection in Scalekit

- In the [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**.
- Search for **Amplitude Experiment Management** and click **Create**.
- Note the **Connection name** — use this as `connection_name` in your code (e.g., `amplitudeexperimentmanagement`).

4. ### Add a connected account

Connected accounts link a specific user identifier in your system to a Management API key and region. Add them via the dashboard for testing, or via the Scalekit API in production.

**Via dashboard (for testing)**

- Open the connection and click the **Connected Accounts** tab → **Add account**.
- Fill in **Your User's ID**, the **Management API Key**, and select the **Data Residency Region** that matches the key.
- Click **Save**.

**Via API (for production)**

<Tabs syncKey="tech-stack">
<TabItem label="Node.js">
```ts
// US region (default) — omit `domain` or set it to 'experiment.amplitude.com'
await scalekit.connect.upsertConnectedAccount({
connectionName: 'amplitudeexperimentmanagement',
identifier: 'user@example.com',
credentials: {
token: 'your-management-api-key',
domain: 'experiment.amplitude.com',
},
})

// EU region
await scalekit.connect.upsertConnectedAccount({
connectionName: 'amplitudeexperimentmanagement',
identifier: 'eu-user@example.com',
credentials: {
token: 'your-eu-management-api-key',
domain: 'experiment.eu.amplitude.com',
},
})
```
</TabItem>
<TabItem label="Python">
```python
# US region (default) — omit domain or set it to "experiment.amplitude.com"
scalekit_client.connect.upsert_connected_account(
connection_name="amplitudeexperimentmanagement",
identifier="user@example.com",
credentials={
"token": "your-management-api-key",
"domain": "experiment.amplitude.com",
},
)

# EU region
scalekit_client.connect.upsert_connected_account(
connection_name="amplitudeexperimentmanagement",
identifier="eu-user@example.com",
credentials={
"token": "your-eu-management-api-key",
"domain": "experiment.eu.amplitude.com",
},
)
```
</TabItem>
</Tabs>

<Aside type="tip" title="Running both regions side by side">
If your organization has Experiment projects in both the US and EU, create a separate connected account per user (or per project) with the matching `domain` value. Scalekit routes each account's requests to the correct regional host automatically.
</Aside>

</Steps>
16 changes: 16 additions & 0 deletions src/components/templates/agent-connectors/_setup-discord.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,20 @@ Register your Scalekit environment with the Discord connector so Scalekit handle
<Aside type="tip" title="Request only the scopes you need">
Discord displays a consent screen listing every requested scope. Requesting unnecessary scopes reduces user trust and may cause authorization to be denied.
</Aside>

5. ### Configure the bot scope (optional)

If your agent needs to act as a bot in a server — sending messages, managing channels, or reacting to events — include the `bot` scope when you request authorization. Discord then asks the installing user to also grant a set of **bot permissions**.

- In the Scalekit connection settings, set:
- **Bot Permissions** — a bitfield describing what your bot can do in the server. Use the [permissions calculator](https://discord.com/developers/applications) on your application's **Bot** page to generate this value, or use the recommended default `2260657982483703` for common read/write access.
Comment thread
Pranesh-Raghu marked this conversation as resolved.
- **Pre-selected Guild ID** — optional. Pre-fills Discord's server picker with a specific server ID during authorization.
- **Disable Guild Select** — optional. When enabled with a **Pre-selected Guild ID**, the user cannot pick a different server.
- **Installation Context** — optional. Controls whether `applications.commands` installs to a server or to the authorizing user's account.

![Discord Bot Permissions page showing General, Text, and Voice permission checkboxes](@/assets/docs/agent-connectors/discord/bot-permissions.png)

<Aside type="note" title="Leave Bot Permissions blank carefully">
An empty **Bot Permissions** value grants the bot zero permissions in Scalekit's authorization request — it does not fall back to whatever defaults you configured in the Discord Developer Portal. Set an explicit value if your bot needs any permissions at all.
</Aside>
</Steps>
70 changes: 70 additions & 0 deletions src/components/templates/agent-connectors/_setup-discordbot.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { Steps, Aside, Tabs, TabItem } from '@astrojs/starlight/components'

Register your Discord bot token with Scalekit so it can authenticate and proxy requests on behalf of your users. Discord Bot uses Bearer Token authentication — there is no redirect URI or OAuth flow.

<Steps>
1. ### Create a Discord application and bot user

- Go to the [Discord Developer Portal](https://discord.com/developers/applications) and sign in with your Discord account.
- Click **New Application**, enter a name (for example, `Agent Auth`), accept the terms, and click **Create**.
- Open your application and go to **Bot** in the left sidebar.

2. ### Get your bot token

- On the **Bot** page, under **Token**, click **Reset Token** to generate a new bot token and copy it immediately — Discord shows the full token only once.

![Discord application Bot page showing the Username, Token, and Authorization Flow settings](@/assets/docs/agent-connectors/discordbot/bot-tab.png)

<Aside type="caution" title="Keep your bot token secret">
Anyone with your bot token can control your bot completely. If you suspect it has leaked, click **Reset Token** immediately to invalidate the old one.
</Aside>

3. ### Invite the bot to a server

- Go to **OAuth2** > **URL Generator** in the left sidebar.
- Under **Scopes**, select **bot**.
- Under **Bot Permissions**, select the permissions your agent needs.

![Discord Bot Permissions page showing General, Text, and Voice permission checkboxes](@/assets/docs/agent-connectors/discord/bot-permissions.png)

- Copy the generated URL at the bottom of the page, open it in a browser, and select a server to add the bot to.

4. ### Create a connection in Scalekit

- In the [Scalekit dashboard](https://app.scalekit.com), go to **AgentKit** → **Connections** → **Create Connection**.
- Search for **Discord Bot** and click **Create**.
- Note the **Connection name** — use this as `connection_name` in your code (e.g., `discordbot`).

5. ### Add a connected account

Connected accounts link a specific user identifier in your system to a Discord bot token. Add them via the dashboard for testing, or via the Scalekit API in production.

**Via dashboard (for testing)**

- Open the connection and click the **Connected Accounts** tab → **Add account**.
- Fill in **Your User's ID** and **Bot Token**, then click **Save**.

**Via API (for production)**

<Tabs syncKey="tech-stack">
<TabItem label="Node.js">
```ts
await scalekit.connect.upsertConnectedAccount({
connectionName: 'discordbot',
identifier: 'user@example.com',
credentials: { apiKey: 'your-discord-bot-token' },
})
```
</TabItem>
<TabItem label="Python">
```python
scalekit_client.connect.upsert_connected_account(
connection_name="discordbot",
identifier="user@example.com",
credentials={"api_key": "your-discord-bot-token"},
)
```
</TabItem>
</Tabs>

</Steps>
3 changes: 3 additions & 0 deletions src/components/templates/agent-connectors/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ export { default as SetupAdvancedmdSection } from './_setup-advancedmd.mdx'
export { default as SetupAdzvisermcpSection } from './_setup-adzvisermcp.mdx'
export { default as SetupAiropsmcpSection } from './_setup-airopsmcp.mdx'
export { default as SetupAirtableSection } from './_setup-airtable.mdx'
export { default as SetupAmplitudeanalyticsSection } from './_setup-amplitudeanalytics.mdx'
export { default as SetupAmplitudeexperimentmanagementSection } from './_setup-amplitudeexperimentmanagement.mdx'
export { default as SetupApifymcpSection } from './_setup-apifymcp.mdx'
export { default as SetupApolloSection } from './_setup-apollo.mdx'
export { default as SetupAsanaSection } from './_setup-asana.mdx'
Expand Down Expand Up @@ -35,6 +37,7 @@ export { default as SetupDevinmcpSection } from './_setup-devinmcp.mdx'
export { default as SetupDevrevmcpSection } from './_setup-devrevmcp.mdx'
export { default as SetupDiarizeSection } from './_setup-diarize.mdx'
export { default as SetupDiscordSection } from './_setup-discord.mdx'
export { default as SetupDiscordbotSection } from './_setup-discordbot.mdx'
export { default as SetupDropboxSection } from './_setup-dropbox.mdx'
export { default as SetupDropboxmcpSection } from './_setup-dropboxmcp.mdx'
export { default as SetupExaSection } from './_setup-exa.mdx'
Expand Down
Loading