x-developer 2.6.2 → 2.6.3

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 (62) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/CHANGELOG.md +11 -0
  5. package/README.md +33 -332
  6. package/openclaw.plugin.json +1 -1
  7. package/package.json +1 -1
  8. package/scripts/release-guard/content-policy.mjs +1 -0
  9. package/skills/x-twitter-scraper/SKILL.md +9 -5
  10. package/skills/x-twitter-scraper/metadata.json +1 -1
  11. package/skills/x-twitter-scraper/references/api-endpoints-error-codes.md +29 -3
  12. package/skills/x-twitter-scraper/references/api-endpoints-support.md +35 -51
  13. package/skills/x-twitter-scraper/references/api-endpoints-x-api.md +24 -3
  14. package/skills/x-twitter-scraper/references/mcp-setup.md +3 -1
  15. package/skills/x-twitter-scraper/references/mcp-tools.md +9 -0
  16. package/skills/x-twitter-scraper/references/scrape-export-twitter-data.md +8 -4
  17. package/skills/x-twitter-scraper/references/types-error.md +24 -3
  18. package/skills/x-twitter-scraper/references/types-support.md +31 -10
  19. package/skills/x-twitter-scraper/references/workflows.md +6 -2
  20. package/skills/x-twitter-scraper/skill-card.md +1 -1
  21. package/skills/xquik-social-research/SKILL.md +5 -0
  22. package/stub-server.mjs +1 -1
  23. package/task-guides/check-mutuals.md +1 -1
  24. package/task-guides/clean-followers.md +1 -1
  25. package/task-guides/export-tweets-csv.md +1 -1
  26. package/task-guides/extract-followers.md +1 -1
  27. package/task-guides/find-bangers.md +1 -1
  28. package/task-guides/find-influencers.md +1 -1
  29. package/task-guides/find-viral-tweets.md +1 -1
  30. package/task-guides/follow-unfollow.md +1 -1
  31. package/task-guides/for-you-feed.md +1 -1
  32. package/task-guides/going-viral.md +1 -1
  33. package/task-guides/grow-followers.md +1 -1
  34. package/task-guides/monitor-accounts.md +1 -1
  35. package/task-guides/optimize-tweets.md +1 -1
  36. package/task-guides/post-tweets.md +1 -1
  37. package/task-guides/run-giveaway.md +1 -1
  38. package/task-guides/search-tweets.md +4 -1
  39. package/task-guides/send-dms.md +1 -1
  40. package/task-guides/top-replies.md +1 -1
  41. package/task-guides/track-competitors.md +1 -1
  42. package/task-guides/track-hashtags.md +1 -1
  43. package/task-guides/track-mentions.md +1 -1
  44. package/task-guides/trending-news.md +1 -1
  45. package/task-guides/tweet-analytics.md +1 -1
  46. package/task-guides/tweet-ideas.md +1 -1
  47. package/task-guides/tweet-replies.md +4 -5
  48. package/task-guides/tweet-style.md +1 -1
  49. package/task-guides/tweet-webhooks.md +1 -1
  50. package/task-guides/update-x-profile.md +1 -1
  51. package/task-guides/user-tweets.md +1 -2
  52. package/task-guides/who-liked.md +1 -1
  53. package/task-guides/who-quoted.md +1 -1
  54. package/task-guides/who-retweeted.md +1 -1
  55. package/task-guides/write-threads.md +1 -1
  56. package/task-guides/write-tweets.md +1 -1
  57. package/task-guides/x-articles.md +1 -1
  58. package/task-guides/x-bookmarks.md +1 -1
  59. package/task-guides/x-communities.md +1 -1
  60. package/task-guides/x-lists.md +1 -1
  61. package/task-guides/x-spaces.md +1 -1
  62. package/task-guides/x-trends.md +1 -1
@@ -2,68 +2,52 @@
2
2
 
3
3
  ## Safety Boundary
4
4
 
