XTools allows an Agent to interact with X, providing functionality for posting, messaging, and searching tweets.

Prerequisites

Install the required library:

pip install tweepy
Tweepy is a Python library for interacting with the X API.

Setup

  1. Create X Developer Account

    • Visit developer.x.com and apply for developer access
    • Create a new project and app in your developer portal
  2. Generate API Credentials

    • Navigate to your app’s “Keys and tokens” section
    • Generate and copy these credentials:
      • API Key & Secret
      • Bearer Token
      • Access Token & Secret
  3. Configure Environment

    export X_CONSUMER_KEY=your_api_key
    export X_CONSUMER_SECRET=your_api_secret
    export X_ACCESS_TOKEN=your_access_token
    export X_ACCESS_TOKEN_SECRET=your_access_token_secret
    export X_BEARER_TOKEN=your_bearer_token
    

Example

cookbook/tools/x_tools.py
from agno.agent import Agent
from agno.tools.x import XTools

# Initialize the X toolkit
x_tools = XTools(
    wait_on_rate_limit=True # Retry when rate limits are reached
) 

# Create an agent equipped with X toolkit
agent = Agent(
    instructions=[
        "Use X tools to interact as the authorized user",
        "Generate appropriate content when asked to create posts",
        "Only post content when explicitly instructed",
        "Respect X's usage policies and rate limits",
    ],
    tools=[x_tools],
    show_tool_calls=True,
)

# Search for posts
agent.print_response("Search for recent posts about AI agents", markdown=True)

# Create and post a tweet
agent.print_response("Create a post about AI ethics", markdown=True)

# Get user timeline
agent.print_response("Get my timeline", markdown=True)

# Reply to a post
agent.print_response(
    "Can you reply to this [post ID] post as a general message as to how great this project is: https://x.com/AgnoAgi",
    markdown=True,
)

# Get information about a user
agent.print_response("Can you retrieve information about this user https://x.com/AgnoAgi ", markdown=True)

# Send a direct message
agent.print_response(
    "Send direct message to the user @AgnoAgi telling them I want to learn more about them and a link to their community.",
    markdown=True,
)

# Get user profile
agent.print_response("Get my X profile", markdown=True)
Check out the Tweet Analysis Agent for a more advanced example.

Toolkit Params

ParameterTypeDefaultDescription
bearer_tokenstrNoneBearer token for authentication
consumer_keystrNoneConsumer key for authentication
consumer_secretstrNoneConsumer secret for authentication
access_tokenstrNoneAccess token for authentication
access_token_secretstrNoneAccess token secret for authentication
include_post_metricsboolFalseInclude post metrics (likes, retweets, etc.) in search results
wait_on_rate_limitboolFalseRetry when rate limits are reached

Toolkit Functions

FunctionDescription
create_postCreates and posts a new post
reply_to_postReplies to an existing post
send_dmSends a direct message to a X user
get_user_infoRetrieves information about a X user
get_home_timelineGets the authenticated user’s home timeline
search_postsSearches for tweets

Developer Resources