Coding

X Twitter Automation

Try it

X / Twitter Automation: Operate a connected X / Twitter account end-to-end from agents and workflows: compose, publish, search, engage, and DM. Use when an a...

What it does

X / 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, create list, list name through AgentPMT-hosted remote tool calls.

The skill document

X / Twitter Automation

Freshness

Last updated: 2026-06-23.

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.

What This Tool Does

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.

Product Instructions

X / Twitter Automation

Operate a connected X (Twitter) account end-to-end from agents and workflows: publish posts and replies, upload media, search recent posts, read timelines and DMs, engage, and manage Lists.

Common workflows

  • On-brand reply queue: 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.
  • Publish with media: upload_media to get media_ids, then create_post (or create_post_with_link when the text has a URL).
  • Brand & competitor monitoring: search_posts on keywords plus lookup_timeline (mentions) and curated lookup_lists.
  • Customer support over DMs: 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.

Actions

search_posts

Required: 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_posts

Required: exactly one of post_id (string) or post_ids (string[], max 100). Optional: verbosity. Example: {"action":"lookup_posts","post_ids":["123","456"],"verbosity":"standard"}

create_post

Creates 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"]}

Creates 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_reply

Replies 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."}

Replies 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_post

Required: post_id. Example: {"action":"delete_post","post_id":"123"}

set_reply_hidden

Required: reply_post_id, hidden (boolean). Example: {"action":"set_reply_hidden","reply_post_id":"123","hidden":true}

set_like

Required: post_id, liked (boolean). Example: {"action":"set_like","post_id":"123","liked":true}

set_repost

Required: post_id, reposted (boolean). Example: {"action":"set_repost","post_id":"123","reposted":true}

lookup_post_engagers

Required: 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_users

Required: 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"]}

set_follow

Required: user_id, following (boolean). Example: {"action":"set_follow","user_id":"123","following":true}

lookup_follows

Required: user_id, relationship (followers|following). Optional: max_results, pagination_token, verbosity. Example: {"action":"lookup_follows","user_id":"123","relationship":"followers","max_results":50}

lookup_timeline

Required: 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_dms

Required: 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_dm

Required: 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"}

upload_media

Required: exactly one of file_id or source_url, plus media_type (image|gif|video) and usage_context (post|dm). Example: {"action":"upload_media","file_id":"file_abc","media_type":"image","usage_context":"post"}

create_list

Creates 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_list

Updates 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_list

Deletes a List owned by the authenticated user. Required: list_id. Example: {"action":"delete_list","list_id":"123"}

set_list_membership

Adds 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_follow

Follows 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_pin

Pins 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_lists

Looks 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_contents

Lists 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}

Response

All actions return action. List actions also return data, optional includes, optional meta, and next_token.

Notes

  • Search covers recent posts (about the last 7 days). For quote activity on a post, use lookup_post_engagers with engagement_type:"quotes".
  • Replies are limited to posts you are already connected to. You can only post a reply (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 actions need the connected token's 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.

When To Use

  • Use this skill for X / Twitter Automation on AgentPMT.
  • Use it when an agent needs this specific tool's behavior, schema, inputs, outputs, and invocation shape.
  • Search and activation keywords: 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, create list, list name.
  • Supported action names: create_list, create_post, create_post_with_link, create_reply, create_reply_with_link, delete_list, delete_post, lookup_dms, lookup_follows, lookup_list_contents, lookup_lists, lookup_post_engagers, lookup_posts, lookup_timeline, lookup_users, search_posts, send_dm, set_follow, set_like, set_list_follow, set_list_membership, set_list_pin, set_reply_hidden, set_repost, update_list, upload_media.

Use Cases

  • 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
  • and trend detection
  • Draft and send on-brand replies to the conversations that matter
  • Upload images
  • GIFs
  • and video to X from File Manager files or any public URL
  • Run social media customer support over X DMs
  • Send launch announcements and follow-up DMs from automations
  • Like
  • repost
  • and follow as part of engagement automations
  • Hide spam or off-topic replies on your own posts
  • Build and curate X Lists for launch watch

Categories And Industries

No categories or industry tags are published for this tool.

Actions And Schema

Complete generated action schema: ./schema.md. Supported action count: 26. x402 availability: not enabled for this product.

  • 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: media_ids, text.
  • 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: media_ids, text.
  • 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: media_ids, reply_to_post_id, text.
  • 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: media_ids, reply_to_post_id, text.
  • 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_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_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_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_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.
  • 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_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.

Live Schema And Examples

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.

  • Exact schema: call agentpmt-tool-search-and-execution with action: "get_schema", and tool_id: "x-twitter-automation".
  • Detailed examples: call 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.
  • Treat returned live schema and instructions as more specific than this generated summary.

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"
  }
}

Call This Tool

Product slug: x-twitter-automation

Marketplace page: https://www.agentpmt.com/marketplace/x-twitter-automation

  • AgentPMT account route: first use ../agentpmt-account-mcp-rest-api-setup to connect the main MCP server or REST API for an Agent Group where this tool is enabled.
  • x402 route: not enabled for this product.
  • AgentPMT overview: use ../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:

  • What AgentPMT is: ../what-is-agentpmt
  • AgentPMT account MCP/REST setup: ../agentpmt-account-mcp-rest-api-setup

skills.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": "create_list",
      "list_description": "example list description",
      "list_name": "example list name",
      "list_private": true
    }
  }
}

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": "create_list",
    "list_description": "example list description",
    "list_name": "example list name",
    "list_private": true
  }
}

Use the setup skill for the account connection details before making REST calls.

Response Handling

  • Treat the returned JSON as the source of truth for this tool call.
  • If the response includes warnings or correction targets, apply them before retrying.
  • If the response includes a passed or success-style boolean, use it as the workflow gate.
  • If validation fails or the response shape is unclear, call get_schema or get_instructions before retrying.
  • If create_list fails, preserve the request parameters and retry only after fixing schema, auth, or payment errors.

Security

  • Do not place account secrets, wallet private keys, mnemonics, signatures, or payment headers in prompts or logs.
  • Keep tool inputs scoped to the minimum content needed for the task.
  • Use the setup skills for credential handling; this product skill only defines product-specific behavior.

AgentPMT Reference

Related skills

Searches and reads X (Twitter): profiles, timelines, mentions, followers, tweet search, trends, lists, communities, and Spaces. Publishes posts, likes/unlike...

2 installs

X (Twitter) DM automated chat end-to-end Skill: scan DM inbox to identify pending-reply conversations, read message history, generate persona-based replies and send; also supports searching users and starting new conversations. Built-in E2E passcode unlock, DM permission filtering, and rate control.

Post, schedule, and publish to X via the OpenTweet REST API — tweets, threads, X Articles, and AI-generated media.

85 installs2 stars

X (Twitter) (x.com). Use this skill for ANY X (Twitter) request — reading, creating, updating, and deleting data. Whenever a task involves X (Twitter), use t...

9 installs

Full-featured X (Twitter) assistant — search, post with media, thread, DM, Lists, bookmarks, trends, articles, block/mute, and more. Pure Python stdlib.

2 installs

Uses Xquik from Hermes Agent for X research, monitoring, and approval-gated actions. Not affiliated with X Corp. Use when the user requests X data or an appr...

17 installs1 stars