# X

> X through One

- Skill: `withoneai/x` (Agent Skill)
- Install (CLI): `npx skillmds@latest add withoneai/x`
- Raw SKILL.md: https://api.skillmd.com/api/skills/withoneai/x/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: withoneai (https://skillmd.com/u/withoneai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/withoneai/x

---


# X through One

X is a real-time social networking platform for sharing short-form content, multimedia, and updates. It enables individuals, brands, and communities to engage through posts, live discussions, and trending conversations globally.

One exposes X through four MCP tools. The table below carries real action ids from One's knowledge base, so for a common operation you can skip search and go straight to reading the action's parameters.

## How to run an action

1. Find the action in the table below, or call `search_one_platform_actions` with platform `x` if it is not listed.
2. Call `get_one_action_knowledge` with the action id. Do this every time, including for actions in this table. The table gives you the id, not the parameters.
3. Call `execute_one_action` with parameters copied from that knowledge.

Never guess a parameter name, a body field, or an enum value. The knowledge has the real schema, and a guessed field is either a 400 or a silent write of the wrong thing.

## Before you start

Call `list_one_integrations` once and confirm X is connected. If it is missing, the user has not connected it: say so and point them at https://app.withone.ai rather than reaching for raw HTTP.

Each connection carries an `access` field. If it reports `{"policy": "methods", "methods": ["GET"]}` the agent is read-only here, so plan a read-only answer instead of attempting a write that will be refused.

## Before a write

Creates, updates, deletes and sends land on a real X account and cannot be recalled. State the action and the specific target in one line before the first write in a task, and let the user stop you. Reads need no confirmation.

## Actions

### Users

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User by ID | GET | `/2/users/{{id}}` | `conn_mod_def::GJLaTlV6bzg::Z7tBxXNERxu0Fj3MVt9Gyg` |
| Get a User by Username | GET | `/2/users/by/username/{{username}}` | `conn_mod_def::GJLaS-7YzI8::rLOLcqh-S1qLXQftCGEGUg` |
| Get the Authenticated User (“me”) | GET | `/2/users/me` | `conn_mod_def::GJLaTJusYDc::A67WMmeURuC0nSuzIgfAGg` |
| Get Users by IDs | GET | `/2/users` | `conn_mod_def::GJLaSoaG_q8::opUbLPziStmEmFOurE7wKQ` |
| Get Users by Usernames | GET | `/2/users/by` | `conn_mod_def::GJLaSyQLZZ0::7O7jITB5R82dDWjXXlnENQ` |
| List a User’s Following | GET | `/2/users/{{id}}/following` | `conn_mod_def::GJLaWJy37M0::-EO33OpxT2KmP5EUk9gN1w` |
| List Users Who Reposted a Post (by Post ID) | GET | `/2/tweets/{{id}}/retweeted_by` | `conn_mod_def::GJLaR_J7Fs8::IP-kfMhITzu0KaIdDQHNaw` |
| Search Users | GET | `/users/search` | `conn_mod_def::GJLaTZDzJRg::qJ2m-kBzQnmy7lP700WglQ` |
| Block DMs for a User | POST | `/2/users/{{id}}/dm/block` | `conn_mod_def::GJLaVD0ZiXw::yGaxVkRwS_Oj24h99BDFWw` |
| Follow a User (from a User’s Following Collection) | POST | `/2/users/{{id}}/following` | `conn_mod_def::GJLaWRKzJv8::J2B3G0YNSxa8J3V3FwGemw` |
| Mute a User for an Authenticated Source User | POST | `/2/users/{{id}}/muting` | `conn_mod_def::GJLaXr-OGWI::DgtKoa9WQhO9g0WEXEuceQ` |
| Unblock DMs for a User | POST | `/2/users/{{id}}/dm/unblock` | `conn_mod_def::GJLaVMxLJGc::B_PAlGz-TxC_Q4VgiGU0fw` |

2 more Users actions are available through search.

### Tweets

