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.
- package/.codex-plugin/plugin.json +48 -0
- package/README.md +33 -78
- package/openclaw.plugin.json +2 -2
- package/package.json +5 -5
- package/skills/x-twitter-scraper/SKILL.md +51 -32
- package/skills/x-twitter-scraper/metadata.json +3 -5
- package/skills/x-twitter-scraper/references/api-endpoints.md +121 -143
- package/skills/x-twitter-scraper/references/mcp-setup.md +8 -34
- package/skills/x-twitter-scraper/references/mcp-tools.md +16 -11
- package/skills/x-twitter-scraper/references/pricing.md +23 -100
- package/skills/x-twitter-scraper/references/python-examples.md +52 -35
- package/skills/x-twitter-scraper/references/security.md +22 -11
- package/skills/x-twitter-scraper/references/types.md +24 -57
- package/skills/x-twitter-scraper/references/webhooks.md +59 -38
- package/skills/x-twitter-scraper/references/workflows.md +2 -3
- package/skills/check-mutuals/SKILL.md +0 -53
- package/skills/clean-followers/SKILL.md +0 -69
- package/skills/export-tweets-csv/SKILL.md +0 -68
- package/skills/extract-followers/SKILL.md +0 -81
- package/skills/find-bangers/SKILL.md +0 -59
- package/skills/find-influencers/SKILL.md +0 -70
- package/skills/find-viral-tweets/SKILL.md +0 -78
- package/skills/follow-unfollow/SKILL.md +0 -81
- package/skills/for-you-feed/SKILL.md +0 -61
- package/skills/going-viral/SKILL.md +0 -66
- package/skills/grow-followers/SKILL.md +0 -64
- package/skills/monitor-accounts/SKILL.md +0 -79
- package/skills/optimize-tweets/SKILL.md +0 -75
- package/skills/post-tweets/SKILL.md +0 -106
- package/skills/run-giveaway/SKILL.md +0 -90
- package/skills/search-tweets/SKILL.md +0 -120
- package/skills/send-dms/SKILL.md +0 -90
- package/skills/top-replies/SKILL.md +0 -69
- package/skills/track-competitors/SKILL.md +0 -70
- package/skills/track-hashtags/SKILL.md +0 -84
- package/skills/track-mentions/SKILL.md +0 -86
- package/skills/trending-news/SKILL.md +0 -66
- package/skills/tweet-analytics/SKILL.md +0 -132
- package/skills/tweet-ideas/SKILL.md +0 -62
- package/skills/tweet-replies/SKILL.md +0 -80
- package/skills/tweet-style/SKILL.md +0 -71
- package/skills/tweet-webhooks/SKILL.md +0 -82
- package/skills/update-x-profile/SKILL.md +0 -73
- package/skills/user-tweets/SKILL.md +0 -126
- package/skills/who-liked/SKILL.md +0 -66
- package/skills/who-quoted/SKILL.md +0 -66
- package/skills/who-retweeted/SKILL.md +0 -65
- package/skills/write-threads/SKILL.md +0 -71
- package/skills/write-tweets/SKILL.md +0 -77
- package/skills/x-articles/SKILL.md +0 -82
- package/skills/x-bookmarks/SKILL.md +0 -61
- package/skills/x-communities/SKILL.md +0 -69
- package/skills/x-lists/SKILL.md +0 -68
- package/skills/x-spaces/SKILL.md +0 -65
- 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/{
|
|
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/{
|
|
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
|
-
|
|
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/
|
|
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/
|
|
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
|
|
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.
|
|
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/{
|
|
939
|
+
`PUT /styles/{id}`
|
|
917
940
|
|
|
918
|
-
Save a custom style profile from tweet texts. Free, no usage cost.
|
|
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/{
|
|
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/{
|
|
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/{
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
1041
|
+
The OpenAPI surface includes dashboard-owned account connection routes:
|
|
1042
1042
|
|
|
1043
1043
|
```
|
|
1044
|
-
POST /
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
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 |
|
|
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
|
-
| `
|
|
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
|
|
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
|
-
|
|
1276
|
+
GET /x/write-actions/{id}
|
|
1293
1277
|
```
|
|
1294
1278
|
|
|
1295
|
-
|
|
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
|
-
|
|
1283
|
+
## Credits
|
|
1304
1284
|
|
|
1305
|
-
###
|
|
1285
|
+
### Get Credit Balance
|
|
1306
1286
|
|
|
1307
1287
|
```
|
|
1308
|
-
|
|
1288
|
+
GET /credits
|
|
1309
1289
|
```
|
|
1310
1290
|
|
|
1311
|
-
|
|
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
|
|
1385
|
-
| 402 | `subscription_inactive` |
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 |
|
|
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
|
|
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
|
-
|
|
|
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/{
|
|
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/{
|
|
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
|
|
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 |
|
|
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/{
|
|
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** |
|
|
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/{
|
|
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
|
|
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/{
|
|
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
|
-
- **
|
|
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)
|