5
- Support tickets can disclose private user or account context. Show the exact
6
- subject and message before creating a ticket. Show the ticket ID and message
7
- before replying. Show the ticket ID plus current and proposed statuses before
8
- updating status. Proceed only after explicit approval for that exact payload.
9
- Before reading tickets, show the account, purpose, ticket scope, result bound,
10
- downstream recipients, and retention plan. Obtain explicit approval for that
11
- exact private read. Never include passwords, API keys, signing keys, unrelated
12
- prompt context, or unnecessary personal data.
5
+ Tickets can disclose private account context. Preview each subject, message,
6
+ file, ticket ID, or status change. Obtain approval for that exact action. Before
7
+ private reads, show the account, purpose, scope, bound, recipients, and retention
8
+ plan. Exclude secrets, unrelated context, and unnecessary personal data.
13
9
 
14
- ### Create Ticket
10
+ ### Create or Reply
15
11
 
16
- ```
12
+ ```http
17
13
  POST /support/tickets
14
+ POST /support/tickets/{id}/messages
18
15
  ```
19
16
 
20
- **Body:** `{ "subject": "...", "body": "..." }`
21
-
22
- **Response (201):** `{ id, subject, status, createdAt }`
23
-
24
- ### List Tickets
25
-
26
- ```
27
- GET /support/tickets
28
- ```
29
-
30
- Returns all tickets for the authenticated user.
31
-
32
- **Private read:** Show the account, purpose, result bound, recipients, and
33
- retention plan. List tickets only after explicit approval for that exact read.
34
-
35
- ### Get Ticket
36
-
37
- ```
38
- GET /support/tickets/{id}
39
- ```
40
-
41
- Returns ticket with messages.
42
-
43
- **Private read:** Show the ticket ID, purpose, message scope, recipients, and
44
- retention plan. Retrieve messages only after explicit approval for that read.
45
-
46
- ### Update Ticket
17
+ Create accepts JSON `{ "subject": "...", "body": "..." }`. Subjects allow
18
+ 1-500 characters. Reply accepts JSON `{ "body": "..." }`. Bodies allow
19
+ 1-10,000 characters. Multipart create requires `subject` plus `body`, 1-4
20
+ `attachments`, or both. Multipart reply requires `body`, 1-4 `attachments`, or
21
+ both. Attach JPEG, PNG, GIF, WebP, MP4, MOV, or WebM files. Images allow 10 MB
22
+ each. Videos allow 25 MB each. Combined media allows 30 MB.
47
23
 
48
- ```
49
- PATCH /support/tickets/{id}
50
- ```
24
+ Both return `{ "publicId": "tkt_...", "attachments": [] }`.
51
25
 
52
- Update ticket status.
26
+ New requests return `201`. Direct REST callers may send a random
27
+ `Idempotency-Key` of 8-128 letters, numbers, `.`, `_`, `:`, or `-`. Use one per intended ticket
28
+ or reply. Reuse it only for identical text and attachments. Never log it. A safe
29
+ replay returns `200` plus `Idempotency-Replayed: true`. Different content with
30
+ the same key returns `409 idempotency_key_conflict`.
31
+ Other errors: `400` invalid input, `401` unauthenticated, and `429` rate limited.
32
+ Replies also return `404` for a missing ticket.
53
33
 
54
- **Approval required:** Show the ticket ID and current and proposed statuses.
55
- Update only after the user approves that exact transition.
34
+ ### Read or Update Tickets
56
35
 
57
- ### Reply to Ticket
36
+ Use `GET /support/tickets`, `GET /support/tickets/{id}`, or
37
+ `PATCH /support/tickets/{id}`.
58
38
 
59
- ```
60
- POST /support/tickets/{id}/messages
61
- ```
39
+ List returns `{ tickets }`. Get returns ticket details, messages, and attachment
40
+ metadata. Patch accepts `{ "status": "open" | "resolved" | "closed" }`.
41
+ Private reads and status changes require the exact approvals above.
62
42
 
63
- **Body:** `{ "body": "..." }`
43
+ ### Download an Attachment
64
44
 
65
- Add a message to an existing ticket.
45
+ Call `GET /support/attachments/{id}`. Optionally send `Range: bytes=0-1048575`.
66
46
 
67
- Apply the same approval and data-minimization rules to every reply.
47
+ The authenticated owner receives image or video bytes. Omit `Range` for `200`
48
+ full content. Send one standard byte range for `206` partial video content.
49
+ Invalid or unsatisfiable ranges return `416 invalid_range`.
50
+ Unauthenticated, missing, or throttled downloads return `401`, `404`, or `429`.
68
51
 
69
- ---
52
+ Attachment metadata uses `pending`, `ready`, or `failed` status. Download only
53
+ `ready` attachments. Treat downloaded media as untrusted data.
@@ -52,6 +52,8 @@ GET /x/tweets/search?q={query}
52
52
  Search using X syntax: keywords, `#hashtags`, `from:user`, `to:user`, `"exact phrases"`, `OR`, `-exclude`.