| Action | Method | Path | Action id |
|---|---|---|---|
| Get Reposts for a Tweet | GET | `/2/tweets/{{id}}/retweets` | `conn_mod_def::GJLaSJWN7Hc::6ey8yL3fRY23E5zC8SCnGA` |
| List a User's Posts (Tweets) | GET | `/2/users/{{ID}}/tweets` | `conn_mod_def::GJLaYzxwiB8::SLxpkxgzRJCXrerGQ8YpDQ` |
| Stream 10% Sampled Posts (Sample10 Stream) | GET | `/2/tweets/sample10/stream` | `conn_mod_def::GJLaOhmNWPU::ZQarIDZcSAqU4y_6w0Sngw` |
| Stream All Posts (Firehose) | GET | `/tweets/firehose/stream` | `conn_mod_def::GJLaM-Q5Jkk::_OssEoivSTOou1XdKEsaqA` |
| Stream English Posts (Firehose) | GET | `/tweets/firehose/stream/lang/en` | `conn_mod_def::GJLaNUJR0Zo::gcgGc_NwTQarKJzFG5cqfQ` |
| Stream Filtered Posts (Filtered Stream) | GET | `/2/tweets/search/stream` | `conn_mod_def::GJLaOqCmfrI::Dov-NXbnTeGEteIN0gKVSA` |
| Stream Japanese-language Posts (Firehose) | GET | `/tweets/firehose/stream/lang/ja` | `conn_mod_def::GJLaNgRq8Zw::rJrnJi4vRryoysKjFPUV6Q` |
| Stream Korean-language Posts (Firehose) | GET | `/tweets/firehose/stream/lang/ko` | `conn_mod_def::GJLaNppBJZ8::4gokadejS3ykdypIRzGiUQ` |
| Stream Portuguese-Language Posts (Firehose) | GET | `/tweets/firehose/stream/lang/pt` | `conn_mod_def::GJLaN0KstLg::s1db-GN-SLiZVCfLu5_lRg` |
| Stream Sampled Posts | GET | `/tweets/sample/stream` | `conn_mod_def::GJLaOKwfYwM::vcIYKf7oQ8GloEH7CP8cFA` |
| Delete a Post (Tweet) by ID | DELETE | `/2/tweets/{{id}}` | `conn_mod_def::GJLaRiqSvQc::mYpnHkpOR1KA43BNg4e8Aw` |
| Hide (or Unhide) a Reply Tweet | PUT | `/2/tweets/{{TWEET_ID}}/hidden` | `conn_mod_def::GJLaSQbw5YI::iZ992LP3TzO2iV0CUAiPow` |

### Posts

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Post by ID | GET | `/2/tweets/{{id}}` | `conn_mod_def::GJLaRawKmb4::XqYRWA9aRFiHRIvG7Qi5Vg` |
| Get Posts by IDs | GET | `/2/tweets` | `conn_mod_def::GJLaQREdqoc::S9NGR7b4S3q_dU2u3lNIEw` |
| List Posts in a List | GET | `/2/lists/{{id}}/tweets` | `conn_mod_def::GJLaIe0llbI::u6psT6uDT82HwPVmFim8Ng` |
| Search All Posts (Full-Archive) | GET | `/2/tweets/search/all` | `conn_mod_def::GJLaREvbOpE::tkOv4U8hSjCmy0-lKsKWDA` |
| Search Recent Posts | GET | `/tweets/search/recent` | `conn_mod_def::GJLaRPb3hDk::YzVojtkBQOG0BlKQmwugsg` |
| Create or Edit Post | POST | `/2/tweets` | `conn_mod_def::GJLaQYKOXew::Ha2rKcMVTwaFjzSQWpUFvw` |

### DmEvents

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a DM Event by ID | GET | `/2/dm_events/{{EVENT_ID}}` | `conn_mod_def::GJLaG3Mniv4::txMAE_yHSUuVxhFC8GWpNQ` |
| Get DM Events | GET | `/dm_events` | `conn_mod_def::GJLaGvQXHy0::-XSyXgJYRo-APWIqviGbVQ` |
| Get DM Events for a One-to-One DM Conversation (by Participant) | GET | `/2/dm_conversations/with/{{PARTICIPANT_ID}}/dm_events` | `conn_mod_def::GJLaGMsE_60::F5JbSwB5SMqZsQnaNgjRIA` |
| List DM Events for a DM Conversation | GET | `/2/dm_conversations/{{id}}/dm_events` | `conn_mod_def::GJLaGm_2aIU::oOe-R0alTtyKftm_BPpTYA` |
| Delete a DM Event | DELETE | `/2/dm_events/{{EVENT_ID}}` | `conn_mod_def::GJLaG-LvhA4::ayQmPTeORmy6B7bDMyBSBw` |

