ReferencesAuth Providers

X

The X enables tools and to call the X (Twitter) API on behalf of a .

Want to quickly get started with X services in your or AI app? The pre-built Arcade X MCP Server is what you want!

What’s documented here

This page describes how to use and configure X auth with Arcade.

This is used by:

Use Arcade’s default X auth provider

Arcade offers a default X that you can use in the Arcade Cloud Platform. In this case, your will see Arcade as the name of the application requesting permission.

If you choose to use Arcade’s X auth, you don’t need to configure anything. Follow the X MCP Server examples to get started calling X .

Configuring X auth

When using your own app credentials, make sure you configure your to use a custom user verifier. Without this, your end-users will not be able to use your app or in production.

In a production environment, you will most likely want to use your own X app credentials. This way, your will see your application’s name requesting permission.

Before showing how to configure your X app credentials, let’s go through the steps to create a X app.

Create an X app

  • Follow X’s guide to creating an app
  • Enable authentication for your new app, and set its type to “Web App, Automated App or Bot”
  • Set the redirect URL to the redirect URL generated by Arcade (see below)
  • Copy the client ID and client secret to use below

Next, add the X app to Arcade.

Configuring your own X Auth Provider in Arcade

Configure X Auth Using the Arcade Dashboard GUI

Access the Arcade Dashboard

To access the Arcade Cloud dashboard, go to api.arcade.dev/dashboard. If you are self-hosting, by default the dashboard will be available at http://localhost:9099/dashboard. Adjust the host and port number to match your environment.

  • Under the Connections section of the Arcade Dashboard left-side menu, click OAuth providers.
  • Click Add OAuth Provider in the top right corner.
  • Select the Included Providers tab at the top.
  • In the Provider dropdown, select X.

Enter the provider details

  • Choose a unique ID for your provider (e.g. “my-x-provider”).
  • Enter the Client ID and Client Secret from your X app.
  • Note the Redirect URI generated by Arcade. This must be set as your X app’s redirect URL.
  • Optionally enter a Description.

Create the provider

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

When you use tools that require X auth using your Arcade credentials, Arcade will automatically use this X OAuth provider. If you have multiple X providers, see using multiple auth providers of the same type for more information.

Using X auth in app code

Use the X in your own and AI apps to get a token for the X API. See authorizing agents with Arcade to understand how this works.

Use client.auth.start() to get a token for X:

from arcadepy import Arcade

client = Arcade()  # Automatically finds the `ARCADE_API_KEY` env variable

user_id = "{arcade_user_id}"

# Start the authorization process
auth_response = client.auth.start(
    user_id=user_id,
    provider="x",
    scopes=["tweet.read", "tweet.write", "users.read"],
)

if auth_response.status != "completed":
    print("Please complete the authorization challenge in your browser:")
    print(auth_response.url)

# Wait for the authorization to complete
auth_response = client.auth.wait_for_completion(auth_response)

token = auth_response.context.token
# Do something interesting with the token...
import { Arcade } from "@arcadeai/arcadejs";

const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable

const userId = "{arcade_user_id}";

// Start the authorization process
let authResponse = await client.auth.start(userId, "x", {
  scopes: ["tweet.read", "tweet.write", "users.read"],
});

if (authResponse.status !== "completed") {
  console.log("Please complete the authorization challenge in your browser:");
  console.log(authResponse.url);
}

// Wait for the authorization to complete
authResponse = await client.auth.waitForCompletion(authResponse);

const token = authResponse.context.token;
// Do something interesting with the token...

Using X auth in custom tools

You can use the pre-built Arcade X MCP Server to quickly build and AI apps that interact with X.

If the pre-built tools in the X Server don’t meet your needs, you can author your own custom tools that interact with the X API.

Use the X() auth class to specify that a requires authorization with X. The context.authorization.token field will be automatically populated with the ’s X token:

from typing import Annotated

import httpx

from arcade_mcp_server import Context, tool
from arcade_mcp_server.auth import X


@tool(
    requires_auth=X(
        scopes=["tweet.read", "tweet.write", "users.read"],
    )
)
async def post_tweet(
    context: Context,
    tweet_text: Annotated[str, "The text content of the tweet you want to post"],
) -> Annotated[str, "Success string and the URL of the tweet"]:
    """Post a tweet to X (Twitter)."""
    url = "https://api.x.com/2/tweets"
    headers = {
        "Authorization": f"Bearer {context.authorization.token}",
        "Content-Type": "application/json",
    }
    payload = {"text": tweet_text}

    async with httpx.AsyncClient() as client:
        response = await client.post(url, headers=headers, json=payload)
        response.raise_for_status()

        tweet_id = response.json()["data"]["id"]
        return f"Tweet with id {tweet_id} posted successfully. URL: https://x.com/x/status/{tweet_id}"
Edit on GitHub

Last updated on

On this page