X (Twitter)
XTools allows an Agent to interact with X, providing functionality for posting, messaging, and searching tweets.
Prerequisites
Install the required library:
1uv pip install tweepyInfoTweepy is a Python library for interacting with the X API.
Setup
-
Create X Developer Account
- Visit developer.x.com and apply for developer access
- Create a new project and app in your developer portal
-
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
-
Configure Environment
1export X_CONSUMER_KEY=your_api_key2export X_CONSUMER_SECRET=your_api_secret3export X_ACCESS_TOKEN=your_access_token4export X_ACCESS_TOKEN_SECRET=your_access_token_secret5export X_BEARER_TOKEN=your_bearer_token
Example
1from kern.agent import Agent2from kern.tools.x import XTools34# Initialize the X toolkit5x_tools = XTools(6 wait_on_rate_limit=True # Retry when rate limits are reached7)89# Create an agent equipped with X toolkit10agent = Agent(11 instructions=[12 "Use X tools to interact as the authorized user",13 "Generate appropriate content when asked to create posts",14 "Only post content when explicitly instructed",15 "Respect X's usage policies and rate limits",16 ],17 tools=[x_tools],18 )1920# Search for posts21agent.print_response("Search for recent posts about AI agents", markdown=True)2223# Create and post a tweet24agent.print_response("Create a post about AI ethics", markdown=True)2526# Get user timeline27agent.print_response("Get my timeline", markdown=True)2829# Reply to a post30agent.print_response(31 "Can you reply to this [post ID] post as a general message as to how great this project is: https://x.com/AgnoAgi",32 markdown=True,33)3435# Get information about a user36agent.print_response("Can you retrieve information about this user https://x.com/AgnoAgi ", markdown=True)3738# Send a direct message39agent.print_response(40 "Send direct message to the user @AgnoAgi telling them I want to learn more about them and a link to their community.",41 markdown=True,42)4344# Get user profile45agent.print_response("Get my X profile", markdown=True)Note
Check out the Tweet Analysis Agent for a more advanced example.
Toolkit Params
| Parameter | Type | Default | Description |
|---|---|---|---|
bearer_token | str | None | Bearer token for authentication |
consumer_key | str | None | Consumer key for authentication |
consumer_secret | str | None | Consumer secret for authentication |
access_token | str | None | Access token for authentication |
access_token_secret | str | None | Access token secret for authentication |
include_post_metrics | bool | False | Include post metrics (likes, retweets, etc.) in search results |
wait_on_rate_limit | bool | False | Retry when rate limits are reached |
Toolkit Functions
| Function | Description |
|---|---|
create_post | Creates and posts a new post |
reply_to_post | Replies to an existing post |
send_dm | Sends a direct message to a X user |
get_user_info | Retrieves information about a X user |
get_home_timeline | Gets the authenticated user's home timeline |
search_posts | Searches for tweets |
You can use include_tools or exclude_tools to modify the list of tools the agent has access to. Learn more about selecting tools.
Developer Resources
- View Tools