Install
openclaw skills install @agentpmt/x-twitter-automationX / Twitter Automation: Operate a connected X / Twitter account end-to-end from agents and workflows: compose, publish, search, engage, and DM. Use when an agent needs x / twitter automation, x twitter automation, publish posts and replies to x / twitter from agent workflows, schedule and orchestrate twitter content calendars, search recent x posts for brand monitoring, competitor tracking, count posts, query through AgentPMT-hosted remote tool calls.
openclaw skills install @agentpmt/x-twitter-automationLast updated: 2026-10-08.
If the current date is more than 7 days after the last updated date, reinstall this skill from skills.sh or ClawHub before relying on endpoints, schemas, setup steps, or examples.
X (Twitter) automation for AI agents and social media teams. Connect your X account once and run your entire publishing, engagement, and social listening workflow from a single MCP-ready API. Post tweets and replies, attach images, GIFs, and video, and search X for brand keywords, mentions, competitors, and trending topics — then draft and send on-brand replies in seconds. Like, repost, follow, and send DMs; build and curate X Lists; and read your mentions, home, and user timelines for reporting. Built for automated tweet scheduling, brand and competitor monitoring, social media customer support, influencer outreach, and end-to-end X / Twitter / X.com content workflows.
Operate a connected X (Twitter) account end-to-end from agents and workflows: publish posts, replies, and polls, upload media, search and count recent posts, find users, read timelines, DMs, liked posts, trends, news, and Communities, engage, and manage Lists.
search_posts for your brand or topic over the last day and review the best candidates. You can only reply to a post you have already engaged with or that tags your account, so engage first (for example set_like or set_repost) or focus on posts that mention you, then create_reply (or create_reply_with_link) with on-brand drafts.upload_media to get media_ids, then create_post (or create_post_with_link when the text has a URL).search_posts on keywords plus lookup_timeline (mentions) and curated lookup_lists.lookup_dms to read threads, send_dm to respond.Use create_post / create_reply for text without a web link. When the text contains a URL (http://, https://, www., or a bare domain), use create_post_with_link / create_reply_with_link.
All four create actions also accept poll_options (2-4 choices, 1-25 characters each), poll_duration_minutes (5-10080; required with poll_options), reply_settings (following|mentionedUsers|subscribers|verified), community_id, place_id, made_with_ai (boolean), and paid_partnership (boolean). A poll requires text and cannot be combined with media_ids.
Example: {"action":"create_post","text":"Which topic next?","poll_options":["API design","Testing"],"poll_duration_minutes":1440,"reply_settings":"following"}
search_postsRequired: query (string). Optional: start_time, end_time (RFC3339 timestamps), max_results (1-100, default 10), pagination_token, verbosity (minimal|standard|expanded, default expanded).
Example: {"action":"search_posts","query":"agentpmt OR \"AI agents\" -is:retweet lang:en","start_time":"2026-05-22T13:00:00Z","end_time":"2026-05-23T13:00:00Z","max_results":25}
For List-specific recent search, use the X search operator in query, for example list:2055003862814040388, plus start_time and end_time.
lookup_postsRequired: exactly one of post_id (string) or post_ids (string[], max 100). Optional: verbosity.
Example: {"action":"lookup_posts","post_ids":["123","456"],"verbosity":"standard"}
count_postsCounts posts matching query over the last 7 days without retrieving them. Required: query. Optional: granularity (minute|hour|day), start_time, end_time (RFC3339, within the last 7 days), pagination_token.
Example: {"action":"count_posts","query":"AI agents lang:en","granularity":"day"}
create_postCreates a top-level post. Required: text or media_ids. Optional: media_ids (string[], max 4). For text that contains a web link, use create_post_with_link.
Example: {"action":"create_post","text":"Shipping from AgentPMT","media_ids":["123"]}
create_post_with_linkCreates a top-level post whose text contains a web link. Required: text with a link. Optional: media_ids (string[], max 4).
Example: {"action":"create_post_with_link","text":"Launch notes: https://example.com/agentpmt","media_ids":["123"]}
create_replyReplies to another post. You can only reply to a post the connected account has already engaged with (liked, reposted, quoted, or previously replied to) or that tags your account (mentions or quotes you); replies to any other post are rejected. Required: reply_to_post_id and text or media_ids. Optional: media_ids (string[], max 4). For replies whose text contains a web link, use create_reply_with_link.
Example: {"action":"create_reply","reply_to_post_id":"123","text":"Thanks for the mention."}
create_reply_with_linkReplies to another post with text that contains a web link. The same reply restriction applies: you can only reply to a post the connected account has already engaged with or that tags your account. Required: reply_to_post_id and text with a link. Optional: media_ids (string[], max 4).
Example: {"action":"create_reply_with_link","reply_to_post_id":"123","text":"Details are here: https://example.com/agentpmt"}
delete_postRequired: post_id.
Example: {"action":"delete_post","post_id":"123"}
set_reply_hiddenRequired: reply_post_id, hidden (boolean).
Example: {"action":"set_reply_hidden","reply_post_id":"123","hidden":true}
set_likeRequired: post_id, liked (boolean).
Example: {"action":"set_like","post_id":"123","liked":true}
set_repostRequired: post_id, reposted (boolean).
Example: {"action":"set_repost","post_id":"123","reposted":true}
lookup_liked_postsLists liked posts for user_id, or the authenticated user when omitted. Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_liked_posts","max_results":20}
lookup_post_engagersRequired: post_id, engagement_type (likes|reposts|quotes). Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_post_engagers","post_id":"123","engagement_type":"likes","max_results":25}
lookup_usersRequired: lookup_by (ids|usernames|me). For ids, set exactly one of user_id or user_ids. For usernames, set exactly one of username or usernames. Optional: verbosity.
Example: {"action":"lookup_users","lookup_by":"usernames","usernames":["XDevelopers"]}
search_usersRequired: query (name or username, 1-50 characters). Optional: max_results, pagination_token, verbosity.
Example: {"action":"search_users","query":"XDevelopers","max_results":10}
set_followRequired: user_id, following (boolean).
Example: {"action":"set_follow","user_id":"123","following":true}
lookup_followsRequired: user_id, relationship (followers|following). Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_follows","user_id":"123","relationship":"followers","max_results":50}
lookup_timelineRequired: timeline_type (user_posts|mentions|home). user_id is required for user_posts and mentions; optional for home. Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_timeline","timeline_type":"home","max_results":20}
lookup_dmsRequired: scope (all|conversation|participant|event_id). Set conversation_id, participant_user_id, or event_id for the matching scope. Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_dms","scope":"participant","participant_user_id":"123","max_results":20}
send_dmRequired: target_type (participant|conversation|new_group) and text or media_id. Set participant_user_id, conversation_id, or participant_user_ids for the matching target.
Example: {"action":"send_dm","target_type":"participant","participant_user_id":"123","text":"Here is the post: https://x.com/i/status/456"}
delete_dmRequired: event_id. Deletes a DM event sent by the authenticated user.
Example: {"action":"delete_dm","event_id":"123"}
upload_mediaRequired: exactly one of file_id or source_url, plus media_type (image|gif|video|subtitle) and usage_context (post|dm). Subtitle files must be .srt or .vtt and use usage_context:"post"; use the returned media ID as subtitle_media_id in set_media_subtitles.
Example: {"action":"upload_media","file_id":"file_abc","media_type":"image","usage_context":"post"}
set_media_metadataRequired: media_id and at least one of alt_text (up to 1000 characters) or allow_download (boolean). Set metadata after upload and before posting.
Example: {"action":"set_media_metadata","media_id":"123","alt_text":"A sunset over the city"}
set_media_subtitlesRequired: media_id (video), subtitle_language_code (two uppercase letters), subtitles_enabled (boolean). To attach, first upload a subtitle file with upload_media, then set subtitle_media_id to that returned media ID; optional subtitle_display_name. To remove, omit subtitle_media_id.
Example: {"action":"set_media_subtitles","media_id":"123","subtitle_language_code":"EN","subtitles_enabled":true,"subtitle_media_id":"456","subtitle_display_name":"English"}
create_listCreates a new List for the authenticated user. Required: list_name (1-25 characters). Optional: list_description (max 100 characters), list_private (boolean).
Example: {"action":"create_list","list_name":"Launch Watch","list_description":"Accounts to monitor for launch week","list_private":true}
update_listUpdates an existing List. Required: list_id and at least one of list_name, list_description, or list_private. Use list_description:"" to clear the description and list_private:false to make the List public.
Example: {"action":"update_list","list_id":"123","list_name":"Launch Signals","list_private":false}
delete_listDeletes a List owned by the authenticated user. Required: list_id.
Example: {"action":"delete_list","list_id":"123"}
set_list_membershipAdds or removes a user from a List owned by the authenticated user. Required: list_id, user_id, is_member (boolean).
Example: {"action":"set_list_membership","list_id":"123","user_id":"456","is_member":true}
set_list_followFollows or unfollows a List as the authenticated user. Required: list_id, following (boolean).
Example: {"action":"set_list_follow","list_id":"123","following":true}
set_list_pinPins or unpins a followed or owned List for the authenticated user. Required: list_id, pinned (boolean).
Example: {"action":"set_list_pin","list_id":"123","pinned":true}
lookup_listsLooks up one List or Lists by relationship. Required: list_scope (id|owned|memberships|followed|pinned). For id, set list_id. For owned, memberships, or followed, user_id is optional and defaults to the authenticated user. For pinned, omit user_id. Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_lists","list_scope":"owned","max_results":25,"verbosity":"standard"}
lookup_list_contentsLists members, followers, or posts for a List. Required: list_id, list_view (members|followers|posts). Optional: max_results, pagination_token, verbosity.
Example: {"action":"lookup_list_contents","list_id":"123","list_view":"members","max_results":50}
lookup_communitiesRequired: discovery_mode (id|search) and either community_id or query. Optional for search: max_results, pagination_token.
Example: {"action":"lookup_communities","discovery_mode":"search","query":"Python"}
lookup_trendsRequired: discovery_mode (location|personalized). For location, set woeid (worldwide is 1). Optional: max_results (up to 50).
Example: {"action":"lookup_trends","discovery_mode":"location","woeid":1}
lookup_newsRequired: discovery_mode (id|search) and either news_id or query. Optional for search: max_results, max_age_hours (1-720).
Example: {"action":"lookup_news","discovery_mode":"search","query":"technology","max_age_hours":24}
All actions return action. List actions also return data, optional includes, optional meta, and next_token.
lookup_post_engagers with engagement_type:"quotes".create_reply / create_reply_with_link) to a post when the connected account has already engaged with it (liked, reposted, quoted, or previously replied to it) or has been tagged in it (the post mentions or quotes your account). Replies to posts you have not engaged with and that do not tag you are rejected. To reply to a post surfaced by search_posts, engage with it first (for example set_like or set_repost) or choose a post that mentions you. If a reply is still rejected for access or policy reasons, move to another permitted post rather than retrying the same one.list.read scope; create, update, delete, membership, follow, and pin actions need list.write. If a List call returns a scope-related 403, reconnect the X account to refresh scopes.X / Twitter Automation on AgentPMT.count_posts, create_list, create_post, create_post_with_link, create_reply, create_reply_with_link, delete_dm, delete_list, delete_post, lookup_communities, lookup_dms, lookup_follows, lookup_liked_posts, lookup_list_contents, lookup_lists, lookup_news, lookup_post_engagers, lookup_posts, lookup_timeline, lookup_trends, lookup_users, search_posts, search_users, send_dm, set_follow, set_like, set_list_follow, set_list_membership, set_list_pin, set_media_metadata, set_media_subtitles, set_reply_hidden, set_repost, update_list, upload_media.file-management, page: https://clawhub.ai/agentpmt/file-management; skills.sh: npx skills add AgentPMT/agent-skills --skill file-management)No categories or industry tags are published for this tool.
Complete generated action schema: ./schema.md.
Supported action count: 35.
x402 availability: not enabled for this product.
count_posts (action slug: count-posts): Count posts matching a query over the last 7 days, bucketed by minute, hour, or day. Price: 5 credits. Parameters: end_time, granularity, pagination_token, query, start_time.create_list (action slug: create-list): Create a new X List for the authenticated user. Price: 1 credits. Parameters: list_description, list_name, list_private.create_post (action slug: create-post): Create a top-level X post without links. Use create_post_with_link for text containing web links. Quote-post creation is not supported. Price: 5 credits. Parameters: community_id, made_with_ai, media_ids, paid_partnership, place_id, poll_duration_minutes, poll_options, reply_settings, plus 1 more.create_post_with_link (action slug: create-post-with-link): Create a top-level X post whose text contains at least one web link. Quote-post creation is not supported. Price: 25 credits. Parameters: community_id, made_with_ai, media_ids, paid_partnership, place_id, poll_duration_minutes, poll_options, reply_settings, plus 1 more.create_reply (action slug: create-reply): Reply to another X post without links. X self-serve plans may restrict replies unless the original author has summoned the authenticated account. Price: 5 credits. Parameters: community_id, made_with_ai, media_ids, paid_partnership, place_id, poll_duration_minutes, poll_options, reply_settings, plus 2 more.create_reply_with_link (action slug: create-reply-with-link): Reply to another X post with text containing at least one web link. X self-serve plans may restrict replies unless the original author has summoned the authenticated account. Price: 25 credits. Parameters: community_id, made_with_ai, media_ids, paid_partnership, place_id, poll_duration_minutes, poll_options, reply_settings, plus 2 more.delete_dm (action slug: delete-dm): Delete a direct message event sent by the authenticated user. Price: 5 credits. Parameters: event_id.delete_list (action slug: delete-list): Delete a List owned by the authenticated user. Price: 1 credits. Parameters: list_id.delete_post (action slug: delete-post): Delete a post by ID. Price: 5 credits. Parameters: post_id.lookup_communities (action slug: lookup-communities): Look up a Community by ID or search Communities by keyword. Price: 5 credits. Parameters: community_id, discovery_mode, max_results, pagination_token, query.lookup_dms (action slug: lookup-dms): Read DM events by scope: all, conversation, participant, or event_id. Price: 5 credits. Parameters: conversation_id, event_id, max_results, pagination_token, participant_user_id, scope, verbosity.lookup_follows (action slug: lookup-follows): List followers or followed users for a user. Price: 5 credits. Parameters: max_results, pagination_token, relationship, user_id, verbosity.lookup_liked_posts (action slug: lookup-liked-posts): List posts liked by a user; defaults to the authenticated user. Price: 5 credits. Parameters: max_results, pagination_token, user_id, verbosity.lookup_list_contents (action slug: lookup-list-contents): List members, followers, or posts for a List. Price: 1 credits. Parameters: list_id, list_view, max_results, pagination_token, verbosity.lookup_lists (action slug: lookup-lists): Look up one List or list owned, membership, followed, or pinned Lists. Price: 1 credits. Parameters: list_id, list_scope, max_results, pagination_token, user_id, verbosity.lookup_news (action slug: lookup-news): Look up a news story by ID or search current news. Price: 5 credits. Parameters: discovery_mode, max_age_hours, max_results, news_id, query.lookup_post_engagers (action slug: lookup-post-engagers): List users who liked or reposted a post, or list quote posts. Price: 5 credits. Parameters: engagement_type, max_results, pagination_token, post_id, verbosity.lookup_posts (action slug: lookup-posts): Get one or more X posts by ID with curated field verbosity. Price: 5 credits. Parameters: post_id, post_ids, verbosity.lookup_timeline (action slug: lookup-timeline): Read user posts, mentions, or authenticated home timeline. Price: 5 credits. Parameters: max_results, pagination_token, timeline_type, user_id, verbosity.lookup_trends (action slug: lookup-trends): Get location trends by WOEID or personalized trends. Price: 5 credits. Parameters: discovery_mode, max_results, woeid.lookup_users (action slug: lookup-users): Resolve users by ID, username, or the authenticated account. Price: 5 credits. Parameters: lookup_by, user_id, user_ids, username, usernames, verbosity.search_posts (action slug: search-posts): Search recent X posts from the last 7 days. Price: 5 credits. Parameters: end_time, max_results, pagination_token, query, start_time, verbosity.search_users (action slug: search-users): Search X users by name or username. Price: 5 credits. Parameters: max_results, pagination_token, query, verbosity.send_dm (action slug: send-dm): Send a DM to a participant, existing conversation, or new group. Price: 5 credits. Parameters: conversation_id, media_id, participant_user_id, participant_user_ids, target_type, text.set_follow (action slug: set-follow): Follow or unfollow a user as the authenticated user. Price: 5 credits. Parameters: following, user_id.set_like (action slug: set-like): Like or unlike a post as the authenticated user. Price: 5 credits. Parameters: liked, post_id.set_list_follow (action slug: set-list-follow): Follow or unfollow a List as the authenticated user. Price: 1 credits. Parameters: following, list_id.set_list_membership (action slug: set-list-membership): Add or remove a user as a member of a List owned by the authenticated user. Price: 1 credits. Parameters: is_member, list_id, user_id.set_list_pin (action slug: set-list-pin): Pin or unpin a followed or owned List for the authenticated user. Price: 1 credits. Parameters: list_id, pinned.set_media_metadata (action slug: set-media-metadata): Set uploaded media alt text or video download permission. Price: 5 credits. Parameters: allow_download, alt_text, media_id.set_media_subtitles (action slug: set-media-subtitles): Attach or remove a subtitle track from an uploaded video. Price: 5 credits. Parameters: media_id, subtitle_display_name, subtitle_language_code, subtitle_media_id, subtitles_enabled.set_reply_hidden (action slug: set-reply-hidden): Hide or unhide a reply on your post. Price: 5 credits. Parameters: hidden, reply_post_id.set_repost (action slug: set-repost): Repost or undo repost as the authenticated user. Price: 5 credits. Parameters: post_id, reposted.update_list (action slug: update-list): Update a List's name, description, or privacy setting. Price: 1 credits. Parameters: list_description, list_id, list_name, list_private.upload_media (action slug: upload-media): Upload image, GIF, or video media for posts or DMs and return a media ID. Price: 5 credits. Parameters: file_id, media_type, source_url, usage_context.Use the compact schema above for ordinary calls. Before a new production integration, or whenever parameters, enum values, nested objects, outputs, or examples are unclear, fetch live details first.
agentpmt-tool-search-and-execution with action: "get_schema", and tool_id: "x-twitter-automation".agentpmt-tool-search-and-execution with action: "get_instructions" and tool_id: "x-twitter-automation", or call this product with action: "get_instructions" when the product tool is already selected.MCP schema lookup through the main AgentPMT MCP server:
{
"method": "tools/call",
"params": {
"name": "AgentPMT-Tool-Search-and-Execution",
"arguments": {
"action": "get_schema",
"tool_id": "x-twitter-automation"
}
}
}
For live examples, keep the same MCP tool and use these arguments:
{
"action": "get_instructions",
"tool_id": "x-twitter-automation"
}
Authenticated AgentPMT REST schema lookup body:
{
"name": "agentpmt-tool-search-and-execution",
"parameters": {
"action": "get_schema",
"tool_id": "x-twitter-automation"
}
}
Authenticated AgentPMT REST live examples body:
{
"name": "agentpmt-tool-search-and-execution",
"parameters": {
"action": "get_instructions",
"tool_id": "x-twitter-automation"
}
}
Product slug: x-twitter-automation
Marketplace page: https://www.agentpmt.com/marketplace/x-twitter-automation
../agentpmt-account-mcp-rest-api-setup to connect the main MCP server or REST API for an Agent Group where this tool is enabled.../what-is-agentpmt for marketplace, Agent Group, workflow, MCP, REST, and payment concepts.If those setup skills are not installed beside this product skill, use the downloads below.
Core AgentPMT setup skills:
openclaw skills install what-is-agentpmtnpx skills add AgentPMT/agent-skills --skill what-is-agentpmtopenclaw skills install agentpmt-account-mcp-rest-api-setupnpx skills add AgentPMT/agent-skills --skill agentpmt-account-mcp-rest-api-setupskills.sh install script:
npx skills add AgentPMT/agent-skills --skill what-is-agentpmt
npx skills add AgentPMT/agent-skills --skill agentpmt-account-mcp-rest-api-setup
MCP call shape after the main AgentPMT MCP server is connected:
{
"method": "tools/call",
"params": {
"name": "X--Twitter-Automation",
"arguments": {
"action": "count_posts",
"end_time": "example end time",
"granularity": "minute",
"pagination_token": "example pagination token",
"query": "example search query",
"start_time": "example start time"
}
}
}
Use the exact tool name returned by tools/list; the name above is the expected readable form.
Authenticated AgentPMT REST call body:
{
"name": "x-twitter-automation",
"parameters": {
"action": "count_posts",
"end_time": "example end time",
"granularity": "minute",
"pagination_token": "example pagination token",
"query": "example search query",
"start_time": "example start time"
}
}
Use the setup skill for the account connection details before making REST calls.
passed or success-style boolean, use it as the workflow gate.get_schema or get_instructions before retrying.count_posts fails, preserve the request parameters and retry only after fixing schema, auth, or payment errors.what-is-agentpmt, page: https://clawhub.ai/agentpmt/what-is-agentpmt; skills.sh: npx skills add AgentPMT/agent-skills --skill what-is-agentpmt)agentpmt-account-mcp-rest-api-setup, page: https://clawhub.ai/agentpmt/agentpmt-account-mcp-rest-api-setup; skills.sh: npx skills add AgentPMT/agent-skills --skill agentpmt-account-mcp-rest-api-setup)