x-developer 2.4.12 → 2.4.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.codex-plugin/plugin.json +48 -0
  2. package/README.md +33 -78
  3. package/openclaw.plugin.json +2 -2
  4. package/package.json +5 -5
  5. package/skills/x-twitter-scraper/SKILL.md +51 -32
  6. package/skills/x-twitter-scraper/metadata.json +3 -5
  7. package/skills/x-twitter-scraper/references/api-endpoints.md +121 -143
  8. package/skills/x-twitter-scraper/references/mcp-setup.md +8 -34
  9. package/skills/x-twitter-scraper/references/mcp-tools.md +16 -11
  10. package/skills/x-twitter-scraper/references/pricing.md +23 -100
  11. package/skills/x-twitter-scraper/references/python-examples.md +52 -35
  12. package/skills/x-twitter-scraper/references/security.md +22 -11
  13. package/skills/x-twitter-scraper/references/types.md +24 -57
  14. package/skills/x-twitter-scraper/references/webhooks.md +59 -38
  15. package/skills/x-twitter-scraper/references/workflows.md +2 -3
  16. package/skills/check-mutuals/SKILL.md +0 -53
  17. package/skills/clean-followers/SKILL.md +0 -69
  18. package/skills/export-tweets-csv/SKILL.md +0 -68
  19. package/skills/extract-followers/SKILL.md +0 -81
  20. package/skills/find-bangers/SKILL.md +0 -59
  21. package/skills/find-influencers/SKILL.md +0 -70
  22. package/skills/find-viral-tweets/SKILL.md +0 -78
  23. package/skills/follow-unfollow/SKILL.md +0 -81
  24. package/skills/for-you-feed/SKILL.md +0 -61
  25. package/skills/going-viral/SKILL.md +0 -66
  26. package/skills/grow-followers/SKILL.md +0 -64
  27. package/skills/monitor-accounts/SKILL.md +0 -79
  28. package/skills/optimize-tweets/SKILL.md +0 -75
  29. package/skills/post-tweets/SKILL.md +0 -106
  30. package/skills/run-giveaway/SKILL.md +0 -90
  31. package/skills/search-tweets/SKILL.md +0 -120
  32. package/skills/send-dms/SKILL.md +0 -90
  33. package/skills/top-replies/SKILL.md +0 -69
  34. package/skills/track-competitors/SKILL.md +0 -70
  35. package/skills/track-hashtags/SKILL.md +0 -84
  36. package/skills/track-mentions/SKILL.md +0 -86
  37. package/skills/trending-news/SKILL.md +0 -66
  38. package/skills/tweet-analytics/SKILL.md +0 -132
  39. package/skills/tweet-ideas/SKILL.md +0 -62
  40. package/skills/tweet-replies/SKILL.md +0 -80
  41. package/skills/tweet-style/SKILL.md +0 -71
  42. package/skills/tweet-webhooks/SKILL.md +0 -82
  43. package/skills/update-x-profile/SKILL.md +0 -73
  44. package/skills/user-tweets/SKILL.md +0 -126
  45. package/skills/who-liked/SKILL.md +0 -66
  46. package/skills/who-quoted/SKILL.md +0 -66
  47. package/skills/who-retweeted/SKILL.md +0 -65
  48. package/skills/write-threads/SKILL.md +0 -71
  49. package/skills/write-tweets/SKILL.md +0 -77
  50. package/skills/x-articles/SKILL.md +0 -82
  51. package/skills/x-bookmarks/SKILL.md +0 -61
  52. package/skills/x-communities/SKILL.md +0 -69
  53. package/skills/x-lists/SKILL.md +0 -68
  54. package/skills/x-spaces/SKILL.md +0 -65
  55. package/skills/x-trends/SKILL.md +0 -70
@@ -6,7 +6,6 @@ All requests require the `x-api-key` header. All responses are JSON. HTTPS only.
6
6
 
7
7
  ## Table of Contents
8
8
 