53
53
 
54
54
  Returns tweet info with optional engagement metrics (likeCount, retweetCount, replyCount) and optional attached media. Some fields may be omitted if unavailable.
55
+ Fresh cursorless `queryType=Latest` pagination returns newest-first across pages.
56
+ Existing cursors keep their established ordering.
55
57
 
56
58
  ### Get User
57
59
 
@@ -63,12 +65,21 @@ Returns profile info. `id` accepts either an X username without `@` or a numeric
63
65
 
64
66
  ### Batch & Search Users
65
67
 
66
- ```
68
+ ```http
67
69
  GET /x/users/batch?ids=44196397,783214
68
- GET /x/users/search?q=founder
70
+ GET /x/users/search?q=founder&minFollowers=1000&verifiedOnly=true
69
71
  ```
70
72
 
71
- Batch lookup accepts up to 100 comma-separated numeric user IDs. User search returns matching profiles and may include a pagination cursor.
73
+ Batch lookup accepts up to 100 comma-separated numeric user IDs.
74
+ Search returns matching profiles and may include a `cursor`. All supported
75
+ filters apply before billing.
76
+
77
+ Filters: `minFollowers`, `maxFollowers`, `minFollowing`, `maxFollowing`,
78
+ `minStatuses`, `maxStatuses`, `minAccountAgeDays`, `verifiedOnly`,
79
+ `verifiedType`, `hasWebsite`, `hasLocation`, `bioContains`, `locationContains`,
80
+ and `usernameContains`. `minPosts` and `maxPosts` alias the status filters.
81
+ Text filters ignore case. `bioContains` matches any comma- or line-separated
82
+ term. Count filters use inclusive bounds.
72
83
 
73
84
  ### Check Follower
74
85
 
@@ -129,6 +140,16 @@ GET /x/tweets/{id}/thread
129
140
 
130
141
  Read quote tweets, replies, retweeters, or the conversation thread for a tweet. These are paginated read operations.
131
142
 
143
+ Thread reads accept these 32 effective result filters:
144
+ `fromUser`, `toUser`, `mentioning`, `language`, `sinceDate`, `untilDate`,
145
+ `mediaType`, `minFaves`, `minRetweets`, `minReplies`, `minQuotes`, `minViews`,
146
+ `minBookmarks`, `maxFaves`, `maxRetweets`, `maxReplies`, `maxQuotes`,
147
+ `blueVerifiedOnly`, `verifiedOnly`, `replies`, `retweets`, `quotes`,
148
+ `exactPhrase`, `excludeWords`, `anyWords`, `hashtags`, `cashtags`, `url`,
149
+ `conversationId`, `inReplyToTweetId`, `quotesOfTweetId`, and
150
+ `retweetsOfTweetId`. Thread reads do not accept `nativeRetweets`, `sinceTime`,
151
+ or `untilTime`.
152
+
132
153
  ### User Social Graph Reads
133
154
 
134
155
  ```
@@ -11,7 +11,7 @@ API keys.
11
11
  | Endpoint | `https://xquik.com/mcp` |