### Lists

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a List by ID | GET | `/2/lists/{{id}}` | `conn_mod_def::GJLaHalYzSM::wj5O0nDaSeGb-N-hPfRlBQ` |
| Add a Member to a List | POST | `/2/lists/{{ID}}/members` | `conn_mod_def::GJLaIB7gD0Y::-isa551fTzuOpV821ED8Jg` |
| Create a List | POST | `/2/lists` | `conn_mod_def::GJLaHSfDGDM::o_sg7oO_QVGk1vCESYuRzA` |
| Delete a List | DELETE | `/2/lists/{{id}}` | `conn_mod_def::GJLaHmvFEEo::0RY1ad8nTeOyEphXiGi0eA` |
| Update a List | PUT | `/2/lists/{{ID}}` | `conn_mod_def::GJLaHgszitA::Us2Qi4yJTtCECS3sgQ1Bew` |

### Webhooks

| Action | Method | Path | Action id |
|---|---|---|---|
| List Webhooks (Client App) | GET | `/2/webhooks` | `conn_mod_def::GJLaZyc9zLU::JWivMDkMRH-aSS-9LDGaPQ` |
| Create a Webhook | POST | `/2/webhooks` | `conn_mod_def::GJLaZ5MWlHk::KlwJPsJ4Q2iyle3n6dHDcQ` |
| Delete a Stream Link for a Webhook | DELETE | `/2/tweets/search/webhooks/{{WEBHOOK_ID}}` | `conn_mod_def::GJLaZr1yz8g::qxkNT5fOSYa-CTDNUuY6jA` |
| Delete a Webhook | DELETE | `/2/webhooks/{{WEBHOOK_ID}}` | `conn_mod_def::GJLaaMnXsVk::u4iXu5ZlRUeyg3-9eo4bYQ` |
| Validate a Webhook (Trigger CRC Check) | PUT | `/2/webhooks/{{WEBHOOK_ID}}` | `conn_mod_def::GJLaaGPU2z0::y3t-lOHOSQaH3HuUH7AKXg` |

### Connections

| Action | Method | Path | Action id |
|---|---|---|---|
| Get Connection History | GET | `/connections` | `conn_mod_def::GJLaFkxNxDI::-B608IMTSC-uVEbIW71hlQ` |
| Terminate All Connections | DELETE | `/connections/all` | `conn_mod_def::GJLaFwVoMq8::QqsSkzK6QVa-v2cDU26k9g` |
| Terminate Multiple Connections | DELETE | `/2/connections` | `conn_mod_def::GJLaFqhoJuQ::35w-TPn_SXeDUssle0dy_w` |
| Terminate Streaming Connections for an Endpoint | DELETE | `/2/connections/{{endpoint_id}}` | `conn_mod_def::GJLaF4YJ16g::Qbo54_JWSMiGDoN_Mr2KMw` |

### Spaces

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a Space by ID | GET | `/2/spaces/{{id}}` | `conn_mod_def::GJLaLyOKyL0::g-9ORwpsSyKzDbCaUI20zg` |
| Get Spaces by Creator IDs | GET | `/2/spaces/by/creator_ids` | `conn_mod_def::GJLaLd23lag::ztZpYnLRQW22KZ5los8fnQ` |
| Get Spaces by IDs | GET | `/2/spaces` | `conn_mod_def::GJLaLNiy_24::h3ydINvMSMefGXl8WQAe_w` |
| Search Spaces | GET | `/2/spaces/search` | `conn_mod_def::GJLaLlfEHes::1_6EovqkTzyElrO79mrFyA` |

### Likes

| Action | Method | Path | Action id |
|---|---|---|---|
| Stream All Likes (Firehose) | GET | `/2/likes/firehose/stream` | `conn_mod_def::GJLaMclcda4::jPClxIecRlqQswb3DfKDjA` |
| Stream Sampled Likes (10% Sample) | GET | `/likes/sample10/stream` | `conn_mod_def::GJLaMnv5TU8::n8IdiF8UTZ6x205sRZ61Ew` |
| Like a User’s Post (Create Like) | POST | `/2/users/{{ID}}/likes` | `conn_mod_def::GJLaWjacoCk::bFg6iXMoThCrZ9W4Zvtf2g` |
| Unlike a User’s Liked Post | DELETE | `/2/users/{{ID}}/likes/{{TWEET_ID}}` | `conn_mod_def::GJLaWsJec0A::1f7gFQPaTS6LQ88X4Uv5qA` |

