naftiko: 1.0.0-alpha2 info: label: X API v2 — Users description: 'X API v2 — Users. 45 operations. Lead operation: X Get List Followers. Self-contained Naftiko capability covering one Twitter business surface.' tags: - Twitter - Users created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: TWITTER_API_KEY: TWITTER_API_KEY capability: consumes: - type: http namespace: x-users baseUri: https://api.x.com description: X API v2 — Users business capability. Self-contained, no shared references. resources: - name: 2-lists-id-followers path: /2/lists/{id}/followers operations: - name: getlistsfollowers method: GET description: X Get List Followers outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the List. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-lists-id-members path: /2/lists/{id}/members operations: - name: getlistsmembers method: GET description: X Get List Members outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the List. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-tweets-id-liking_users path: /2/tweets/{id}/liking_users operations: - name: getpostslikingusers method: GET description: X Get Liking Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: A single Post ID. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: 2-tweets-id-retweeted_by path: /2/tweets/{id}/retweeted_by operations: - name: getpostsrepostedby method: GET description: X Get Reposted by outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: A single Post ID. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: 2-users path: /2/users operations: - name: getusersbyids method: GET description: X Get Users by IDs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: array description: A list of User IDs, comma-separated. You can specify up to 100 IDs. required: true - name: 2-users-by path: /2/users/by operations: - name: getusersbyusernames method: GET description: X Get Users by Usernames outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: usernames in: query type: array description: A list of usernames, comma-separated. required: true - name: 2-users-by-username-username path: /2/users/by/username/{username} operations: - name: getusersbyusername method: GET description: X Get User by Username outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: username in: path type: string description: A username. required: true - name: 2-users-me path: /2/users/me operations: - name: getusersme method: GET description: X Get My User outputRawFormat: json outputParameters: - name: result type: object value: $. - name: 2-users-public_keys path: /2/users/public_keys operations: - name: getuserspublickeys method: GET description: X Get Public Keys for Multiple Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: ids in: query type: array description: A list of User IDs, comma-separated. You can specify up to 100 IDs. required: true - name: 2-users-reposts_of_me path: /2/users/reposts_of_me operations: - name: getusersrepostsofme method: GET description: X Get Reposts of Me outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: 2-users-search path: /2/users/search operations: - name: searchusers method: GET description: X Search Users outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string description: TThe the query string by which to query for users. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: next_token in: query type: string description: This parameter is used to get the next 'page' of results. The value used with the parameter is pulled directly from the response provided by the API, and should - name: 2-users-id path: /2/users/{id} operations: - name: getusersbyid method: GET description: X Get User by ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: 2-users-id-affiliates path: /2/users/{id}/affiliates operations: - name: getusersaffiliates method: GET description: X Get Affiliates outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-users-id-blocking path: /2/users/{id}/blocking operations: - name: getusersblocking method: GET description: X Get Blocking outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-users-id-bookmarks path: /2/users/{id}/bookmarks operations: - name: getusersbookmarks method: GET description: X Get Bookmarks outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: createusersbookmark method: POST description: X Create Bookmark outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to add bookmarks. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: 2-users-id-bookmarks-folders path: /2/users/{id}/bookmarks/folders operations: - name: getusersbookmarkfolders method: GET description: X Get Bookmark Folders outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: 2-users-id-bookmarks-folders-folder_id path: /2/users/{id}/bookmarks/folders/{folder_id} operations: - name: getusersbookmarksbyfolderid method: GET description: X Get Bookmarks by Folder ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: folder_id in: path type: string description: The ID of the Bookmark Folder that the authenticated User is trying to fetch Posts for. required: true - name: 2-users-id-bookmarks-tweet_id path: /2/users/{id}/bookmarks/{tweet_id} operations: - name: deleteusersbookmark method: DELETE description: X Delete Bookmark outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User whose bookmark is to be removed. required: true - name: tweet_id in: path type: string description: The ID of the Post that the source User is removing from bookmarks. required: true - name: 2-users-id-dm-block path: /2/users/{id}/dm/block operations: - name: blockusersdms method: POST description: X Block DMs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the target User that the authenticated user requesting to block dms for. required: true - name: 2-users-id-dm-unblock path: /2/users/{id}/dm/unblock operations: - name: unblockusersdms method: POST description: X Unblock DMs outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the target User that the authenticated user requesting to unblock dms for. required: true - name: 2-users-id-followed_lists path: /2/users/{id}/followed_lists operations: - name: getusersfollowedlists method: GET description: X Get Followed Lists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: followlist method: POST description: X Follow List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that will follow the List. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: 2-users-id-followed_lists-list_id path: /2/users/{id}/followed_lists/{list_id} operations: - name: unfollowlist method: DELETE description: X Unfollow List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that will unfollow the List. required: true - name: list_id in: path type: string description: The ID of the List to unfollow. required: true - name: 2-users-id-followers path: /2/users/{id}/followers operations: - name: getusersfollowers method: GET description: X Get Followers outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-users-id-following path: /2/users/{id}/following operations: - name: getusersfollowing method: GET description: X Get Following outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: followuser method: POST description: X Follow User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to follow the target User. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: 2-users-id-liked_tweets path: /2/users/{id}/liked_tweets operations: - name: getuserslikedposts method: GET description: X Get Liked Posts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: 2-users-id-likes path: /2/users/{id}/likes operations: - name: likepost method: POST description: X Like Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to like the Post. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: 2-users-id-likes-tweet_id path: /2/users/{id}/likes/{tweet_id} operations: - name: unlikepost method: DELETE description: X Unlike Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to unlike the Post. required: true - name: tweet_id in: path type: string description: The ID of the Post that the User is requesting to unlike. required: true - name: 2-users-id-list_memberships path: /2/users/{id}/list_memberships operations: - name: getuserslistmemberships method: GET description: X Get List Memberships outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-users-id-mentions path: /2/users/{id}/mentions operations: - name: getusersmentions method: GET description: X Get Mentions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: since_id in: query type: string description: The minimum Post ID to be included in the result set. This parameter takes precedence over start_time if both are specified. - name: until_id in: query type: string description: The maximum Post ID to be included in the result set. This parameter takes precedence over end_time if both are specified. - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: start_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Posts will be provided. The since_id parameter takes precedence if it is also specified. - name: end_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided. The until_id parameter takes precedence if it is also specified. - name: 2-users-id-muting path: /2/users/{id}/muting operations: - name: getusersmuting method: GET description: X Get Muting outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: muteuser method: POST description: X Mute User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to mute the target User. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: 2-users-id-owned_lists path: /2/users/{id}/owned_lists operations: - name: getusersownedlists method: GET description: X Get Owned Lists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get a specified 'page' of results. - name: 2-users-id-pinned_lists path: /2/users/{id}/pinned_lists operations: - name: getuserspinnedlists method: GET description: X Get Pinned Lists outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: pinlist method: POST description: X Pin List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that will pin the List. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: 2-users-id-pinned_lists-list_id path: /2/users/{id}/pinned_lists/{list_id} operations: - name: unpinlist method: DELETE description: X Unpin List outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User for whom to return results. required: true - name: list_id in: path type: string description: The ID of the List to unpin. required: true - name: 2-users-id-public_keys path: /2/users/{id}/public_keys operations: - name: getuserspublickey method: GET description: X Get User Public Keys outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: 2-users-id-retweets path: /2/users/{id}/retweets operations: - name: repostpost method: POST description: X Repost Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to repost the Post. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: 2-users-id-retweets-source_tweet_id path: /2/users/{id}/retweets/{source_tweet_id} operations: - name: unrepostpost method: DELETE description: X Unrepost Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User that is requesting to repost the Post. required: true - name: source_tweet_id in: path type: string description: The ID of the Post that the User is requesting to unretweet. required: true - name: 2-users-id-timelines-reverse_chronological path: /2/users/{id}/timelines/reverse_chronological operations: - name: getuserstimeline method: GET description: X Get Timeline outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the authenticated source User to list Reverse Chronological Timeline Posts of. required: true - name: since_id in: query type: string description: The minimum Post ID to be included in the result set. This parameter takes precedence over start_time if both are specified. - name: until_id in: query type: string description: The maximum Post ID to be included in the result set. This parameter takes precedence over end_time if both are specified. - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: exclude in: query type: array description: The set of entities to exclude (e.g. 'replies' or 'retweets'). - name: start_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Posts will be provided. The since_id parameter takes precedence if it is also specified. - name: end_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided. The until_id parameter takes precedence if it is also specified. - name: 2-users-id-tweets path: /2/users/{id}/tweets operations: - name: getusersposts method: GET description: X Get Posts outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The ID of the User to lookup. required: true - name: since_id in: query type: string description: The minimum Post ID to be included in the result set. This parameter takes precedence over start_time if both are specified. - name: until_id in: query type: string description: The maximum Post ID to be included in the result set. This parameter takes precedence over end_time if both are specified. - name: max_results in: query type: integer description: The maximum number of results. - name: pagination_token in: query type: string description: This parameter is used to get the next 'page' of results. - name: exclude in: query type: array description: The set of entities to exclude (e.g. 'replies' or 'retweets'). - name: start_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Posts will be provided. The since_id parameter takes precedence if it is also specified. - name: end_time in: query type: string description: YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided. The until_id parameter takes precedence if it is also specified. - name: 2-users-source_user_id-following-target_user_id path: /2/users/{source_user_id}/following/{target_user_id} operations: - name: unfollowuser method: DELETE description: X Unfollow User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source_user_id in: path type: string description: The ID of the authenticated source User that is requesting to unfollow the target User. required: true - name: target_user_id in: path type: string description: The ID of the User that the source User is requesting to unfollow. required: true - name: 2-users-source_user_id-muting-target_user_id path: /2/users/{source_user_id}/muting/{target_user_id} operations: - name: unmuteuser method: DELETE description: X Unmute User outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: source_user_id in: path type: string description: The ID of the authenticated source User that is requesting to unmute the target User. required: true - name: target_user_id in: path type: string description: The ID of the User that the source User is requesting to unmute. required: true authentication: type: bearer token: '{{env.TWITTER_API_KEY}}' exposes: - type: rest namespace: x-users-rest port: 8080 description: REST adapter for X API v2 — Users. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/2/lists/{id}/followers name: 2-lists-id-followers description: REST surface for 2-lists-id-followers. operations: - method: GET name: getlistsfollowers description: X Get List Followers call: x-users.getlistsfollowers with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/lists/{id}/members name: 2-lists-id-members description: REST surface for 2-lists-id-members. operations: - method: GET name: getlistsmembers description: X Get List Members call: x-users.getlistsmembers with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/tweets/{id}/liking-users name: 2-tweets-id-liking-users description: REST surface for 2-tweets-id-liking_users. operations: - method: GET name: getpostslikingusers description: X Get Liking Users call: x-users.getpostslikingusers with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/tweets/{id}/retweeted-by name: 2-tweets-id-retweeted-by description: REST surface for 2-tweets-id-retweeted_by. operations: - method: GET name: getpostsrepostedby description: X Get Reposted by call: x-users.getpostsrepostedby with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users name: 2-users description: REST surface for 2-users. operations: - method: GET name: getusersbyids description: X Get Users by IDs call: x-users.getusersbyids with: ids: rest.ids outputParameters: - type: object mapping: $. - path: /v1/2/users/by name: 2-users-by description: REST surface for 2-users-by. operations: - method: GET name: getusersbyusernames description: X Get Users by Usernames call: x-users.getusersbyusernames with: usernames: rest.usernames outputParameters: - type: object mapping: $. - path: /v1/2/users/by/username/{username} name: 2-users-by-username-username description: REST surface for 2-users-by-username-username. operations: - method: GET name: getusersbyusername description: X Get User by Username call: x-users.getusersbyusername with: username: rest.username outputParameters: - type: object mapping: $. - path: /v1/2/users/me name: 2-users-me description: REST surface for 2-users-me. operations: - method: GET name: getusersme description: X Get My User call: x-users.getusersme outputParameters: - type: object mapping: $. - path: /v1/2/users/public-keys name: 2-users-public-keys description: REST surface for 2-users-public_keys. operations: - method: GET name: getuserspublickeys description: X Get Public Keys for Multiple Users call: x-users.getuserspublickeys with: ids: rest.ids outputParameters: - type: object mapping: $. - path: /v1/2/users/reposts-of-me name: 2-users-reposts-of-me description: REST surface for 2-users-reposts_of_me. operations: - method: GET name: getusersrepostsofme description: X Get Reposts of Me call: x-users.getusersrepostsofme with: max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/search name: 2-users-search description: REST surface for 2-users-search. operations: - method: GET name: searchusers description: X Search Users call: x-users.searchusers with: query: rest.query max_results: rest.max_results next_token: rest.next_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id} name: 2-users-id description: REST surface for 2-users-id. operations: - method: GET name: getusersbyid description: X Get User by ID call: x-users.getusersbyid with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/affiliates name: 2-users-id-affiliates description: REST surface for 2-users-id-affiliates. operations: - method: GET name: getusersaffiliates description: X Get Affiliates call: x-users.getusersaffiliates with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/blocking name: 2-users-id-blocking description: REST surface for 2-users-id-blocking. operations: - method: GET name: getusersblocking description: X Get Blocking call: x-users.getusersblocking with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/bookmarks name: 2-users-id-bookmarks description: REST surface for 2-users-id-bookmarks. operations: - method: GET name: getusersbookmarks description: X Get Bookmarks call: x-users.getusersbookmarks with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - method: POST name: createusersbookmark description: X Create Bookmark call: x-users.createusersbookmark with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/bookmarks/folders name: 2-users-id-bookmarks-folders description: REST surface for 2-users-id-bookmarks-folders. operations: - method: GET name: getusersbookmarkfolders description: X Get Bookmark Folders call: x-users.getusersbookmarkfolders with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/bookmarks/folders/{folder-id} name: 2-users-id-bookmarks-folders-folder-id description: REST surface for 2-users-id-bookmarks-folders-folder_id. operations: - method: GET name: getusersbookmarksbyfolderid description: X Get Bookmarks by Folder ID call: x-users.getusersbookmarksbyfolderid with: id: rest.id folder_id: rest.folder_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/bookmarks/{tweet-id} name: 2-users-id-bookmarks-tweet-id description: REST surface for 2-users-id-bookmarks-tweet_id. operations: - method: DELETE name: deleteusersbookmark description: X Delete Bookmark call: x-users.deleteusersbookmark with: id: rest.id tweet_id: rest.tweet_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/dm/block name: 2-users-id-dm-block description: REST surface for 2-users-id-dm-block. operations: - method: POST name: blockusersdms description: X Block DMs call: x-users.blockusersdms with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/dm/unblock name: 2-users-id-dm-unblock description: REST surface for 2-users-id-dm-unblock. operations: - method: POST name: unblockusersdms description: X Unblock DMs call: x-users.unblockusersdms with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/followed-lists name: 2-users-id-followed-lists description: REST surface for 2-users-id-followed_lists. operations: - method: GET name: getusersfollowedlists description: X Get Followed Lists call: x-users.getusersfollowedlists with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - method: POST name: followlist description: X Follow List call: x-users.followlist with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/followed-lists/{list-id} name: 2-users-id-followed-lists-list-id description: REST surface for 2-users-id-followed_lists-list_id. operations: - method: DELETE name: unfollowlist description: X Unfollow List call: x-users.unfollowlist with: id: rest.id list_id: rest.list_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/followers name: 2-users-id-followers description: REST surface for 2-users-id-followers. operations: - method: GET name: getusersfollowers description: X Get Followers call: x-users.getusersfollowers with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/following name: 2-users-id-following description: REST surface for 2-users-id-following. operations: - method: GET name: getusersfollowing description: X Get Following call: x-users.getusersfollowing with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - method: POST name: followuser description: X Follow User call: x-users.followuser with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/liked-tweets name: 2-users-id-liked-tweets description: REST surface for 2-users-id-liked_tweets. operations: - method: GET name: getuserslikedposts description: X Get Liked Posts call: x-users.getuserslikedposts with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/likes name: 2-users-id-likes description: REST surface for 2-users-id-likes. operations: - method: POST name: likepost description: X Like Post call: x-users.likepost with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/likes/{tweet-id} name: 2-users-id-likes-tweet-id description: REST surface for 2-users-id-likes-tweet_id. operations: - method: DELETE name: unlikepost description: X Unlike Post call: x-users.unlikepost with: id: rest.id tweet_id: rest.tweet_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/list-memberships name: 2-users-id-list-memberships description: REST surface for 2-users-id-list_memberships. operations: - method: GET name: getuserslistmemberships description: X Get List Memberships call: x-users.getuserslistmemberships with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/mentions name: 2-users-id-mentions description: REST surface for 2-users-id-mentions. operations: - method: GET name: getusersmentions description: X Get Mentions call: x-users.getusersmentions with: id: rest.id since_id: rest.since_id until_id: rest.until_id max_results: rest.max_results pagination_token: rest.pagination_token start_time: rest.start_time end_time: rest.end_time outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/muting name: 2-users-id-muting description: REST surface for 2-users-id-muting. operations: - method: GET name: getusersmuting description: X Get Muting call: x-users.getusersmuting with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - method: POST name: muteuser description: X Mute User call: x-users.muteuser with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/owned-lists name: 2-users-id-owned-lists description: REST surface for 2-users-id-owned_lists. operations: - method: GET name: getusersownedlists description: X Get Owned Lists call: x-users.getusersownedlists with: id: rest.id max_results: rest.max_results pagination_token: rest.pagination_token outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/pinned-lists name: 2-users-id-pinned-lists description: REST surface for 2-users-id-pinned_lists. operations: - method: GET name: getuserspinnedlists description: X Get Pinned Lists call: x-users.getuserspinnedlists with: id: rest.id outputParameters: - type: object mapping: $. - method: POST name: pinlist description: X Pin List call: x-users.pinlist with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/pinned-lists/{list-id} name: 2-users-id-pinned-lists-list-id description: REST surface for 2-users-id-pinned_lists-list_id. operations: - method: DELETE name: unpinlist description: X Unpin List call: x-users.unpinlist with: id: rest.id list_id: rest.list_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/public-keys name: 2-users-id-public-keys description: REST surface for 2-users-id-public_keys. operations: - method: GET name: getuserspublickey description: X Get User Public Keys call: x-users.getuserspublickey with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/retweets name: 2-users-id-retweets description: REST surface for 2-users-id-retweets. operations: - method: POST name: repostpost description: X Repost Post call: x-users.repostpost with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/retweets/{source-tweet-id} name: 2-users-id-retweets-source-tweet-id description: REST surface for 2-users-id-retweets-source_tweet_id. operations: - method: DELETE name: unrepostpost description: X Unrepost Post call: x-users.unrepostpost with: id: rest.id source_tweet_id: rest.source_tweet_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/timelines/reverse-chronological name: 2-users-id-timelines-reverse-chronological description: REST surface for 2-users-id-timelines-reverse_chronological. operations: - method: GET name: getuserstimeline description: X Get Timeline call: x-users.getuserstimeline with: id: rest.id since_id: rest.since_id until_id: rest.until_id max_results: rest.max_results pagination_token: rest.pagination_token exclude: rest.exclude start_time: rest.start_time end_time: rest.end_time outputParameters: - type: object mapping: $. - path: /v1/2/users/{id}/tweets name: 2-users-id-tweets description: REST surface for 2-users-id-tweets. operations: - method: GET name: getusersposts description: X Get Posts call: x-users.getusersposts with: id: rest.id since_id: rest.since_id until_id: rest.until_id max_results: rest.max_results pagination_token: rest.pagination_token exclude: rest.exclude start_time: rest.start_time end_time: rest.end_time outputParameters: - type: object mapping: $. - path: /v1/2/users/{source-user-id}/following/{target-user-id} name: 2-users-source-user-id-following-target-user-id description: REST surface for 2-users-source_user_id-following-target_user_id. operations: - method: DELETE name: unfollowuser description: X Unfollow User call: x-users.unfollowuser with: source_user_id: rest.source_user_id target_user_id: rest.target_user_id outputParameters: - type: object mapping: $. - path: /v1/2/users/{source-user-id}/muting/{target-user-id} name: 2-users-source-user-id-muting-target-user-id description: REST surface for 2-users-source_user_id-muting-target_user_id. operations: - method: DELETE name: unmuteuser description: X Unmute User call: x-users.unmuteuser with: source_user_id: rest.source_user_id target_user_id: rest.target_user_id outputParameters: - type: object mapping: $. - type: mcp namespace: x-users-mcp port: 9090 transport: http description: MCP adapter for X API v2 — Users. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: x-get-list-followers description: X Get List Followers hints: readOnly: true destructive: false idempotent: true call: x-users.getlistsfollowers with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-list-members description: X Get List Members hints: readOnly: true destructive: false idempotent: true call: x-users.getlistsmembers with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-liking-users description: X Get Liking Users hints: readOnly: true destructive: false idempotent: true call: x-users.getpostslikingusers with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-reposted description: X Get Reposted by hints: readOnly: true destructive: false idempotent: true call: x-users.getpostsrepostedby with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-users-ids description: X Get Users by IDs hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbyids with: ids: tools.ids outputParameters: - type: object mapping: $. - name: x-get-users-usernames description: X Get Users by Usernames hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbyusernames with: usernames: tools.usernames outputParameters: - type: object mapping: $. - name: x-get-user-username description: X Get User by Username hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbyusername with: username: tools.username outputParameters: - type: object mapping: $. - name: x-get-my-user description: X Get My User hints: readOnly: true destructive: false idempotent: true call: x-users.getusersme outputParameters: - type: object mapping: $. - name: x-get-public-keys-multiple description: X Get Public Keys for Multiple Users hints: readOnly: true destructive: false idempotent: true call: x-users.getuserspublickeys with: ids: tools.ids outputParameters: - type: object mapping: $. - name: x-get-reposts-me description: X Get Reposts of Me hints: readOnly: true destructive: false idempotent: true call: x-users.getusersrepostsofme with: max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-search-users description: X Search Users hints: readOnly: true destructive: false idempotent: true call: x-users.searchusers with: query: tools.query max_results: tools.max_results next_token: tools.next_token outputParameters: - type: object mapping: $. - name: x-get-user-id description: X Get User by ID hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbyid with: id: tools.id outputParameters: - type: object mapping: $. - name: x-get-affiliates description: X Get Affiliates hints: readOnly: true destructive: false idempotent: true call: x-users.getusersaffiliates with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-blocking description: X Get Blocking hints: readOnly: true destructive: false idempotent: true call: x-users.getusersblocking with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-bookmarks description: X Get Bookmarks hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbookmarks with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-create-bookmark description: X Create Bookmark hints: readOnly: false destructive: false idempotent: false call: x-users.createusersbookmark with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-get-bookmark-folders description: X Get Bookmark Folders hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbookmarkfolders with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-bookmarks-folder-id description: X Get Bookmarks by Folder ID hints: readOnly: true destructive: false idempotent: true call: x-users.getusersbookmarksbyfolderid with: id: tools.id folder_id: tools.folder_id outputParameters: - type: object mapping: $. - name: x-delete-bookmark description: X Delete Bookmark hints: readOnly: false destructive: true idempotent: true call: x-users.deleteusersbookmark with: id: tools.id tweet_id: tools.tweet_id outputParameters: - type: object mapping: $. - name: x-block-dms description: X Block DMs hints: readOnly: false destructive: false idempotent: false call: x-users.blockusersdms with: id: tools.id outputParameters: - type: object mapping: $. - name: x-unblock-dms description: X Unblock DMs hints: readOnly: false destructive: false idempotent: false call: x-users.unblockusersdms with: id: tools.id outputParameters: - type: object mapping: $. - name: x-get-followed-lists description: X Get Followed Lists hints: readOnly: true destructive: false idempotent: true call: x-users.getusersfollowedlists with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-follow-list description: X Follow List hints: readOnly: false destructive: false idempotent: false call: x-users.followlist with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-unfollow-list description: X Unfollow List hints: readOnly: false destructive: true idempotent: true call: x-users.unfollowlist with: id: tools.id list_id: tools.list_id outputParameters: - type: object mapping: $. - name: x-get-followers description: X Get Followers hints: readOnly: true destructive: false idempotent: true call: x-users.getusersfollowers with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-following description: X Get Following hints: readOnly: true destructive: false idempotent: true call: x-users.getusersfollowing with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-follow-user description: X Follow User hints: readOnly: false destructive: false idempotent: false call: x-users.followuser with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-get-liked-posts description: X Get Liked Posts hints: readOnly: true destructive: false idempotent: true call: x-users.getuserslikedposts with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-like-post description: X Like Post hints: readOnly: false destructive: false idempotent: false call: x-users.likepost with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-unlike-post description: X Unlike Post hints: readOnly: false destructive: true idempotent: true call: x-users.unlikepost with: id: tools.id tweet_id: tools.tweet_id outputParameters: - type: object mapping: $. - name: x-get-list-memberships description: X Get List Memberships hints: readOnly: true destructive: false idempotent: true call: x-users.getuserslistmemberships with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-mentions description: X Get Mentions hints: readOnly: true destructive: false idempotent: true call: x-users.getusersmentions with: id: tools.id since_id: tools.since_id until_id: tools.until_id max_results: tools.max_results pagination_token: tools.pagination_token start_time: tools.start_time end_time: tools.end_time outputParameters: - type: object mapping: $. - name: x-get-muting description: X Get Muting hints: readOnly: true destructive: false idempotent: true call: x-users.getusersmuting with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-mute-user description: X Mute User hints: readOnly: false destructive: false idempotent: false call: x-users.muteuser with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-get-owned-lists description: X Get Owned Lists hints: readOnly: true destructive: false idempotent: true call: x-users.getusersownedlists with: id: tools.id max_results: tools.max_results pagination_token: tools.pagination_token outputParameters: - type: object mapping: $. - name: x-get-pinned-lists description: X Get Pinned Lists hints: readOnly: true destructive: false idempotent: true call: x-users.getuserspinnedlists with: id: tools.id outputParameters: - type: object mapping: $. - name: x-pin-list description: X Pin List hints: readOnly: false destructive: false idempotent: false call: x-users.pinlist with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-unpin-list description: X Unpin List hints: readOnly: false destructive: true idempotent: true call: x-users.unpinlist with: id: tools.id list_id: tools.list_id outputParameters: - type: object mapping: $. - name: x-get-user-public-keys description: X Get User Public Keys hints: readOnly: true destructive: false idempotent: true call: x-users.getuserspublickey with: id: tools.id outputParameters: - type: object mapping: $. - name: x-repost-post description: X Repost Post hints: readOnly: false destructive: false idempotent: false call: x-users.repostpost with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: x-unrepost-post description: X Unrepost Post hints: readOnly: false destructive: true idempotent: true call: x-users.unrepostpost with: id: tools.id source_tweet_id: tools.source_tweet_id outputParameters: - type: object mapping: $. - name: x-get-timeline description: X Get Timeline hints: readOnly: true destructive: false idempotent: true call: x-users.getuserstimeline with: id: tools.id since_id: tools.since_id until_id: tools.until_id max_results: tools.max_results pagination_token: tools.pagination_token exclude: tools.exclude start_time: tools.start_time end_time: tools.end_time outputParameters: - type: object mapping: $. - name: x-get-posts description: X Get Posts hints: readOnly: true destructive: false idempotent: true call: x-users.getusersposts with: id: tools.id since_id: tools.since_id until_id: tools.until_id max_results: tools.max_results pagination_token: tools.pagination_token exclude: tools.exclude start_time: tools.start_time end_time: tools.end_time outputParameters: - type: object mapping: $. - name: x-unfollow-user description: X Unfollow User hints: readOnly: false destructive: true idempotent: true call: x-users.unfollowuser with: source_user_id: tools.source_user_id target_user_id: tools.target_user_id outputParameters: - type: object mapping: $. - name: x-unmute-user description: X Unmute User hints: readOnly: false destructive: true idempotent: true call: x-users.unmuteuser with: source_user_id: tools.source_user_id target_user_id: tools.target_user_id outputParameters: - type: object mapping: $.