Skip to content
This repository was archived by the owner on Oct 27, 2026. It is now read-only.

Commit 7e82860

Browse files
authored
docs: audit and fix auth provider pages [TOO-2261] (#1214)
* docs: audit auth provider pages against the Engine, SDKs, and dashboard Checks every page under references/auth-providers against the Engine's well-known provider configs, the arcade-mcp auth classes, arcade-js and arcade-py signatures, the dashboard's OAuth provider forms, the worker toolkits' requested scopes, and Arcade Cloud's live default providers. - Catalog lists all 34 provider pages (15 were missing) - Custom-tool samples move from arcade_tdk to arcade_mcp_server - OAuth2(provider_id=...) samples, which raise TypeError, now use id= - Built-in providers use the Included Providers flow and provider_id YAML - Default-provider claims match Arcade Cloud's live provider list - Scope lists match what the Arcade toolkits request - Broken MCP server links, unclosed links, and dashboard labels fixed - OAuth 2.0 reference defaults corrected against Engine config code * docs: link optimized Airtable and Calendly MCP servers instead of starter servers The Airtable link targets the optimized toolkit page added by the toolkit docs automation (#1213), so this must merge after it.
1 parent 9427446 commit 7e82860

41 files changed

Lines changed: 987 additions & 803 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎app/en/references/auth-providers/airtable/page.mdx‎

Lines changed: 33 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The Airtable auth provider enables tools and agents to call [Airtable APIs](http
77
<Callout>
88
Want to quickly get started with Airtable in your agent or AI app? The
99
pre-built [Arcade Airtable MCP
10-
Server](/resources/integrations/productivity/airtableapi) is what you want!
10+
Server](/resources/integrations/productivity/airtable) is what you want!
1111
</Callout>
1212

1313
### What's documented here
@@ -16,10 +16,16 @@ This page describes how to use and configure Airtable auth with Arcade.
1616

1717
This auth provider is used by:
1818

19-
- The [Arcade Airtable MCP Server](/resources/integrations/productivity/airtableapi), which provides pre-built tools for interacting with Airtable
19+
- The [Arcade Airtable MCP Server](/resources/integrations/productivity/airtable), which provides pre-built tools for interacting with Airtable
2020
- Your [app code](#using-airtable-auth-in-app-code) that needs to call the Airtable API
2121
- Or, your [custom tools](#using-airtable-auth-in-custom-tools) that need to call the Airtable API
2222

23+
## Use Arcade's default Airtable auth provider
24+
25+
Arcade offers a default Airtable auth provider that you can use in the Arcade Cloud Platform. In this case, your users will see `Arcade` as the name of the app requesting permission.
26+
27+
If you choose to use Arcade's Airtable auth, you don't need to configure anything. Follow the [Airtable MCP Server examples](/resources/integrations/productivity/airtable) to get started calling Airtable tools.
28+
2329
## Configuring Airtable auth
2430

2531
<Callout type="info">
@@ -58,6 +64,7 @@ Navigate to the [Airtable Developer Hub](https://airtable.com/developers/web) an
5864
- `data.records:read` - Read records from tables
5965
- `data.records:write` - Create, update, and delete records
6066
- `schema.bases:read` - Read base schema
67+
- `user.email:read` - Read the user's email address
6168
- Add other scopes as needed for your use case
6269

6370
#### Obtain your credentials
@@ -87,19 +94,17 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
8794

8895
#### Navigate to the OAuth Providers page
8996

90-
- Under the **OAuth** section of the Arcade Dashboard left-side menu, click **Providers**.
97+
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected apps**.
9198
- Click **Add OAuth Provider** in the top right corner.
92-
- Select the **OAuth 2.0** tab at the top.
99+
- Select the **Included Providers** tab at the top.
100+
- In the **Provider** dropdown, select **Airtable**.
93101

94102
#### Enter the provider details
95103

96-
- Choose a unique **ID** for your provider (e.g. "arcade-airtable").
97-
- Optionally enter a **Description**.
104+
- Choose a unique **ID** for your provider (e.g. "my-airtable-provider").
98105
- Enter the **Client ID** and **Client Secret** from your Airtable integration.
99-
- Configure the OAuth 2.0 endpoints:
100-
- **Authorization URL**: `https://airtable.com/oauth2/v1/authorize`
101-
- **Token URL**: `https://airtable.com/oauth2/v1/token`
102-
- Note the **Redirect URL** generated by Arcade. This must be set as your Airtable integration's Redirect URL.
106+
- Note the **Redirect URI** generated by Arcade. This must be set as your Airtable integration's Redirect URL.
107+
- Optionally enter a **Description**.
103108

104109
#### Create the provider
105110

@@ -143,34 +148,17 @@ Edit the `engine.yaml` file and add a new item to the `auth.providers` section:
143148
```yaml
144149
auth:
145150
providers:
146-
- id: arcade-airtable
151+
- id: my-airtable-provider
147152
description: Airtable OAuth 2.0 provider
148153
enabled: true
149154
type: oauth2
155+
provider_id: airtable
150156
client_id: ${env:AIRTABLE_CLIENT_ID}
151157
client_secret: ${env:AIRTABLE_CLIENT_SECRET}
152-
oauth2:
153-
scope_delimiter: " "
154-
pkce:
155-
enabled: true
156-
code_challenge_method: S256
157-
authorize_request:
158-
endpoint: "https://airtable.com/oauth2/v1/authorize"
159-
params:
160-
response_type: code
161-
client_id: "{{client_id}}"
162-
redirect_uri: "{{redirect_uri}}"
163-
scope: "{{scopes}}"
164-
state: "{{state}}"
165-
token_request:
166-
endpoint: "https://airtable.com/oauth2/v1/token"
167-
params:
168-
grant_type: authorization_code
169-
client_id: "{{client_id}}"
170-
redirect_uri: "{{redirect_uri}}"
171-
response_content_type: application/json
172158
```
173159
160+
Setting `provider_id: airtable` applies the Arcade Engine's built-in Airtable configuration (endpoints, PKCE, and token request settings), so you don't need to specify them.
161+
174162
</Steps>
175163

176164
</Tabs.Tab>
@@ -197,7 +185,7 @@ user_id = "{arcade_user_id}"
197185
# Start the authorization process
198186
auth_response = client.auth.start(
199187
user_id=user_id,
200-
provider="arcade-airtable",
188+
provider="airtable",
201189
scopes=["data.records:read", "data.records:write", "schema.bases:read"]
202190
)
203191

@@ -216,19 +204,17 @@ token = auth_response.context.token
216204

217205
<Tabs.Tab>
218206

219-
```javascript {8-11}
207+
```javascript {8-10}
220208
import { Arcade } from "@arcadeai/arcadejs";
221209

222210
const client = new Arcade();
223211

224212
const userId = "{arcade_user_id}";
225213

226214
// Start the authorization process
227-
const authResponse = await client.auth.start(userId, "arcade-airtable", [
228-
"data.records:read",
229-
"data.records:write",
230-
"schema.bases:read",
231-
]);
215+
let authResponse = await client.auth.start(userId, "airtable", {
216+
scopes: ["data.records:read", "data.records:write", "schema.bases:read"],
217+
});
232218

233219
if (authResponse.status !== "completed") {
234220
console.log("Please complete the authorization challenge in your browser:");
@@ -248,35 +234,34 @@ const token = authResponse.context.token;
248234

249235
## Using Airtable auth in custom tools
250236

251-
You can use the pre-built [Arcade Airtable MCP Server](/resources/integrations/productivity/airtableapi) to quickly build agents and AI apps that interact with Airtable.
237+
You can use the pre-built [Arcade Airtable MCP Server](/resources/integrations/productivity/airtable) to quickly build agents and AI apps that interact with Airtable.
252238

253239
If the pre-built tools in the Airtable MCP Server don't meet your needs, you can author your own [custom tools](/build/create-tools/tool-basics/build-mcp-server) that interact with the Airtable API.
254240

255-
Use the `OAuth2()` auth class to specify that a tool requires authorization with Airtable. The `context.authorization.token` field will be automatically populated with the user's Airtable token:
241+
Use the `Airtable()` auth class to specify that a tool requires authorization with Airtable. The `context.authorization.token` field will be automatically populated with the user's Airtable token:
256242

257-
```python {8-12,22}
243+
```python {8-12,21}
258244
from typing import Annotated
259245

260246
import httpx
261-
from arcade_tdk import ToolContext, tool
262-
from arcade_tdk.auth import OAuth2
247+
from arcade_mcp_server import Context, tool
248+
from arcade_mcp_server.auth import Airtable
263249

264250

265251
@tool(
266-
requires_auth=OAuth2(
267-
provider_id="arcade-airtable",
268-
scopes=["data.records:read", "schema.bases:read"]
252+
requires_auth=Airtable(
253+
scopes=["schema.bases:read"]
269254
)
270255
)
271256
async def list_bases(
272-
context: ToolContext,
257+
context: Context,
273258
) -> Annotated[dict, "The user's bases."]:
274259
"""
275260
Retrieve the list of bases accessible to the authenticated user.
276261
"""
277262
url = "https://api.airtable.com/v0/meta/bases"
278263
headers = {
279-
"Authorization": context.authorization.token,
264+
"Authorization": f"Bearer {context.authorization.token}",
280265
}
281266

282267
async with httpx.AsyncClient() as client:

‎app/en/references/auth-providers/asana/page.mdx‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
8181

8282
#### Navigate to the OAuth Providers page
8383

84-
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected Apps**.
84+
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected apps**.
8585
- Click **Add OAuth Provider** in the top right corner.
8686
- Select the **Included Providers** tab at the top.
8787
- In the **Provider** dropdown, select **Asana**.
@@ -91,7 +91,7 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
9191
- Choose a unique **ID** for your provider (e.g. "my-asana-provider").
9292
- Optionally enter a **Description**.
9393
- Enter the **Client ID** and **Client Secret** from your Asana app.
94-
- Note the **Redirect URL** generated by Arcade. This must be added to your Asana app's Redirect URLs.
94+
- Note the **Redirect URI** generated by Arcade. This must be added to your Asana app's Redirect URLs.
9595

9696
#### Create the provider
9797

@@ -204,13 +204,13 @@ from typing import Annotated
204204

205205
import httpx
206206

207-
from arcade_tdk import ToolContext, tool
208-
from arcade_tdk.auth import Asana
207+
from arcade_mcp_server import Context, tool
208+
from arcade_mcp_server.auth import Asana
209209

210210

211211
@tool(requires_auth=Asana(scopes=["default"]))
212212
async def delete_task(
213-
context: ToolContext,
213+
context: Context,
214214
task_id: Annotated[str, "The ID of the task to delete."],
215215
) -> Annotated[dict, "Details of the deletion response"]:
216216
"""Deletes a task."""

‎app/en/references/auth-providers/atlassian/page.mdx‎

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ import { Tabs, Callout, Steps } from "nextra/components";
22

33
# Atlassian
44

5-
<Callout type="info">
6-
At this time, Arcade does not offer a default Atlassian Auth Provider. To use
7-
Atlassian auth, you must create a custom Auth Provider with your own Atlassian
8-
OAuth 2.0 credentials as described below.
9-
</Callout>
10-
115
The Atlassian auth provider enables tools and agents to call the Atlassian API on behalf of a user.
126

137
### What's documented here
@@ -16,9 +10,16 @@ This page describes how to use and configure Atlassian auth with Arcade.
1610

1711
This auth provider is used by:
1812

13+
- The [Arcade Jira MCP Server](/resources/integrations/productivity/jira) and [Arcade Confluence MCP Server](/resources/integrations/productivity/confluence), which provide pre-built tools for interacting with Jira and Confluence
1914
- Your [app code](#using-atlassian-auth-in-app-code) that needs to call Atlassian APIs
2015
- Or, your [custom tools](#using-atlassian-auth-in-custom-tools) that need to call Atlassian APIs
2116

17+
## Use Arcade's default Atlassian auth provider
18+
19+
Arcade offers a default Atlassian auth provider that you can use in the Arcade Cloud Platform. In this case, your users will see `Arcade` as the name of the app requesting permission.
20+
21+
If you choose to use Arcade's Atlassian auth, you don't need to configure anything. Follow the [Jira](/resources/integrations/productivity/jira) or [Confluence](/resources/integrations/productivity/confluence) MCP Server examples to get started calling Atlassian tools.
22+
2223
## Configuring Atlassian auth
2324

2425
<Callout type="info">
@@ -57,7 +58,7 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
5758

5859
#### Navigate to the OAuth Providers page
5960

60-
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected Apps**.
61+
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected apps**.
6162
- Click **Add OAuth Provider** in the top right corner.
6263
- Select the **Included Providers** tab at the top.
6364
- In the **Provider** dropdown, select **Atlassian**.
@@ -67,17 +68,19 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
6768
- Choose a unique **ID** for your provider (e.g. "my-atlassian-provider").
6869
- Optionally enter a **Description**.
6970
- Enter the **Client ID** and **Client Secret** from your Atlassian app.
70-
- Note the **Redirect URL** generated by Arcade. This must be added to your Atlassian app as a Callback URL.
71+
- Note the **Redirect URI** generated by Arcade. This must be added to your Atlassian app as a Callback URL.
7172

7273
#### Create the provider
7374

7475
Hit the **Create** button and the provider will be ready to be used.
7576

7677
</Steps>
78+
7779
When you use tools that require Atlassian auth using your Arcade account credentials, Arcade will automatically use this Atlassian OAuth provider. If you have multiple Atlassian providers, see [using multiple auth providers of the same type](/references/auth-providers#using-multiple-providers-of-the-same-type) for more information.
7880

7981
</Tabs.Tab>
8082
</Tabs>
83+
8184
## Using Atlassian auth in app code
8285

8386
Use the Atlassian auth provider in your own agents and AI apps to get a user token for the Atlassian API. See [authorizing agents with Arcade](/get-started/about-arcade) to understand how this works.
@@ -155,8 +158,8 @@ from typing import Annotated, Optional
155158

156159
import httpx
157160

158-
from arcade_tdk import ToolContext, tool
159-
from arcade_tdk.auth import Atlassian
161+
from arcade_mcp_server import Context, tool
162+
from arcade_mcp_server.auth import Atlassian
160163

161164

162165
@tool(
@@ -165,7 +168,7 @@ from arcade_tdk.auth import Atlassian
165168
)
166169
)
167170
async def list_projects(
168-
context: ToolContext,
171+
context: Context,
169172
query: Annotated[
170173
Optional[str],
171174
"The query to filter the projects by. Defaults to empty string to list all projects.",

‎app/en/references/auth-providers/attio/page.mdx‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
8585

8686
#### Navigate to the OAuth Providers page
8787

88-
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected Apps**.
88+
- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected apps**.
8989
- Click **Add OAuth Provider** in the top right corner.
9090
- Select the **Included Providers** tab at the top.
9191
- In the **Provider** dropdown, select **Attio**.
@@ -95,7 +95,7 @@ To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://a
9595
- Enter `attio` as the **ID** for your provider.
9696
- Optionally enter a **Description**.
9797
- Enter the **Client ID** and **Client Secret** from your Attio app.
98-
- Note the **Redirect URL** generated by Arcade. This must be added to your Attio app's redirect URIs.
98+
- Note the **Redirect URI** generated by Arcade. This must be added to your Attio app's redirect URIs.
9999

100100
#### Create the provider
101101

@@ -193,8 +193,8 @@ from typing import Annotated
193193

194194
import httpx
195195

196-
from arcade_tdk import ToolContext, tool
197-
from arcade_tdk.auth import Attio
196+
from arcade_mcp_server import Context, tool
197+
from arcade_mcp_server.auth import Attio
198198

199199

200200
@tool(
@@ -203,7 +203,7 @@ from arcade_tdk.auth import Attio
203203
)
204204
)
205205
async def query_attio_companies(
206-
context: ToolContext,
206+
context: Context,
207207
limit: Annotated[
208208
int,
209209
"Maximum number of company records to return.",

0 commit comments

Comments
 (0)