### CommunityNotes

| Action | Method | Path | Action id |
|---|---|---|---|
| Search for Community Notes Written | GET | `/2/notes/search/notes_written` | `conn_mod_def::GJLaE9M76uM::25U8a14CRzurQAMlLLT_sA` |
| Create a Community Note | POST | `/notes` | `conn_mod_def::GJLaE2dMPiQ::WXLPcV0gRximGURIVf6ntw` |
| Delete a Community Note | DELETE | `/2/notes/{{ID}}` | `conn_mod_def::GJLaFI25mBI::3CiCrg0SR5qbuAUaDx_NEw` |

### Media

| Action | Method | Path | Action id |
|---|---|---|---|
| Get Media by Media Key | GET | `/2/media/{{media_key}}` | `conn_mod_def::GJLaKw2AKAQ::b0v2G1C1TA-BQOpGJaeMwQ` |
| Get Media by Media Keys | GET | `/2/media` | `conn_mod_def::GJLaIxkP5tk::agyNgx_xSN-7bqJ34ZomnA` |
| Upload Media | POST | `/2/media/upload` | `conn_mod_def::GJLaKIpTTCg::ALX50CA-Q-WtyBBzvf203g` |

### UserBookmarks

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User’s Bookmarks | GET | `/2/users/{{ID}}/bookmarks` | `conn_mod_def::GJLaUNA5WvQ::lGH-p7XcQEm-4NARcZu2cw` |
| Create a User Bookmark | POST | `/2/users/{{id}}/bookmarks` | `conn_mod_def::GJLaUYIl-KI::xvPGwyJ4Tx2Rk9N9zAvGSg` |
| Delete a User’s Bookmark (Remove a Post from Bookmarks) | DELETE | `/2/users/{{ID}}/bookmarks/{{TWEET_ID}}` | `conn_mod_def::GJLaU75WAf4::jz97g5UYSOKWfG8g2E6XQA` |

### AccountActivitySubscription

| Action | Method | Path | Action id |
|---|---|---|---|
| Create an Account Activity Subscription for a Webhook (All) | POST | `/2/account_activity/webhooks/{{WEBHOOK_ID}}/subscriptions/all` | `conn_mod_def::GJLaDAh1yhw::AU1XPyvlRN2176Tw_dK03w` |
| Delete an Account Activity Subscription for a Webhook and User | DELETE | `/2/account_activity/webhooks/{{WEBHOOK_ID}}/subscriptions/{{USER_ID}}/all` | `conn_mod_def::GJLaDO0hjow::S3vMPS0nTT-eQ9jJFd_Vfg` |

### ActivitySubscriptions

| Action | Method | Path | Action id |
|---|---|---|---|
| List X Activity Subscriptions | GET | `/activity/subscriptions` | `conn_mod_def::GJLaDY6VCZs::xzkVx3i7SEed3jqsNcTmWw` |
| Create an X Activity Subscription | POST | `/2/activity/subscriptions` | `conn_mod_def::GJLaDdzAeOY::WwuwE42-SZSlN7oP-njsVw` |

### ActivitySubscription

| Action | Method | Path | Action id |
|---|---|---|---|
| Delete an Activity Subscription | DELETE | `/2/activity/subscriptions/{{SUBSCRIPTION_ID}}` | `conn_mod_def::GJLaDskUey0::0K5Z24XtRhedsPxl5WMCGg` |
| Update an X Activity Subscription | PUT | `/2/activity/subscriptions/{{SUBSCRIPTION_ID}}` | `conn_mod_def::GJLaDmPOhi0::W47_PqqhQeip5p0w8owiHA` |

### UserPublicKeys

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User’s Public Keys | GET | `/2/users/{{id}}/public_keys` | `conn_mod_def::GJLaETXP_gM::xc6szonXRZ-8DZ4fkLYTGg` |
| Add a User’s Public Key | POST | `/2/users/{{ID}}/public_keys` | `conn_mod_def::GJLaEc42GL8::MJPRiFlWQjOjRKochm8ZRg` |

### ComplianceJobs