12
12
  | Authentication | OAuth 2.1 discovery; API key fallback |
13
13
  | Hosted MCP version | `2.6.0` |
14
- | Skill bundle version | `2.6.2` |
14
+ | Skill bundle version | `2.6.3` |
15
15
 
16
16
  Current clients negotiate MCP `2026-07-28` through `server/discover`.
17
17
  Use a current MCP SDK. It adds request `_meta` and protocol headers.
@@ -329,6 +329,8 @@ Handle failures from structured error fields:
329
329
 
330
330
  - `401`: reconnect OAuth or replace the revoked API key.
331
331
  - `402`: report payment options. Never create checkout without confirmation.
332
+ - `409 coverage_cursor_unavailable`: wait the exact `Retry-After` seconds, then retry the same cursor once.
333
+ - `410 coverage_cursor_gone`: no `Retry-After`; restart without a cursor and deduplicate by ID.
332
334
  - `429`: honor `Retry-After`.
333
335
  - `5xx`: retry read-only requests with bounded exponential backoff.
334
336
 
@@ -59,6 +59,10 @@ async () => spec.endpoints.filter(e => e.summary.toLowerCase().includes('tweet')
59
59
 
60
60
  The tool provides `xquik.request()` with authentication and required idempotency headers injected automatically. Never pass API keys or headers. The sandbox reuses each generated key for bounded transient retries. After an unresolved write failure, verify state. Start a new attempt only when `safe_to_retry` is true and the user approves.
61
61
 
62
+ For `409 coverage_cursor_unavailable`, wait the exact `Retry-After` seconds and
63
+ retry the same cursor once. For `410 coverage_cursor_gone`, the response omits
64
+ `Retry-After`. Restart without a cursor and deduplicate by ID.
65
+
62
66
  ## Safety Gates
63
67
 
64
68
  Apply these gates before using `xquik`:
@@ -134,6 +138,11 @@ Use `explore` first to find endpoints, then `xquik` to call them.
134
138
 
135
139
  Use `POST /api/v1/extractions` ONLY for bulk data that simpler endpoints cannot provide (all followers, all replies to a tweet, community members, etc.). Always call `POST /api/v1/extractions/estimate` first.
136
140
 
141
+ Fresh cursorless Tweet Search with `queryType=Latest` is newest-first across
142
+ pages. Existing cursors retain their ordering. Thread reads accept 32 effective
143
+ result filters. They exclude `nativeRetweets`, `sinceTime`, and `untilTime`.
144
+ See [direct lookups](api-endpoints-x-api.md) for the exact names.
145
+
137
146
  ## Workflow Patterns
138
147
 
139
148
  | Workflow | Steps |
@@ -36,6 +36,8 @@ structured tweet, author, timestamp, engagement, and media fields when present.
36
36
 
37
37
  Version every advanced search query. Store the exact filters beside the output.
38
38
  Changing a date, author, language, or exclusion changes the dataset definition.
39
+ Fresh cursorless `queryType=Latest` pagination is newest-first across pages.
40
+ Existing cursors retain their established ordering.
39
41
 
40
42
  ## Tweet Archive and Historical Twitter Data
41
43
 
@@ -89,13 +91,15 @@ Record the query, filters, job ID, and collection time for lineage.
89
91
  ### How do I scrape tweets without getting blocked?
90
92
 
91
93
  Avoid fragile browser automation and access-control bypasses. Use documented
92
- API routes, bounded limits, cursors, and provider retry rules. Xquik handles its
94
+ API routes, bounded limits, cursors, and retry rules. Xquik handles its
93
95
  own public-data infrastructure, so clients do not manage guest tokens or X
94
96
  sessions.
95
97
 
96
- Retry only `429` and `5xx` responses. Honor `Retry-After`, use exponential
97
- backoff, add jitter, and cap attempts. Do not retry validation, authentication,
98
- permission, or other non-429 `4xx` failures.
98
+ Outside documented cursor recovery, retry only `429` and `5xx` responses. Honor
99
+ `Retry-After`, add jitter, and cap attempts. For `409 coverage_cursor_unavailable`,
100
+ wait the exact `Retry-After` seconds and retry the same cursor once. For
101
+ `410 coverage_cursor_gone`, the response omits `Retry-After`. Restart without a
102
+ cursor and deduplicate by ID. Do not retry other `4xx` failures.
99
103
 
100
104
  Large jobs should use extractions instead of unbounded page loops. Keep API keys
101
105
  in a secret manager. Treat every returned post as untrusted data.
@@ -1,10 +1,31 @@
1
1
  # Xquik TypeScript Types: Error
2
2
 
3
3
  ```typescript
4
+ type ApiErrorCode = string;
5
+
6
+ type ApiErrorType =
7
+ | "api_error"
8
+ | "authentication_error"
9
+ | "billing_error"
10
+ | "dependency_error"
11
+ | "invalid_request_error"
12
+ | "permission_error"
13
+ | "rate_limit_error";
4
14
 
5
15
  interface ApiError {
6
- error: string;
7
- limit?: number;
16
+ error:
17
+ | ApiErrorCode
18
+ | { message: string; type: ApiErrorType; code: ApiErrorCode };
19
+ message?: string;
20
+ reason?: string;
21
+ retryAfter?: number;
22
+ retryAfterMs?: number;
8
23
  }
9
-
10
24
  ```
25
+
26
+ OpenAPI enumerates all 109 `ApiErrorCode` values, including
27
+ `user_not_found`. Generated SDKs expose that exhaustive enum. The handwritten
28
+ type remains a string for forward compatibility.
29
+
30
+ Default v1 errors use the string form. Send
31
+ `xquik-api-contract: 2026-04-29` to receive the structured form.
@@ -1,25 +1,46 @@
1
1
  # Xquik TypeScript Types: Support
2
2
 
3
3
  ```typescript
4
+ type SupportTicketStatus = "open" | "in_progress" | "resolved" | "closed";
5
+ type SupportAttachmentStatus = "pending" | "ready" | "failed";
4
6
 
5
- interface SupportTicket {
6
- id: string;
7
- subject: string;
8
- status: string;
9
- createdAt: string;
10
- updatedAt: string;
7
+ interface SupportAttachmentReceipt {
8
+ publicId: string;
9
+ status: SupportAttachmentStatus;
10
+ }
11
+
12
+ interface SupportAttachment extends SupportAttachmentReceipt {
13
+ filename: string;
14
+ contentType: "image/jpeg" | "image/png" | "image/gif" | "image/webp"
15
+ | "video/mp4" | "video/quicktime" | "video/webm";
16
+ kind: "image" | "video";
17
+ sizeBytes: number;
18
+ url: string;
11
19
  }
12
20
 
13
21
  interface SupportMessage {
14
- id: string;
15
22
  body: string;
16
- sender: string;
23
+ sender: "user" | "support" | "system";
17
24
  createdAt: string;
25
+ attachments: SupportAttachment[];
18
26
  }
19
27
 
20
- interface CreateTicketRequest {
28
+ interface SupportTicket {
29
+ publicId: string;
21
30
  subject: string;
22
- body: string;
31
+ status: SupportTicketStatus;
32
+ createdAt: string;
33
+ updatedAt: string;
34
+ messageCount?: number;
35
+ messages?: SupportMessage[];
36
+ }
37
+
38
+ interface SupportMutationResponse {
39
+ publicId: string;
40
+ attachments: SupportAttachmentReceipt[];
23
41
  }
24
42
 
43
+ type SupportContent = { body: string } | { body?: string; attachments: Blob[] };
44
+ type CreateTicketRequest = SupportContent & { subject: string };
45
+ type ReplyToTicketRequest = SupportContent;
25
46
  ```
@@ -29,8 +29,8 @@ const headers = { "x-api-key": apiKey, "Content-Type": "application/json" };
29
29
 
30
30
  ## Retry with Exponential Backoff
31
31
 
32
- Retry only idempotent requests after `429` and `5xx`. Never automatically retry
33
- `POST`, `PATCH`, or `DELETE`. Max 3 retries:
32
+ Outside documented cursor recovery, retry only idempotent requests after `429`
33
+ and `5xx`. Never automatically retry `POST`, `PATCH`, or `DELETE`. Max 3 retries:
34
34
 
35
35
  ```javascript
36
36
  async function xquikFetch(path, options = {}) {
@@ -90,6 +90,10 @@ async function fetchAllPages(path, dataKey) {
90
90
 
91
91
  Cursors are opaque strings. Never decode or construct them manually.
92
92
 
93
+ For `409 coverage_cursor_unavailable`, wait the exact `Retry-After` seconds and
94
+ retry the same cursor once. For `410 coverage_cursor_gone`, the response omits
95
+ `Retry-After`. Restart without a cursor and deduplicate by ID.
96
+
93
97
  ## Complete Extraction Workflow
94
98
 
95
99
  ```javascript
@@ -69,7 +69,7 @@ Other properties: The skill performs no shell execution, no local file access, n
69
69
 
70
70
  ## Skill Version
71
71
 
72
- 2.6.2
72
+ 2.6.3
73
73
 
74
74
  ## Ethical Considerations
75
75
 
@@ -41,6 +41,11 @@ Never request X passwords, cookies, session tokens, recovery codes, or 2FA codes
41
41
 
42
42
  The API base URL is `https://xquik.com`.
43
43
 
44
+ Fresh cursorless Tweet Search with `queryType=Latest` is newest-first across
45
+ pages. Existing cursors retain their established ordering. Thread reads accept
46
+ 32 effective result filters, excluding `nativeRetweets`, `sinceTime`, and
47
+ `untilTime`. Check OpenAPI for their exact names.
48
+
44
49
  ## Workflow
45
50
 
46
51
  1. Classify the request as direct read, bulk export, monitor, or account action.
package/stub-server.mjs CHANGED
@@ -12,7 +12,7 @@ import { pathToFileURL } from "node:url";
12
12
 
13
13
  const SERVER_INFO = {
14
14
  name: "xquik",
15
- version: "2.6.2",
15
+ version: "2.6.3",
16
16
  };
17
17
 
18
18
  const CAPABILITIES = {
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -73,6 +73,9 @@ Supported query parameters: `q` (URL-encoded), `queryType` (`Latest` or `Top`),
73
73
 
74
74
  Response: `{ tweets: [...], has_next_page: true, next_cursor: "..." }`. Loop until `has_next_page` is false or you hit the number you need.
75
75
 
76
+ A fresh cursorless `queryType=Latest` sequence is newest-first across pages.
77
+ Existing cursors retain their established ordering.
78
+
76
79
  ## Bulk Search
77
80
 
78
81
  Always estimate first so the user sees the usage estimate before committing:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -5,7 +5,7 @@ license: MIT
5
5
  metadata:
6
6
  internal: true
7
7
  author: Xquik
8
- version: "2.6.2"
8
+ version: "2.6.3"
9
9
  openclaw:
10
10
  requires:
11
11
  env:
@@ -75,10 +75,9 @@ GET /x/tweets/{id}/replies?mode=complete&limit=25000
75
75
  }
76
76
  ```
77
77
 
78
- Complete mode performs bounded maximum-coverage collection. It merges available
79
- timeline views, rankings, forward cursors, labeled hidden-content branches,
80
- exact-parent time partitions, and search. It returns `424 replies_incomplete`
81
- below 80% direct-reply coverage. The 424 body still contains safe partial rows.
78
+ Complete mode performs bounded maximum-coverage collection across available
79
+ read strategies. It returns `424 replies_incomplete` below 80% direct-reply coverage.
80
+ The 424 body still contains safe partial rows.
82
81
 
83
82
  Complete mode accepts only `limit` from 1 to 25,000. Remove cursors,
84
83
  `pageSize`, time ranges, and Tweet filters.