9
- - [Account](#account)
10
9
  - [API Keys](#api-keys)
11
10
  - [Monitors](#monitors)
12
11
  - [Events](#events)
@@ -20,8 +19,6 @@ All requests require the `x-api-key` header. All responses are JSON. HTTPS only.
20
19
  - [Compose](#compose)
21
20
  - [Drafts](#drafts)
22
21
  - [Tweet Style Cache](#tweet-style-cache)
23
- - [Account Identity](#account-identity)
24
- - [Subscribe](#subscribe)
25
22
  - [X Accounts (Connected)](#x-accounts-connected)
26
23
  - [X Write](#x-write)
27
24
  - [Credits](#credits)
@@ -29,55 +26,6 @@ All requests require the `x-api-key` header. All responses are JSON. HTTPS only.
29
26
 
30
27
  ---
31
28
 
32
- ## Account
33
-
34
- ### Get Account
35
-
36
- ```
37
- GET /account
38
- ```
39
-
40
- Returns account status, monitor billing details, credit balance, and X identity.
41
-
42
- **Response:**
43
- ```json
44
- {
45
- "plan": "active",
46
- "monitorsAllowed": 9007199254740991,
47
- "monitorsUsed": 1,
48
- "monitorBilling": {
49
- "activeDailyEstimate": "500",
50
- "activeHourlyBurn": "21",
51
- "creditsPerActiveMonitorDay": "500",
52
- "creditsPerActiveMonitorHour": "21",
53
- "eventsIncluded": true,
54
- "instantCheckIntervalSeconds": 1,
55
- "unlimitedSlots": true
56
- },
57
- "creditInfo": {
58
- "balance": "77000",
59
- "lifetimePurchased": "140000",
60
- "lifetimeUsed": "63000",
61
- "autoTopupEnabled": false,
62
- "autoTopupAmountDollars": 10,
63
- "autoTopupThreshold": "50000"
64
- },
65
- "xUsername": "elonmusk"
66
- }
67
- ```
68
-
69
- ### Update Account
70
-
71
- ```
72
- PATCH /account
73
- ```
74
-
75
- Update account locale. Session auth only (not API key).
76
-
77
- **Body:** `{ "locale": "en" | "tr" | "es" }`
78
-
79
- ---
80
-
81
29
  ## API Keys
82
30
 
83
31
  Session auth only. These endpoints do not accept API key auth.
@@ -171,6 +119,18 @@ DELETE /monitors/{id}
171
119
 
172
120
  Stops tracking and deletes all associated data.
173
121
 
122
+ ### Keyword Monitors
123
+
124
+ ```
125
+ GET /monitors/keywords
126
+ POST /monitors/keywords
127
+ GET /monitors/keywords/{id}
128
+ PATCH /monitors/keywords/{id}
129
+ DELETE /monitors/keywords/{id}
130
+ ```
131
+
132
+ Create and manage ongoing keyword monitors. Treat these as persistent resources: confirm the keyword query, event delivery plan, and ongoing cost before creating or enabling one.
133
+
174
134
  ---
175
135
 
176
136
  ## Events
@@ -486,10 +446,10 @@ Returns full tweet with engagement metrics (likes, retweets, replies, quotes, vi
486
446
  ### Get Article
487
447
 
488
448
  ```
489
- GET /x/articles/{id}
449
+ GET /x/articles/{tweetId}
490
450
  ```
491
451
 
492
- Retrieve the full content of an X Article (long-form post) by tweet ID. Returns title, body text with block-level formatting, cover image, inline images, and engagement metrics. Metered.
452
+ Retrieve the full content of an X Article (long-form post) by numeric tweet ID. If the user gives an article URL, use the final status ID as `tweetId`. Returns title, body text with block-level formatting, cover image, inline images, and engagement metrics. Metered.
493
453
 
494
454
  **Response:**
495
455
  ```json
@@ -523,10 +483,19 @@ Returns tweet info with optional engagement metrics (likeCount, retweetCount, re
523
483
  ### Get User
524
484
 
525
485
  ```
526
- GET /x/users/{username}
486
+ GET /x/users/{id}
487
+ ```
488
+
489
+ Returns profile info. `id` accepts either an X username without `@` or a numeric user ID. Fields `id`, `username`, `name` are always present. All other fields (`description`, `followers`, `following`, `verified`, `profilePicture`, `location`, `createdAt`, `statusesCount`) are optional and omitted when unavailable.
490
+
491
+ ### Batch & Search Users
492
+
493
+ ```
494
+ GET /x/users/batch?ids=44196397,783214
495
+ GET /x/users/search?q=founder
527
496
  ```
528
497
 
529
- Returns profile info. Fields `id`, `username`, `name` are always present. All other fields (`description`, `followers`, `following`, `verified`, `profilePicture`, `location`, `createdAt`, `statusesCount`) are optional and omitted when unavailable.
498
+ Batch lookup accepts up to 100 comma-separated numeric user IDs. User search returns matching profiles and may include a pagination cursor.
530
499
 
531
500
  ### Check Follower
532
501
 
@@ -544,6 +513,14 @@ GET /x/users/{id}/tweets
544
513
 
545
514
  Get a user's recent tweets by user ID. Metered (1 credit/tweet).
546
515
 
516
+ ### Batch Tweets
517
+
518
+ ```
519
+ GET /x/tweets?ids=1893456789012345678,1893456789012345679
520
+ ```
521
+
522
+ Get multiple tweets by comma-separated tweet IDs. Maximum 100 IDs.
523
+
547
524
  ### Get User Likes
548
525
 
549
526
  ```
@@ -568,6 +545,28 @@ GET /x/tweets/{id}/favoriters
568
545
 
569
546
  Get users who liked a tweet. Metered (1 credit/result).
570
547
 
548
+ ### Tweet Conversation & Engagement Lists
549
+
550
+ ```
551
+ GET /x/tweets/{id}/quotes
552
+ GET /x/tweets/{id}/replies
553
+ GET /x/tweets/{id}/retweeters
554
+ GET /x/tweets/{id}/thread
555
+ ```
556
+
557
+ Read quote tweets, replies, retweeters, or the conversation thread for a tweet. These are paginated read operations.
558
+
559
+ ### User Social Graph Reads
560
+
561
+ ```
562
+ GET /x/users/{id}/followers
563
+ GET /x/users/{id}/following
564
+ GET /x/users/{id}/mentions
565
+ GET /x/users/{id}/verified-followers
566
+ ```
567
+
568
+ Read followers, following, mentions, and verified followers for a username or numeric user ID. These are paginated read operations.
569
+
571
570
  ### Get Mutual Followers
572
571
 
573
572
  ```
@@ -576,6 +575,29 @@ GET /x/users/{id}/followers-you-know
576
575
 
577
576
  Get mutual followers (followers you know). Metered (1 credit/result).
578
577
 
578
+ ### X Lists
579
+
580
+ ```
581
+ GET /x/lists/{id}/followers
582
+ GET /x/lists/{id}/members
583
+ GET /x/lists/{id}/tweets
584
+ ```
585
+
586
+ Read list followers, members, or list timeline tweets by list ID.
587
+
588
+ ### X Communities
589
+
590
+ ```
591
+ GET /x/communities/search
592
+ GET /x/communities/tweets
593
+ GET /x/communities/{id}/info
594
+ GET /x/communities/{id}/members
595
+ GET /x/communities/{id}/moderators
596
+ GET /x/communities/{id}/tweets
597
+ ```
598
+
599
+ Search communities and read community metadata, members, moderators, or tweets. Community writes are listed under X Write and require confirmation.
600
+
579
601
  ### Get Bookmarks
580
602
 
581
603
  ```
@@ -637,7 +659,7 @@ Download images, videos, and GIFs from tweets. Single or bulk (up to 50). Return
637
659
  ```json
638
660
  {
639
661
  "tweetId": "1893456789012345678",
640
- "galleryUrl": "https://xquik.com/gallery/abc123",
662
+ "galleryUrl": "https://xquik.com/g/abc123",
641
663
  "cacheHit": false
642
664
  }
643
665
  ```
@@ -645,13 +667,13 @@ Download images, videos, and GIFs from tweets. Single or bulk (up to 50). Return
645
667
  **Response (bulk):**
646
668
  ```json
647
669
  {
648
- "galleryUrl": "https://xquik.com/gallery/def456",
670
+ "galleryUrl": "https://xquik.com/g/def456",
649
671
  "totalTweets": 3,
650
672
  "totalMedia": 7
651
673
  }
652
674
  ```
653
675
 
654
- First download is metered. Subsequent requests for the same tweet return cached URLs at no cost (`cacheHit: true`). All downloads are saved to the gallery at `https://xquik.com/gallery`.
676
+ First download is metered. Subsequent requests for the same tweet return cached URLs at no cost (`cacheHit: true`). All downloads are saved to shareable gallery pages under `https://xquik.com/g/{token}`.
655
677
 
656
678
  Returns `400 no_media` if the tweet has no downloadable media. Returns `400 too_many_tweets` if bulk array exceeds 50 items.
657
679
 
@@ -662,10 +684,11 @@ Returns `400 no_media` if the tweet has no downloadable media. Returns `400 too_
662
684
  ### List Trends
663
685
 
664
686
  ```
687
+ GET /x/trends?woeid=1&count=30
665
688
  GET /trends?woeid=1&count=30
666
689
  ```
667
690
 
668
- Metered. Subscription required. Cached, refreshes every 15 minutes.
691
+ Metered. Plan access required. `/trends` is an alias of `/x/trends`. Cached, refreshes every 15 minutes.
669
692
 
670
693
  **WOEIDs:** 1 (Worldwide), 23424977 (US), 23424975 (UK), 23424969 (Turkey), 23424950 (Spain), 23424829 (Germany), 23424819 (France), 23424856 (Japan), 23424848 (India), 23424768 (Brazil), 23424775 (Canada), 23424900 (Mexico).
671
694
 
@@ -913,9 +936,9 @@ List all cached tweet style profiles. Max 200 results, ordered by fetch date.
913
936
 
914
937
  ### Save Custom Style
915
938
 
916
- `PUT /styles/{username}`
939
+ `PUT /styles/{id}`
917
940
 
918
- Save a custom style profile from tweet texts. Free, no usage cost. Replaces existing style if one exists with the same label.
941
+ Save a custom style profile from tweet texts. Free, no usage cost. The body `label` controls the saved style label and replaces any existing style with that label.
919
942
 
920
943
  **Body:**
921
944
 
@@ -932,9 +955,9 @@ Save a custom style profile from tweet texts. Free, no usage cost. Replaces exis
932
955
 
933
956
  ### Get Cached Style
934
957
 
935
- `GET /styles/{username}`
958
+ `GET /styles/{id}`
936
959
 
937
- Get a cached style profile with full tweet data.
960
+ Get a cached style profile with full tweet data. `id` is the cached style label or username.
938
961
 
939
962
  **Response (200):** Full style object with `tweets` array.
940
963
 
@@ -944,9 +967,9 @@ Get a cached style profile with full tweet data.
944
967
 
945
968
  ### Delete Cached Style
946
969
 
947
- `DELETE /styles/{username}`
970
+ `DELETE /styles/{id}`
948
971
 
949
- Delete a cached style. Returns `204 No Content`.
972
+ Delete a cached style by label or username. Returns `204 No Content`.
950
973
 
951
974
  **Errors:** `404 style_not_found`
952
975
 
@@ -980,9 +1003,9 @@ Compare two cached tweet style profiles side by side.
980
1003
 
981
1004
  ### Analyze Performance
982
1005
 
983
- `GET /styles/{username}/performance`
1006
+ `GET /styles/{id}/performance`
984
1007
 
985
- Get live engagement metrics for cached tweets. **Consumes API usage credits.**
1008
+ Get live engagement metrics for cached tweets for a cached style label or username. **Consumes API usage credits.**
986
1009
 
987
1010
  **Response (200):**
988
1011
 
@@ -1009,57 +1032,22 @@ Get live engagement metrics for cached tweets. **Consumes API usage credits.**
1009
1032
 
1010
1033
  ---
1011
1034
 
1012
- ## Account Identity
1013
-
1014
- ### Set X Identity
1015
-
1016
- `PUT /account/x-identity`
1017
-
1018
- Link your X username to your Xquik account. Required for own-account detection in style analysis.
1019
-
1020
- **Request body:**
1021
-
1022
- | Field | Type | Required | Description |
1023
- |-------|------|----------|-------------|
1024
- | `username` | string | Yes | Your X username (without @) |
1025
-
1026
- **Response (200):**
1027
-
1028
- ```json
1029
- {
1030
- "success": true,
1031
- "xUsername": "elonmusk"
1032
- }
1033
- ```
1034
-
1035
- **Errors:** `400 invalid_input`
1035
+ ## X Accounts (Connected)
1036
1036
 
1037
- ---
1037
+ Manage connected X accounts for confirmation-gated write actions. All endpoints are free (no usage cost).
1038
1038
 
1039
- ## Subscribe
1039
+ **Connecting or re-authenticating an X account is done by the user in the Xquik dashboard**, not via this skill. The skill never handles X login material. The agent should direct the user to the dashboard account page when a new account needs to be connected or an existing session needs to be refreshed.
1040
1040
 
1041
- ### Get Subscription Link
1041
+ The OpenAPI surface includes dashboard-owned account connection routes:
1042
1042
 
1043
1043
  ```
1044
- POST /subscribe
1045
- ```
1046
-
1047
- Returns a checkout URL for subscribing or managing the subscription. If already subscribed, returns the billing portal URL. Use only after the user confirms the plan or billing action.
1048
-
1049
- **Response:**
1050
- ```json
1051
- {
1052
- "url": "https://checkout.xquik.com/..."
1053
- }
1044
+ POST /x/accounts
1045
+ POST /x/account-connection-challenges/{id}/submit
1046
+ POST /x/accounts/{id}/reauth
1047
+ POST /x/accounts/bulk-retry
1054
1048
  ```
1055
1049
 
1056
- ---
1057
-
1058
- ## X Accounts (Connected)
1059
-
1060
- Manage connected X accounts for confirmation-gated write actions. All endpoints are free (no usage cost).
1061
-
1062
- **Connecting or re-authenticating an X account is done by the user in the Xquik dashboard** at [xquik.com/dashboard/account](https://xquik.com/dashboard/account), not via this skill. The skill never handles X login material. The agent should direct the user to the dashboard when a new account needs to be connected or an existing session needs to be refreshed.
1050
+ Do not call these from this skill. They are listed here only so the skill docs match the public API surface and keep the dashboard-only boundary explicit.
1063
1051
 
1064
1052
  ### List X Accounts
1065
1053
 
@@ -1102,12 +1090,12 @@ POST /x/tweets
1102
1090
  | Field | Type | Required | Description |
1103
1091
  |-------|------|----------|-------------|
1104
1092
  | `account` | string | Yes | Connected X username or account ID |
1105
- | `text` | string | Yes | Tweet text (280 chars, or 25,000 if `is_note_tweet` is true) |
1093
+ | `text` | string | No | Tweet text (280 chars, or 25,000 if `is_note_tweet` is true). Required unless `media` is provided |
1106
1094
  | `reply_to_tweet_id` | string | No | Tweet ID to reply to |
1107
1095
  | `attachment_url` | string | No | URL to attach as a card |
1108
1096
  | `community_id` | string | No | Community ID to post into |
1109
1097
  | `is_note_tweet` | boolean | No | Long-form note tweet (up to 25,000 chars) |
1110
- | `media_ids` | string[] | No | Media IDs from `POST /x/media` (max 4 images or 1 video) |
1098
+ | `media` | string[] | No | Public image URLs to attach (max 4). `POST /x/media` returns `mediaUrl` values for this field |
1111
1099
 
1112
1100
  **Response:** `{ tweetId, success: true }`
1113
1101
 
@@ -1147,6 +1135,14 @@ POST /x/tweets/{id}/retweet
1147
1135
 
1148
1136
  **Body:** `{ "account": "username" }`
1149
1137
 
1138
+ ### Unretweet
1139
+
1140
+ ```
1141
+ DELETE /x/tweets/{id}/retweet
1142
+ ```
1143
+
1144
+ **Body:** `{ "account": "username" }`
1145
+
1150
1146
  ### Follow User
1151
1147
 
1152
1148
  ```
@@ -1238,7 +1234,7 @@ POST /x/media
1238
1234
 
1239
1235
  **Body:** FormData with `account` (required), `file` (required), and `is_long_video` (optional boolean). Alternatively, JSON body with `account` (required) and `url` (required, direct media URL) for URL-based upload.
1240
1236
 
1241
- **Response:** Returns a media ID to pass in `media_ids` when creating a tweet.
1237
+ **Response:** Returns `mediaId`, `mediaUrl`, and `success`. Pass `mediaUrl` in the `media` array when creating a tweet.
1242
1238
 
1243
1239
  ### Create Community
1244
1240
 
@@ -1274,43 +1270,25 @@ DELETE /x/communities/{id}/join
1274
1270
 
1275
1271
  **Body:** `{ "account": "username" }`
1276
1272
 
1277
- ---
1278
-
1279
- ## Credits
1280
-
1281
- ### Get Credit Balance
1282
-
1283
- ```
1284
- GET /credits
1285
- ```
1286
-
1287
- Get credit balance, lifetime purchased/used, and auto top-up status. Free.
1288
-
1289
- ### Top Up Credits
1273
+ ### Get Write Action Status
1290
1274
 
1291
1275
  ```
1292
- POST /credits/topup
1276
+ GET /x/write-actions/{id}
1293
1277
  ```
1294
1278
 
1295
- Get a checkout URL to purchase credits ($10 minimum). Use only after the user confirms the exact amount.
1296
-
1297
- ### Get Top-Up Status
1279
+ Check a pending write action by the ID returned from an earlier write response.
1298
1280
 
1299
- ```
1300
- GET /credits/topup/status
1301
- ```
1281
+ ---
1302
1282
 
1303
- Poll a checkout session after starting a credit top-up. Query: `session_id`. Free.
1283
+ ## Credits
1304
1284
 
1305
- ### Quick Top Up
1285
+ ### Get Credit Balance
1306
1286
 
1307
1287
  ```
1308
- POST /credits/quick-topup
1288
+ GET /credits
1309
1289
  ```
1310
1290
 
1311
- Charge a saved payment method for credits after the user confirms the exact amount. Body: `{ "dollars": 10 }` ($10 minimum, $500 maximum). Free endpoint, but it can initiate a confirmed card charge.
1312
-
1313
- Responses include `{ "outcome": "charged", "credits": "...", "balance": "..." }`, `{ "outcome": "no_payment_method" }`, or `{ "outcome": "requires_action", "clientSecret": "..." }`.
1291
+ Get credit balance and lifetime usage fields. Free. Plan and credit changes are dashboard-only and intentionally omitted from this installable skill.
1314
1292
 
1315
1293
  ---
1316
1294
 
@@ -1381,8 +1359,8 @@ Add a message to an existing ticket.
1381
1359
  | 400 | `webhook_inactive` | Webhook is disabled (test-webhook only) |
1382
1360
  | 401 | `unauthenticated` | Missing or invalid API key |
1383
1361
  | 403 | `account_needs_reauth` | X account session expired; use dashboard re-auth flow |
1384
- | 402 | `no_subscription` | No active subscription |
1385
- | 402 | `subscription_inactive` | Subscription is not active |
1362
+ | 402 | `no_subscription` | No active plan |
1363
+ | 402 | `subscription_inactive` | Plan is not active |
1386
1364
  | 402 | `no_credits` | No credit balance record exists |
1387
1365
  | 402 | `insufficient_credits` | Credit balance is too low |
1388
1366
  | 403 | `api_key_limit_reached` | API key limit reached (100 max) |
@@ -8,7 +8,9 @@ Connect AI agents and IDEs to Xquik via the Model Context Protocol. The MCP serv
8
8
  | Endpoint | `https://xquik.com/mcp` |
9
9
  | Auth header | `x-api-key` |
10
10
 
11
- > **Security:** Use a scoped, revocable API key - not your primary account key. Where your platform supports environment variable interpolation (e.g., `${XQUIK_API_KEY}`), prefer that over hardcoding. Rotate keys periodically from the [dashboard](https://dashboard.xquik.com/account). Never commit API keys to version control.
11
+ > **Security:** Use a scoped, revocable API key - not your primary account key. Where your platform supports environment variable interpolation (e.g., `${XQUIK_API_KEY}`), prefer that over hardcoding. Rotate keys periodically from the Xquik dashboard account page. Never commit API keys to version control.
12
+
13
+ Use native HTTP MCP clients or OAuth connectors only. Do not proxy Xquik API keys through third-party local bridge packages, local proxy commands, or command-line adapters.
12
14
 
13
15
  ## Claude.ai (Web)
14
16
 
@@ -16,36 +18,9 @@ Claude.ai supports MCP connectors natively via OAuth. Add Xquik as a connector f
16
18
 
17
19
  ## Claude Desktop
18
20
 
19
- Claude Desktop only supports stdio transport, so it needs a local stdio-to-HTTP bridge. The recommended setup avoids runtime package fetches: **install the bridge globally first, then invoke the pinned binary directly.**
20
-
21
- > **About `mcp-remote`:** [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) is an open-source stdio-to-HTTP bridge (MIT license, [source on GitHub](https://github.com/geelen/mcp-remote)) maintained by the MCP ecosystem. It translates stdio to StreamableHTTP - it does not run user code, access your filesystem, or modify your system. Always pin the version (`@0.1.38`) and audit the package on npm before installing.
22
-
23
- ### Step 1: Install the bridge globally (one-time, audited)
24
-
25
- ```bash
26
- npm install -g mcp-remote@0.1.38
27
- ```
28
-
29
- ### Step 2: Add to `claude_desktop_config.json`
30
-
31
- ```json
32
- {
33
- "mcpServers": {
34
- "xquik": {
35
- "command": "mcp-remote",
36
- "args": [
37
- "https://xquik.com/mcp",
38
- "--header",
39
- "x-api-key:${XQUIK_API_KEY}"
40
- ]
41
- }
42
- }
43
- }
44
- ```
45
-
46
- > Set the `XQUIK_API_KEY` environment variable before launching Claude Desktop, or replace `${XQUIK_API_KEY}` with your actual API key.
21
+ Claude.ai (web) is the recommended Claude client because it supports Xquik via OAuth in the hosted UI. Avoid local bridge setups that pass API keys in command-line arguments; local process listings can expose argv values.
47
22
 
48
- > **Prefer a hosted option?** Claude.ai (web) supports Xquik natively via OAuth - see the section above. No local bridge required.
23
+ For desktop workflows, use Claude Code, Cursor, VS Code, Windsurf, OpenCode, or another HTTP MCP client that stores headers in a config file or secure settings store.
49
24
 
50
25
  ## Claude Code
51
26
 
@@ -182,7 +157,7 @@ The MCP server (v2) at `https://xquik.com/mcp` provides 2 structured API tools:
182
157
  | `explore` | Search the API endpoint catalog (read-only, no network calls) | Free |
183
158
  | `xquik` | Send confirmed Xquik API requests | Varies by endpoint |
184
159
 
185
- The agent sends structured API requests through the MCP server, which handles authentication and request routing within the same first-party infrastructure as the REST API. All 100+ REST API endpoints across 10 categories are accessible. Private reads, writes, persistent resources, and billing flows require explicit user confirmation before use.
160
+ The agent sends structured API requests through the MCP server, which handles authentication and request routing within the same first-party infrastructure as the REST API. All 100+ REST API endpoints across 10 categories are accessible. Private reads, writes, and persistent resources require explicit user confirmation before use. Plan and credit changes are dashboard-only.
186
161
 
187
162
  ## After Setup
188
163
 
@@ -191,10 +166,9 @@ The agent sends structured API requests through the MCP server, which handles au
191
166
  | Workflow | Steps (via `xquik` tool) |
192
167
  |----------|--------------------------|
193
168
  | Set up real-time alerts | Confirm target, event types, destination, and ongoing cost -> `POST /monitors` -> `POST /webhooks` -> `POST /webhooks/{id}/test` |
194
- | Run a giveaway | `GET /account` -> `POST /draws` |
169
+ | Run a giveaway | Confirm tweet URL and rules -> `POST /draws` |
195
170
  | Bulk extraction | `POST /extractions/estimate` -> `POST /extractions` -> `GET /extractions/{id}` |
196
171
  | Compose optimized tweet | `POST /compose` (step=compose -> refine -> score) |
197
- | Billing checkout | Confirm plan or amount -> `POST /subscribe` or `POST /credits/topup` |
198
172
 
199
173
  ### Example Prompts
200
174
 
@@ -211,4 +185,4 @@ Try these with your AI agent:
211
185
  - "What's trending on Hacker News today?"
212
186
  - "Help me write a tweet about launching my product"
213
187
  - "Set up a webhook at https://my-server.com/events for new tweets after I confirm the destination"
214
- - "What plan am I on and how much have I used?"
188
+ - "What is my current credit balance?"
@@ -54,7 +54,7 @@ Apply these gates before using `xquik`:
54
54
  | Direct messages | Show sender, recipient, and message text. Never send bulk or automatic DMs. |
55
55
  | Persistent resources | Create monitors and webhooks only when the user explicitly asks for ongoing delivery. Show target, event types, URL, and ongoing cost before creation. |
56
56
  | Private reads | Confirm before fetching DMs, bookmarks, notifications, or home timeline. Do not forward returned private data to other tools without consent. |
57
- | Billing or payments | Do not call checkout, top-up, or MPP payment endpoints unless the user explicitly asks and confirms the exact amount. |
57
+ | Plan and credit changes | Dashboard-only. The agent may read credit balance, but must not start account changes. |
58
58
  | X account login | Never ask for or submit X login material. Account connection and re-authentication happen in the dashboard. |
59
59
 
60
60
  ```typescript
@@ -75,26 +75,27 @@ Use `explore` first to find endpoints, then `xquik` to call them.
75
75
  | Goal | Endpoint (via `xquik`) |
76
76
  |------|------------------------|
77
77
  | Single tweet by ID or URL | `GET /api/v1/x/tweets/{id}` |
78
- | Full X Article by tweet ID | `GET /api/v1/x/articles/{id}` |
78
+ | Full X Article by tweet ID | `GET /api/v1/x/articles/{tweetId}` |
79
79
  | Search tweets by keyword/hashtag | `GET /api/v1/x/tweets/search?q=...` |
80
- | User profile, bio, follower counts | `GET /api/v1/x/users/{username}` |
80
+ | User profile, bio, follower counts | `GET /api/v1/x/users/{id}` (`id` can be username or numeric ID) |
81
81
  | Download media from tweets | `POST /api/v1/x/media/download` |
82
82
  | Check follow relationship | `GET /api/v1/x/followers/check?source=A&target=B` |
83
83
  | Trending topics by region (X) | `GET /api/v1/trends?woeid=1` |
84
84
  | Trending news from 7 sources | `GET /api/v1/radar` (via `xquik` tool) |
85
85
  | Activity from monitored accounts | `GET /api/v1/events` |
86
- | Credit balance, plan, monitor billing | `GET /api/v1/account` |
86
+ | Credit balance | `GET /api/v1/credits` |
87
87
  | Monitor an X account | `POST /api/v1/monitors` (persistent; confirmation required) |
88
88
  | Set up webhook notifications | `POST /api/v1/webhooks` (persistent; confirmation required) |
89
89
  | Run a giveaway draw | `POST /api/v1/draws` |
90
90
  | Compose/draft a tweet | `POST /api/v1/compose` (3-step: compose, refine, score) |
91
- | Link your X username | `PUT /api/v1/account/x-identity` |
91
+ | Link your X username | Use the Xquik dashboard account settings |
92
92
  | Analyze tweet style | `POST /api/v1/styles` |
93
- | Get cached style | `GET /api/v1/styles/{username}` |
93
+ | Get cached style | `GET /api/v1/styles/{id}` |
94
94
  | Compare two styles | `GET /api/v1/styles/compare` |
95
95
  | Post a tweet | `POST /api/v1/x/tweets` (confirmation required) |
96
96
  | Like/unlike a tweet | `POST`/`DELETE /api/v1/x/tweets/{id}/like` (confirmation required) |
97
97
  | Retweet | `POST /api/v1/x/tweets/{id}/retweet` (confirmation required) |
98
+ | Unretweet | `DELETE /api/v1/x/tweets/{id}/retweet` (confirmation required) |
98
99
  | Follow/unfollow | `POST`/`DELETE /api/v1/x/users/{id}/follow` (confirmation required) |
99
100
  | Send a DM | `POST /api/v1/x/dm/{userId}` (confirmation required) |
100
101
  | Upload media | `POST /api/v1/x/media` (confirmation required before use in a post or profile change) |
@@ -105,6 +106,10 @@ Use `explore` first to find endpoints, then `xquik` to call them.
105
106
  | Get user's media tweets | `GET /api/v1/x/users/{id}/media` |
106
107
  | Get tweet favoriters (who liked) | `GET /api/v1/x/tweets/{id}/favoriters` |
107
108
  | Get mutual followers | `GET /api/v1/x/users/{id}/followers-you-know` |
109
+ | Get followers/following | `GET /api/v1/x/users/{id}/followers` / `GET /api/v1/x/users/{id}/following` |
110
+ | Get tweet quotes/replies/retweeters/thread | `GET /api/v1/x/tweets/{id}/quotes`, `/replies`, `/retweeters`, `/thread` |
111
+ | Read X Lists | `GET /api/v1/x/lists/{id}/members`, `/followers`, `/tweets` |
112
+ | Read X Communities | `GET /api/v1/x/communities/search`, `/tweets`, `/{id}/info`, `/{id}/members`, `/{id}/moderators`, `/{id}/tweets` |
108
113
  | Get bookmarks | `GET /api/v1/x/bookmarks` (private; confirmation required) |
109
114
  | Get bookmark folders | `GET /api/v1/x/bookmarks/folders` |
110
115
  | Get notifications | `GET /api/v1/x/notifications` (private; confirmation required) |
@@ -119,10 +124,10 @@ Use `POST /api/v1/extractions` ONLY for bulk data that simpler endpoints cannot
119
124
  | Workflow | Steps |
120
125
  |----------|-------|
121
126
  | **Set up real-time alerts** | Confirm target, event types, destination, and cost -> `POST /monitors` -> `POST /webhooks` -> `POST /webhooks/{id}/test` |
122
- | **Run a giveaway** | `GET /account` -> `POST /draws` |
127
+ | **Run a giveaway** | Confirm tweet URL and rules -> `POST /draws` |
123
128
  | **Bulk extraction** | `POST /extractions/estimate` -> `POST /extractions` -> `GET /extractions/{id}` |
124
129
  | **Compose optimized tweet** | `POST /compose` (step=compose -> refine -> score) |
125
- | **Analyze tweet style** | `POST /styles` -> `GET /styles/{username}` -> `POST /compose` with `styleUsername` |
130
+ | **Analyze tweet style** | `POST /styles` -> `GET /styles/{id}` -> `POST /compose` with `styleUsername` |
126
131
  | **Post a tweet** | `GET /x/accounts` -> `POST /x/tweets` with `account` + `text` |
127
132
  | **Get trending news** | `GET /radar` (free, all 7 sources, via `xquik` tool) -> `POST /compose` with trending topic |
128
133
  | **Open support ticket** | `POST /support/tickets` -> `GET /support/tickets/{id}` |
@@ -135,10 +140,10 @@ Use `POST /api/v1/extractions` ONLY for bulk data that simpler endpoints cannot
135
140
  | Using `compose` when user wants to send a tweet | `POST /compose` is for drafting. Use `POST /x/tweets` to send |
136
141
  | Using `POST /x/tweets` when user wants help writing | Use the 3-step compose flow instead |
137
142
  | Falling back to web search when API call fails | Use free data already fetched (radar, styles, compose). Never discard it |
138
- | Not checking subscription before paid calls | Attempt the requested call. On 402, explain the billing issue and ask before any checkout or top-up action |
143
+ | Not checking account access before paid calls | Attempt the requested call. On 402, explain the account state and direct the user to the dashboard |
139
144
  | Passing API keys in code | Auth is injected automatically. Never include keys |
140
145
  | Using `explore` for API calls | `explore` is read-only spec search. Use `xquik` for actual API calls |
141
- | Looking up follow/DM by username | Follow and DM endpoints need numeric user ID. Look up via `GET /x/users/{username}` first |
146
+ | Looking up follow/DM by username | Follow and DM endpoints need numeric user ID. Look up via `GET /x/users/{id}` first; that route accepts usernames and IDs |
142
147
 
143
148
  ## Unsupported Operations
144
149
 
@@ -154,4 +159,4 @@ These are NOT available via the MCP server:
154
159
  ## Cost Reference
155
160
 
156
161
  - **Free**: account info, compose (all steps), styles (cached lookup/save/delete/compare), drafts, radar (via `xquik` tool, all 7 sources), support tickets, credits balance check, webhook management
157
- - **Credit or subscription required**: tweet search, user lookup, tweet lookup, follow check, media download (first only, cached free), extractions, draws, active monitors, style analysis (X API refresh), performance analysis, trends, and confirmation-gated write actions (tweet, like, retweet, follow, DM, profile, media upload, communities)
162
+ - **Credits or plan required**: tweet search, user lookup, tweet lookup, follow check, media download (first only, cached free), extractions, draws, active monitors, style analysis (X API refresh), performance analysis, trends, and confirmation-gated write actions (tweet, like, retweet, follow, DM, profile, media upload, communities)