| Action | Method | Path | Action id |
|---|---|---|---|
| List Compliance Jobs | GET | `/compliance/jobs` | `conn_mod_def::GJLaFO_KOHg::pRcI2pOCQSCUv4fTnKMXMw` |
| Create Compliance Job | POST | `/compliance/jobs` | `conn_mod_def::GJLaFYgl8Bw::egkJexNSSKakOpIjW_VAUA` |

### DmMessages

| Action | Method | Path | Action id |
|---|---|---|---|
| Create a DM Message for a Participant | POST | `/2/dm_conversations/with/{{PARTICIPANT_ID}}/messages` | `conn_mod_def::GJLaGWMOLjQ::t6uTqPVpSfGQkUuhuisULw` |
| Create a DM Message in a Conversation | POST | `/2/dm_conversations/{{DM_CONVERSATION_ID}}/messages` | `conn_mod_def::GJLaGeiY6As::pmMekOCTRh6VCcSNRU8sMQ` |

### ListMembers

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a List’s Members | GET | `/2/lists/{{ID}}/members` | `conn_mod_def::GJLaH74lNPI::3JCaJyeFRkS3vYZ98V5mRw` |
| Remove a List Member | DELETE | `/2/lists/{{ID}}/members/{{USER_ID}}` | `conn_mod_def::GJLaIWdVZuE::e12f7jUiS7GFje-rw8t9Zg` |

### MediaSubtitles

| Action | Method | Path | Action id |
|---|---|---|---|
| Create Media Subtitles | POST | `/media/subtitles` | `conn_mod_def::GJLaJrqc-6g::KPS-LoWfQl-GyB94lYoNrw` |
| Delete Media Subtitles | DELETE | `/2/media/subtitles` | `conn_mod_def::GJLaJzNKuu4::Q48NKgSvQ_O4NhBBccvMgw` |

### MediaUpload

| Action | Method | Path | Action id |
|---|---|---|---|
| Append Media Data to an Upload Session | POST | `/2/media/upload/{{ID}}/append` | `conn_mod_def::GJLaKardSZI::p2xJCuqbTCKuXMdy1EmChA` |
| Finalize a Media Upload | POST | `/2/media/upload/{{ID}}/finalize` | `conn_mod_def::GJLaKienXgQ::GI6a9x8BQ1azbP7Bl8zRZw` |

### News

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a News Story by ID | GET | `/2/news/{{id}}` | `conn_mod_def::GJLaLBS3Eeo::bAZ-QtOYTdigd0ZXczQP1w` |
| Search News | GET | `/news/search` | `conn_mod_def::GJLaK44SxII::U-Q4py0RRiGoww7Zo2Y3lg` |

### FilteredStreamRules

| Action | Method | Path | Action id |
|---|---|---|---|
| Get Filtered Stream Rules | GET | `/tweets/search/stream/rules` | `conn_mod_def::GJLaOzz8n5o::vgKAxvc2QgSZB06D-Cf2dQ` |
| Update Filtered Stream Rules | POST | `/2/tweets/search/stream/rules` | `conn_mod_def::GJLaO6dTyfg::YjaVQQulT2aQQLvlM2t4NQ` |

### UsersFollowedLists

| Action | Method | Path | Action id |
|---|---|---|---|
| Get a User’s Followed Lists | GET | `/2/users/{{ID}}/followed_lists` | `conn_mod_def::GJLaVZ9t7Rc::02yuND76TIqPSE5dt68GIQ` |
| Unfollow a User’s Followed List | DELETE | `/2/users/{{ID}}/followed_lists/{{LIST_ID}}` | `conn_mod_def::GJLaVvNAdgc::xeMvbaP-TgiXvHSGEwjHVw` |

This lists 90 of 148 actions. For anything not here, call `search_one_platform_actions` with platform `x`. The full catalog is at https://www.withone.ai/knowledge/x.

## When a call fails

The error comes from X, not from One. A 400 or 422 means your parameters do not match the schema, so re-read the knowledge and fix the field. A 401 or 403 means the connection needs re-authorizing, which no retry will fix. A 404 means the id is not on this account. A 429 means slow down. Never retry a write more than once: the first attempt may have landed.

Full catalog: https://www.withone.ai/knowledge/x

Integration knowledge by One (withone.ai), licensed under [One-Knowledge-1.0](https://www.withone.ai/licenses/knowledge). Attribution must be preserved in derivative works.

