@twitterapis/mcp 0.9.9 → 0.11.0
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/CHANGELOG.md +36 -0
- package/README.md +20 -3
- package/package.json +1 -1
- package/src/tools.js +391 -150
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,41 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.0 (2026-09-13)
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `twitter_update_profile` — change the display name, bio, location or link on the
|
|
7
|
+
account behind your session. The catalog goes 106 to 107 tools, 65 reads and 42
|
|
8
|
+
writes, still exact parity with the API's own endpoint count. A MINOR release
|
|
9
|
+
rather than a patch, so a consumer pinned to 0.10.x opts in rather than silently
|
|
10
|
+
receiving a new write tool.
|
|
11
|
+
|
|
12
|
+
### Notes
|
|
13
|
+
- It is a genuine PARTIAL update, tested rather than assumed: X's own client sends
|
|
14
|
+
the whole editable set on every save, so a form carrying only `name` is a shape
|
|
15
|
+
that client never produces. Measured against an account with a non-empty bio
|
|
16
|
+
before publishing: name only, HTTP 200, bio intact.
|
|
17
|
+
- An empty string does NOT clear a field. The API trims empty values and treats
|
|
18
|
+
them as absent, so there is no way to blank a bio or a location through this tool
|
|
19
|
+
today. An earlier draft of this release documented the opposite; it was wrong and
|
|
20
|
+
was caught by an adversarial review running the shipped handler rather than
|
|
21
|
+
reading it.
|
|
22
|
+
- `updated_fields` echoes the field names you SENT. It is not a diff, so a field you
|
|
23
|
+
set to the value it already held still appears in it.
|
|
24
|
+
- The two sibling profile writes, avatar and banner, are deliberately not published:
|
|
25
|
+
neither has ever been called, and both need a real image upload.
|
|
26
|
+
|
|
27
|
+
## 0.10.0 (2026-09-13)
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- **Seven compose tools: private drafts and scheduled posts.** `twitter_draft_create`, `twitter_draft_edit`, `twitter_draft_delete`, `twitter_draft_list`, `twitter_scheduled_create`, `twitter_scheduled_delete`, `twitter_scheduled_list`. Catalog is now **106 tools, 65 reads and 41 writes**, still exact parity with the API's endpoint count. A MINOR bump, not a patch: the catalog grew, so a consumer pinned to `0.9.x` opts in rather than receiving seven new tools silently, which is exactly what `scripts/prepublish-version-class.mjs` refuses.
|
|
32
|
+
- **The one thing a model cannot read off a schema is said in every one of the seven descriptions: a DRAFT is private and never posts; a SCHEDULED post WILL publish publicly at its `execute_at` unless it is cancelled first.** A model choosing between `twitter_draft_create` and `twitter_scheduled_create` on the word "create" alone gets it wrong, and the failure is a real post going out. The descriptions also carry the routing to their siblings (`twitter_create_tweet` to post now) and the `execute_at` unit trap: epoch SECONDS, never the milliseconds `Date.now()` returns, with a value at or above 1e12 refused by the API rather than scheduled tens of thousands of years out.
|
|
33
|
+
- **Both list tools document `partial`.** True means X's answer was read but not fully understood; it is ABSENT on a clean read, so an empty array with no flag means the account genuinely has nothing. That distinction is what stops a model reporting "you have no drafts" when the real answer is "we could not read the reply".
|
|
34
|
+
|
|
35
|
+
### Notes
|
|
36
|
+
|
|
37
|
+
- The routes these tools call were built, merged and deployed on 2026-09-13 behind two env flags (`DRAFT_TWEETS_ENABLED`, `SCHEDULED_TWEETS_ENABLED`, both answering 503 while off), verified end to end against a real customer session, then published and their flags removed. The snapshot in `test/openapi.snapshot.json` was refreshed from the LIVE published spec after the docs site deployed, which is the only order that works: the refresh fetches `docs.twitterapis.com/openapi.json`, never a local file.
|
|
38
|
+
|
|
3
39
|
## 0.9.9 (2026-09-11)
|
|
4
40
|
|
|
5
41
|
### Changed
|
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ Restart Claude Desktop. The `twitter_*` tools appear in the tool picker.
|
|
|
91
91
|
|
|
92
92
|
## Tools
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
107 tools: 65 reads and 42 write actions. Most user endpoints accept `username` (handle without @) **or** `user_id` (`twitter_user_likes` and `twitter_user_tweets_complete` require `user_id`); tweet endpoints accept `id` **or** `url`; paginated endpoints return a `cursor` you pass back to get the next page. Four of the reads are free account lookups (`twitter_account_me`, `twitter_account_payments`, `twitter_feedback_get`, `twitter_feedback_list`); the 14 monitoring tools and `twitter_feedback_send` are also free (account administration, not metered reads).
|
|
95
95
|
|
|
96
96
|
Public reads (search, profiles, tweets, followers, likes) work with just your API key. The **account-only** reads (bookmarks, DMs, home timeline, followers-you-know) and **most write actions** act AS an authenticated X account, so they need a session linked to your key first (returns HTTP 409 until then). Link a session either by registering your x.com cookies (`twitter_customer_session`) or by logging in with a username/password (`twitter_user_login`). Alternatively, pass **per-call inline credentials** on any of those tools (`auth_token` + `ct0`, with optional `proxy_url` / `user_agent`) to act AS that account for a single call without pre-registering a session, so one API key can act as many accounts. For write actions, set `proxy_url` to a residential proxy, since X soft-blocks writes that egress from datacenter IPs. Each write tool is annotated `readOnlyHint: false`; reversing actions (delete, unfollow, unlike, unretweet, unbookmark, monitor/webhook delete) are annotated `destructiveHint: true` so MCP clients can prompt before running them. The **monitoring** and **feedback** tools (see below) are the exception: they administer your twitterapis.com account, not an X session, so they need only your API key, no linked session and no inline credentials.
|
|
97
97
|
|
|
@@ -169,6 +169,23 @@ Public reads (search, profiles, tweets, followers, likes) work with just your AP
|
|
|
169
169
|
| `twitter_list_create` | Create a Twitter/X List owned by your session (`name`, optional `description` / `is_private`) |
|
|
170
170
|
| `twitter_list_add_member` / `twitter_list_remove_member` | Add / remove one account on a List you own; `member_count` comes back as proof the write landed |
|
|
171
171
|
| `twitter_media_upload` | Upload a base64 image, returns a `media_id` for `twitter_create_tweet` |
|
|
172
|
+
| `twitter_update_profile` | Change your own name, bio, location or link. A PARTIAL update: omitted fields keep their values, an empty string clears one |
|
|
173
|
+
|
|
174
|
+
### Drafts and scheduled posts _(require a linked X session)_
|
|
175
|
+
|
|
176
|
+
A **draft** is private and never posts. A **scheduled** post **will publish publicly** at its `execute_at` unless you cancel it first. Both lists read only your own account.
|
|
177
|
+
|
|
178
|
+
| Tool | What it does |
|
|
179
|
+
|---|---|
|
|
180
|
+
| `twitter_draft_create` | Save a private draft on your account; nothing is posted |
|
|
181
|
+
| `twitter_draft_edit` | Replace one draft's contents by `id`; the fields you send become the draft |
|
|
182
|
+
| `twitter_draft_delete` | Delete a draft by `id`; it was never public, so nothing is retracted |
|
|
183
|
+
| `twitter_draft_list` | List your drafts, each with `text` and `thread_truncated` |
|
|
184
|
+
| `twitter_scheduled_create` | Schedule a post for a future `execute_at` in epoch **seconds**, not milliseconds |
|
|
185
|
+
| `twitter_scheduled_delete` | Cancel a pending scheduled post before it sends |
|
|
186
|
+
| `twitter_scheduled_list` | List your pending queue; `execute_at` comes back in epoch seconds |
|
|
187
|
+
|
|
188
|
+
Both list tools can return `partial: true`, which means X's answer was read but not fully understood. It is **not** the same as an empty list: on a clean read the flag is absent entirely, so an empty array with no `partial` means you genuinely have nothing queued or drafted.
|
|
172
189
|
|
|
173
190
|
### Articles _(X's long-form "Notes" feature; writes require a linked X session)_
|
|
174
191
|
|
|
@@ -310,7 +327,7 @@ count: 50
|
|
|
310
327
|
|
|
311
328
|
## Pricing
|
|
312
329
|
|
|
313
|
-
Calls are billed to your twitterapis.com account.
|
|
330
|
+
Calls are billed to your twitterapis.com account. Most endpoints are $0.0008/call: nearly every read (search, profiles, tweets, followers, likes) plus the simple write actions (like, retweet, bookmark, follow and their undos, delete). At the read rate that works out to $0.04 per 1,000 tweets, since each call returns about 20 tweets. The premium endpoints cost a little more: tweet creation, sending a DM (`twitter_dm_send`), and DM reads (`twitter_dm_list`, `twitter_dm_conversation`) at $0.0016/call, full tweet history (`twitter_user_tweets_complete`) at $0.0024/call, a full tweet thread (`twitter_tweet_thread`) and a Grok answer (`twitter_grok_chat`) at $0.004/call, and the article-editing writes (`twitter_article_create`, `twitter_article_update_title`, `twitter_article_update_cover_media`, `twitter_article_update_content`, `twitter_article_publish`, `twitter_article_unpublish`) at $0.0016. The compose surface is $0.0016 for `twitter_draft_create`, `twitter_draft_edit`, `twitter_scheduled_create` and, note, BOTH LIST READS (`twitter_draft_list`, `twitter_scheduled_list`), which are the two reads that are not at the read rate; `twitter_draft_delete` and `twitter_scheduled_delete` are $0.0008/call, while `twitter_article_get`, `twitter_article_list` and `twitter_article_delete` stay at the standard $0.0008/call. `twitter_update_profile`, the one published profile write, is $0.0016/call. Your first $0.50 is free. See [twitterapis.com/pricing](https://www.twitterapis.com/pricing).
|
|
314
331
|
|
|
315
332
|
## Links
|
|
316
333
|
|
|
@@ -323,7 +340,7 @@ Calls are billed to your twitterapis.com account. Almost every endpoint is $0.00
|
|
|
323
340
|
|
|
324
341
|
**Do I need an X (Twitter) developer account?** No. Get an API key at [twitterapis.com/signup](https://www.twitterapis.com/signup); there is no application or approval step.
|
|
325
342
|
|
|
326
|
-
**Is it read-only?** No.
|
|
343
|
+
**Is it read-only?** No. 65 read tools work with just your API key; 42 write actions (post, save or schedule a post, like, retweet, follow, DM, media upload, List create/add member/remove member, article create/edit/publish/delete, monitor/webhook create/update/delete, feedback send) act as a linked X account or per-call inline credentials, except monitor/webhook CRUD and feedback, which are account administration and need only your API key.
|
|
327
344
|
|
|
328
345
|
**Which clients are supported?** Claude Desktop, Cursor, Windsurf, and VS Code (Copilot agent mode), or any Model Context Protocol client.
|
|
329
346
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@twitterapis/mcp",
|
|
3
3
|
"mcpName": "io.github.TwitterAPIs/twitterapis-mcp",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.11.0",
|
|
5
5
|
"description": "Official MCP server for twitterapis.com, the Twitter/X API (search, users, followers, tweets, threads, lists, likes, bookmarks, DMs) plus write actions (post/like/retweet/follow) as native tools for Claude, Cursor, and any MCP client.",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
package/src/tools.js
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
// file in memory and fails if it does not match what is committed, so a hand edit
|
|
9
9
|
// here is caught rather than shipped.
|
|
10
10
|
//
|
|
11
|
-
// Catalog:
|
|
11
|
+
// Catalog: 107 tools (65 reads, 42 writes).
|
|
12
12
|
//
|
|
13
13
|
// Each tool maps 1:1 to a REST endpoint at https://api.twitterapis.com. Tool arg
|
|
14
14
|
// names map 1:1 to endpoint query params (every endpoint, including the POST
|
|
15
15
|
// write actions, reads its params from the query string), except the per-call
|
|
16
|
-
// inline credentials, which travel as x-* request headers, the
|
|
16
|
+
// inline credentials, which travel as x-* request headers, the 12
|
|
17
17
|
// jsonBody tools, whose fields travel in a JSON request body, and any arg listed
|
|
18
18
|
// in pathParams, which is substituted into the URL path (e.g. {id}) instead. A
|
|
19
19
|
// tool with `method: "POST"` or `method: "DELETE"` is a write that acts on
|
|
@@ -379,16 +379,16 @@ export const TOOLS = [
|
|
|
379
379
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
380
380
|
),
|
|
381
381
|
auth_token: z.string().optional().describe(
|
|
382
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
382
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
383
383
|
),
|
|
384
384
|
ct0: z.string().optional().describe(
|
|
385
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
385
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
386
386
|
),
|
|
387
387
|
proxy_url: z.string().optional().describe(
|
|
388
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
388
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
389
389
|
),
|
|
390
390
|
user_agent: z.string().optional().describe(
|
|
391
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
391
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
392
392
|
),
|
|
393
393
|
},
|
|
394
394
|
},
|
|
@@ -711,16 +711,16 @@ export const TOOLS = [
|
|
|
711
711
|
"How many images Grok may generate if the prompt calls for one. Defaults to the value X's own client sends. Set 0 for a text-only answer.",
|
|
712
712
|
),
|
|
713
713
|
auth_token: z.string().optional().describe(
|
|
714
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
714
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
715
715
|
),
|
|
716
716
|
ct0: z.string().optional().describe(
|
|
717
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
717
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
718
718
|
),
|
|
719
719
|
proxy_url: z.string().optional().describe(
|
|
720
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
720
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
721
721
|
),
|
|
722
722
|
user_agent: z.string().optional().describe(
|
|
723
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
723
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
724
724
|
),
|
|
725
725
|
},
|
|
726
726
|
},
|
|
@@ -731,16 +731,16 @@ export const TOOLS = [
|
|
|
731
731
|
"Check whether the authenticated account can use Grok, and which models it may pick. Returns eligibility, X's own reasons when it is NOT eligible (passed through verbatim, since we cannot know X's policy), whether free access is enabled, and the available model options. Eligibility is a property of the X ACCOUNT rather than of the API key, so ask this about the same account you intend to run twitter_grok_chat as. Free.",
|
|
732
732
|
shape: {
|
|
733
733
|
auth_token: z.string().optional().describe(
|
|
734
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
734
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
735
735
|
),
|
|
736
736
|
ct0: z.string().optional().describe(
|
|
737
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
737
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
738
738
|
),
|
|
739
739
|
proxy_url: z.string().optional().describe(
|
|
740
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
740
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
741
741
|
),
|
|
742
742
|
user_agent: z.string().optional().describe(
|
|
743
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
743
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
744
744
|
),
|
|
745
745
|
},
|
|
746
746
|
},
|
|
@@ -861,16 +861,16 @@ export const TOOLS = [
|
|
|
861
861
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
862
862
|
),
|
|
863
863
|
auth_token: z.string().optional().describe(
|
|
864
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
864
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
865
865
|
),
|
|
866
866
|
ct0: z.string().optional().describe(
|
|
867
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
867
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
868
868
|
),
|
|
869
869
|
proxy_url: z.string().optional().describe(
|
|
870
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
870
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
871
871
|
),
|
|
872
872
|
user_agent: z.string().optional().describe(
|
|
873
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
873
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
874
874
|
),
|
|
875
875
|
},
|
|
876
876
|
},
|
|
@@ -887,16 +887,16 @@ export const TOOLS = [
|
|
|
887
887
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
888
888
|
),
|
|
889
889
|
auth_token: z.string().optional().describe(
|
|
890
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
890
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
891
891
|
),
|
|
892
892
|
ct0: z.string().optional().describe(
|
|
893
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
893
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
894
894
|
),
|
|
895
895
|
proxy_url: z.string().optional().describe(
|
|
896
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
896
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
897
897
|
),
|
|
898
898
|
user_agent: z.string().optional().describe(
|
|
899
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
899
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
900
900
|
),
|
|
901
901
|
},
|
|
902
902
|
},
|
|
@@ -913,16 +913,16 @@ export const TOOLS = [
|
|
|
913
913
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
914
914
|
),
|
|
915
915
|
auth_token: z.string().optional().describe(
|
|
916
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
916
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
917
917
|
),
|
|
918
918
|
ct0: z.string().optional().describe(
|
|
919
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
919
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
920
920
|
),
|
|
921
921
|
proxy_url: z.string().optional().describe(
|
|
922
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
922
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
923
923
|
),
|
|
924
924
|
user_agent: z.string().optional().describe(
|
|
925
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
925
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
926
926
|
),
|
|
927
927
|
},
|
|
928
928
|
},
|
|
@@ -939,16 +939,16 @@ export const TOOLS = [
|
|
|
939
939
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
940
940
|
),
|
|
941
941
|
auth_token: z.string().optional().describe(
|
|
942
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
942
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
943
943
|
),
|
|
944
944
|
ct0: z.string().optional().describe(
|
|
945
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
945
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
946
946
|
),
|
|
947
947
|
proxy_url: z.string().optional().describe(
|
|
948
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
948
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
949
949
|
),
|
|
950
950
|
user_agent: z.string().optional().describe(
|
|
951
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
951
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
952
952
|
),
|
|
953
953
|
},
|
|
954
954
|
},
|
|
@@ -968,16 +968,16 @@ export const TOOLS = [
|
|
|
968
968
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
969
969
|
),
|
|
970
970
|
auth_token: z.string().optional().describe(
|
|
971
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
971
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
972
972
|
),
|
|
973
973
|
ct0: z.string().optional().describe(
|
|
974
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
974
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
975
975
|
),
|
|
976
976
|
proxy_url: z.string().optional().describe(
|
|
977
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
977
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
978
978
|
),
|
|
979
979
|
user_agent: z.string().optional().describe(
|
|
980
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
980
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
981
981
|
),
|
|
982
982
|
},
|
|
983
983
|
},
|
|
@@ -988,16 +988,16 @@ export const TOOLS = [
|
|
|
988
988
|
"List YOUR authenticated account's bookmark FOLDERS (X's internal name: collections), the named groups you can organize saved tweets into, separate from your flat bookmarks list (twitter_bookmarks). Requires an authenticated session behind your key. Returns each folder's id, name, and a cover image. Takes no arguments; your folders resolve from your session alone. Use twitter_bookmark_folder_timeline with a folder's id to read the tweets inside it.",
|
|
989
989
|
shape: {
|
|
990
990
|
auth_token: z.string().optional().describe(
|
|
991
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
991
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
992
992
|
),
|
|
993
993
|
ct0: z.string().optional().describe(
|
|
994
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
994
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
995
995
|
),
|
|
996
996
|
proxy_url: z.string().optional().describe(
|
|
997
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
997
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
998
998
|
),
|
|
999
999
|
user_agent: z.string().optional().describe(
|
|
1000
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1000
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1001
1001
|
),
|
|
1002
1002
|
},
|
|
1003
1003
|
},
|
|
@@ -1014,16 +1014,16 @@ export const TOOLS = [
|
|
|
1014
1014
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
1015
1015
|
),
|
|
1016
1016
|
auth_token: z.string().optional().describe(
|
|
1017
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1017
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1018
1018
|
),
|
|
1019
1019
|
ct0: z.string().optional().describe(
|
|
1020
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1020
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1021
1021
|
),
|
|
1022
1022
|
proxy_url: z.string().optional().describe(
|
|
1023
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1023
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1024
1024
|
),
|
|
1025
1025
|
user_agent: z.string().optional().describe(
|
|
1026
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1026
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1027
1027
|
),
|
|
1028
1028
|
},
|
|
1029
1029
|
},
|
|
@@ -1034,16 +1034,16 @@ export const TOOLS = [
|
|
|
1034
1034
|
"List YOUR authenticated account's Direct Message conversations (inbox), each with the participant and a conversation_id you can pass to twitter_dm_conversation. Requires an authenticated session behind your key. Read-only: this does not send DMs.",
|
|
1035
1035
|
shape: {
|
|
1036
1036
|
auth_token: z.string().optional().describe(
|
|
1037
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1037
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1038
1038
|
),
|
|
1039
1039
|
ct0: z.string().optional().describe(
|
|
1040
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1040
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1041
1041
|
),
|
|
1042
1042
|
proxy_url: z.string().optional().describe(
|
|
1043
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1043
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1044
1044
|
),
|
|
1045
1045
|
user_agent: z.string().optional().describe(
|
|
1046
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1046
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1047
1047
|
),
|
|
1048
1048
|
},
|
|
1049
1049
|
},
|
|
@@ -1057,16 +1057,16 @@ export const TOOLS = [
|
|
|
1057
1057
|
"The conversation_id from a twitter_dm_list entry identifying which DM thread to read.",
|
|
1058
1058
|
),
|
|
1059
1059
|
auth_token: z.string().optional().describe(
|
|
1060
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1060
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1061
1061
|
),
|
|
1062
1062
|
ct0: z.string().optional().describe(
|
|
1063
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1063
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1064
1064
|
),
|
|
1065
1065
|
proxy_url: z.string().optional().describe(
|
|
1066
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1066
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1067
1067
|
),
|
|
1068
1068
|
user_agent: z.string().optional().describe(
|
|
1069
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1069
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1070
1070
|
),
|
|
1071
1071
|
},
|
|
1072
1072
|
},
|
|
@@ -1085,16 +1085,16 @@ export const TOOLS = [
|
|
|
1085
1085
|
"The Direct Message body text to send (non-empty).",
|
|
1086
1086
|
),
|
|
1087
1087
|
auth_token: z.string().optional().describe(
|
|
1088
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1088
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1089
1089
|
),
|
|
1090
1090
|
ct0: z.string().optional().describe(
|
|
1091
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1091
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1092
1092
|
),
|
|
1093
1093
|
proxy_url: z.string().optional().describe(
|
|
1094
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1094
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1095
1095
|
),
|
|
1096
1096
|
user_agent: z.string().optional().describe(
|
|
1097
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1097
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1098
1098
|
),
|
|
1099
1099
|
},
|
|
1100
1100
|
},
|
|
@@ -1119,16 +1119,16 @@ export const TOOLS = [
|
|
|
1119
1119
|
"Optional. Comma-separated media id(s) from a prior media upload to attach (images/video).",
|
|
1120
1120
|
),
|
|
1121
1121
|
auth_token: z.string().optional().describe(
|
|
1122
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1122
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1123
1123
|
),
|
|
1124
1124
|
ct0: z.string().optional().describe(
|
|
1125
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1125
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1126
1126
|
),
|
|
1127
1127
|
proxy_url: z.string().optional().describe(
|
|
1128
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1128
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1129
1129
|
),
|
|
1130
1130
|
user_agent: z.string().optional().describe(
|
|
1131
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1131
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1132
1132
|
),
|
|
1133
1133
|
},
|
|
1134
1134
|
},
|
|
@@ -1148,16 +1148,257 @@ export const TOOLS = [
|
|
|
1148
1148
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1149
1149
|
),
|
|
1150
1150
|
auth_token: z.string().optional().describe(
|
|
1151
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1151
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1152
1152
|
),
|
|
1153
1153
|
ct0: z.string().optional().describe(
|
|
1154
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1154
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1155
1155
|
),
|
|
1156
1156
|
proxy_url: z.string().optional().describe(
|
|
1157
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1157
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1158
1158
|
),
|
|
1159
1159
|
user_agent: z.string().optional().describe(
|
|
1160
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1160
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1161
|
+
),
|
|
1162
|
+
},
|
|
1163
|
+
},
|
|
1164
|
+
{
|
|
1165
|
+
name: "twitter_update_profile",
|
|
1166
|
+
path: "/twitter/user/update_profile",
|
|
1167
|
+
method: "POST",
|
|
1168
|
+
write: true,
|
|
1169
|
+
jsonBody: true,
|
|
1170
|
+
description:
|
|
1171
|
+
"Change the display name, bio, location or link on your authenticated account's own X profile. This is a PARTIAL update: send only the fields you want to change and everything you omit keeps its current value, so passing just a name will NOT wipe the bio. An empty string does NOT clear a field: the API trims it and treats it exactly like an omitted field, so there is currently no way to blank a bio or a location through this tool. At least one of name, description, location or url is required, and a request whose only values are empty strings is refused with that same 400. It writes a real profile and takes effect immediately with no undo, so read the current values with twitter_user_info first if you may need to restore them. Requires an authenticated session behind your key. Returns ok and updated_fields, which echoes the field names you SENT rather than a diff against the previous profile.",
|
|
1172
|
+
shape: {
|
|
1173
|
+
name: z.string().optional().describe(
|
|
1174
|
+
"Optional. New display name, up to 50 characters. Omit to leave it unchanged.",
|
|
1175
|
+
),
|
|
1176
|
+
description: z.string().optional().describe(
|
|
1177
|
+
"Optional. New bio. An empty string does NOT clear it: the API trims empty values and treats them as absent, so the current bio is left alone either way.",
|
|
1178
|
+
),
|
|
1179
|
+
location: z.string().optional().describe(
|
|
1180
|
+
"Optional. New location text. Same rule: an empty string is treated as absent and leaves the current value alone.",
|
|
1181
|
+
),
|
|
1182
|
+
url: z.string().optional().describe(
|
|
1183
|
+
"Optional. New profile link.",
|
|
1184
|
+
),
|
|
1185
|
+
auth_token: z.string().optional().describe(
|
|
1186
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1187
|
+
),
|
|
1188
|
+
ct0: z.string().optional().describe(
|
|
1189
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1190
|
+
),
|
|
1191
|
+
proxy_url: z.string().optional().describe(
|
|
1192
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1193
|
+
),
|
|
1194
|
+
user_agent: z.string().optional().describe(
|
|
1195
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1196
|
+
),
|
|
1197
|
+
},
|
|
1198
|
+
},
|
|
1199
|
+
{
|
|
1200
|
+
name: "twitter_draft_create",
|
|
1201
|
+
path: "/twitter/draft/create",
|
|
1202
|
+
method: "POST",
|
|
1203
|
+
write: true,
|
|
1204
|
+
description:
|
|
1205
|
+
"Save a PRIVATE draft tweet on your authenticated account. Nothing is posted and nobody can see it: the draft lands in X's own composer under Drafts until a human publishes or deletes it. Use this when a person still has to approve the wording. Use twitter_create_tweet to post right now, and twitter_scheduled_create when it should go out on its own at a known time. Requires an authenticated session behind your key. Returns ok and draft_tweet_id. A null draft_tweet_id means X refused the create, answers 422, and is not billed.",
|
|
1206
|
+
shape: {
|
|
1207
|
+
text: z.string().min(1).describe(
|
|
1208
|
+
"The draft body text. Required: a draft with no text is refused with 400, so a media-only draft cannot be created through this API.",
|
|
1209
|
+
),
|
|
1210
|
+
reply_to: z.string().optional().describe(
|
|
1211
|
+
"Optional. Numeric id of the tweet this draft replies to. Send it as a string; X ids are 19 digits and an unquoted number is refused rather than silently rounded to a different tweet.",
|
|
1212
|
+
),
|
|
1213
|
+
quote: z.string().optional().describe(
|
|
1214
|
+
"Optional. Numeric id of the tweet this draft quotes. Send it as a string, same reason as reply_to.",
|
|
1215
|
+
),
|
|
1216
|
+
media_ids: z.string().optional().describe(
|
|
1217
|
+
"Optional. Comma-separated media id(s) from a prior media upload to attach. Up to 4.",
|
|
1218
|
+
),
|
|
1219
|
+
auth_token: z.string().optional().describe(
|
|
1220
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1221
|
+
),
|
|
1222
|
+
ct0: z.string().optional().describe(
|
|
1223
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1224
|
+
),
|
|
1225
|
+
proxy_url: z.string().optional().describe(
|
|
1226
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1227
|
+
),
|
|
1228
|
+
user_agent: z.string().optional().describe(
|
|
1229
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1230
|
+
),
|
|
1231
|
+
},
|
|
1232
|
+
},
|
|
1233
|
+
{
|
|
1234
|
+
name: "twitter_draft_edit",
|
|
1235
|
+
path: "/twitter/draft/edit",
|
|
1236
|
+
method: "POST",
|
|
1237
|
+
write: true,
|
|
1238
|
+
description:
|
|
1239
|
+
"Replace the contents of one existing PRIVATE draft on your authenticated account. The fields you send BECOME the draft rather than merging into it, so anything you leave out is dropped, including media. Get the id from twitter_draft_list or from the twitter_draft_create call that saved it. Still posts nothing. Requires an authenticated session behind your key. Returns ok and the draft_tweet_id you edited.",
|
|
1240
|
+
shape: {
|
|
1241
|
+
id: z.string().describe(
|
|
1242
|
+
"Numeric id of the draft to edit, from twitter_draft_list. Also accepted by the API as draft_tweet_id.",
|
|
1243
|
+
),
|
|
1244
|
+
text: z.string().min(1).describe(
|
|
1245
|
+
"The replacement draft body text. Required: an edit with no text is refused with 400.",
|
|
1246
|
+
),
|
|
1247
|
+
reply_to: z.string().optional().describe(
|
|
1248
|
+
"Optional. Numeric id of the tweet this draft replies to. Send it as a string.",
|
|
1249
|
+
),
|
|
1250
|
+
quote: z.string().optional().describe(
|
|
1251
|
+
"Optional. Numeric id of the tweet this draft quotes. Send it as a string.",
|
|
1252
|
+
),
|
|
1253
|
+
media_ids: z.string().optional().describe(
|
|
1254
|
+
"Optional. Comma-separated media id(s) to attach. Omitting this drops whatever media the draft had; it is not merged.",
|
|
1255
|
+
),
|
|
1256
|
+
auth_token: z.string().optional().describe(
|
|
1257
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1258
|
+
),
|
|
1259
|
+
ct0: z.string().optional().describe(
|
|
1260
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1261
|
+
),
|
|
1262
|
+
proxy_url: z.string().optional().describe(
|
|
1263
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1264
|
+
),
|
|
1265
|
+
user_agent: z.string().optional().describe(
|
|
1266
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1267
|
+
),
|
|
1268
|
+
},
|
|
1269
|
+
},
|
|
1270
|
+
{
|
|
1271
|
+
name: "twitter_draft_delete",
|
|
1272
|
+
path: "/twitter/draft/delete",
|
|
1273
|
+
method: "POST",
|
|
1274
|
+
write: true,
|
|
1275
|
+
destructive: true,
|
|
1276
|
+
description:
|
|
1277
|
+
"Delete one PRIVATE draft from your authenticated account by id. Irreversible, but low-stakes in a way twitter_delete_tweet is not: a draft was never public, so this retracts nothing and notifies nobody. Use twitter_delete_tweet for a post that is already live. Requires an authenticated session behind your key. Returns ok, deleted, and the draft_tweet_id you targeted.",
|
|
1278
|
+
shape: {
|
|
1279
|
+
id: z.string().describe(
|
|
1280
|
+
"Numeric id of the draft to delete, from twitter_draft_list. Also accepted by the API as draft_tweet_id.",
|
|
1281
|
+
),
|
|
1282
|
+
auth_token: z.string().optional().describe(
|
|
1283
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1284
|
+
),
|
|
1285
|
+
ct0: z.string().optional().describe(
|
|
1286
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1287
|
+
),
|
|
1288
|
+
proxy_url: z.string().optional().describe(
|
|
1289
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1290
|
+
),
|
|
1291
|
+
user_agent: z.string().optional().describe(
|
|
1292
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1293
|
+
),
|
|
1294
|
+
},
|
|
1295
|
+
},
|
|
1296
|
+
{
|
|
1297
|
+
name: "twitter_draft_list",
|
|
1298
|
+
path: "/twitter/draft/list",
|
|
1299
|
+
description:
|
|
1300
|
+
"List the PRIVATE drafts saved on your authenticated account. This is where a draft id comes from for an edit or a delete. Reads only your own account: drafts are private to the account that holds them, so there is no way to read anyone else's. Requires an authenticated session behind your key. Returns drafts (each with draft_tweet_id, text, thread_truncated), count, and sometimes partial. thread_truncated true means the draft is a THREAD and text is only its first tweet, which is a parse that succeeded. partial true means X's answer was read but not fully understood, which is NOT 'you have no drafts': it is absent entirely on a clean read, so an empty drafts array with no partial flag means the account genuinely has none. One call returns the whole list; there is no cursor and no timestamp on a draft row.",
|
|
1301
|
+
shape: {
|
|
1302
|
+
ascending: z.string().optional().describe(
|
|
1303
|
+
"Optional. Pass the STRING \"true\" to ask X for the oldest draft first. Anything else, including omitting it, sends ascending=false, which is what X's own composer sends. The resulting order is X's and is not re-sorted, so do not promise a user newest-first.",
|
|
1304
|
+
),
|
|
1305
|
+
auth_token: z.string().optional().describe(
|
|
1306
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1307
|
+
),
|
|
1308
|
+
ct0: z.string().optional().describe(
|
|
1309
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1310
|
+
),
|
|
1311
|
+
proxy_url: z.string().optional().describe(
|
|
1312
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1313
|
+
),
|
|
1314
|
+
user_agent: z.string().optional().describe(
|
|
1315
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1316
|
+
),
|
|
1317
|
+
},
|
|
1318
|
+
},
|
|
1319
|
+
{
|
|
1320
|
+
name: "twitter_scheduled_create",
|
|
1321
|
+
path: "/twitter/scheduled/create",
|
|
1322
|
+
method: "POST",
|
|
1323
|
+
write: true,
|
|
1324
|
+
description:
|
|
1325
|
+
"Schedule a tweet to POST PUBLICLY at a future instant from your authenticated account. This is NOT a draft: it goes out on its own at execute_at whether or not anyone is watching, unless it is cancelled first with twitter_scheduled_delete. Use twitter_draft_create when a human still has to approve the wording. execute_at is epoch SECONDS, never milliseconds: Date.now() returns milliseconds, so divide by 1000, and a millisecond value is refused with a message naming the unit rather than scheduling the post tens of thousands of years out. It must also be strictly in the future. Requires an authenticated session behind your key. Returns ok, scheduled_tweet_id, and the execute_at you sent.",
|
|
1326
|
+
shape: {
|
|
1327
|
+
text: z.string().min(1).describe(
|
|
1328
|
+
"The tweet body text that will be published. Required: a scheduled post with no text is refused with 400.",
|
|
1329
|
+
),
|
|
1330
|
+
execute_at: z.number().int().describe(
|
|
1331
|
+
"When to post, as epoch SECONDS in the future (for example 1829752200). NOT milliseconds: a value of 1000000000000 or more is rejected as a millisecond timestamp. Also accepted by the API as schedule_at.",
|
|
1332
|
+
),
|
|
1333
|
+
reply_to: z.string().optional().describe(
|
|
1334
|
+
"Optional. Numeric id of the tweet this post replies to. Send it as a string.",
|
|
1335
|
+
),
|
|
1336
|
+
quote: z.string().optional().describe(
|
|
1337
|
+
"Optional. Numeric id of the tweet this post quotes. Send it as a string.",
|
|
1338
|
+
),
|
|
1339
|
+
media_ids: z.string().optional().describe(
|
|
1340
|
+
"Optional. Comma-separated media id(s) from a prior media upload to attach. Up to 4.",
|
|
1341
|
+
),
|
|
1342
|
+
auth_token: z.string().optional().describe(
|
|
1343
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1344
|
+
),
|
|
1345
|
+
ct0: z.string().optional().describe(
|
|
1346
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1347
|
+
),
|
|
1348
|
+
proxy_url: z.string().optional().describe(
|
|
1349
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1350
|
+
),
|
|
1351
|
+
user_agent: z.string().optional().describe(
|
|
1352
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1353
|
+
),
|
|
1354
|
+
},
|
|
1355
|
+
},
|
|
1356
|
+
{
|
|
1357
|
+
name: "twitter_scheduled_delete",
|
|
1358
|
+
path: "/twitter/scheduled/delete",
|
|
1359
|
+
method: "POST",
|
|
1360
|
+
write: true,
|
|
1361
|
+
destructive: true,
|
|
1362
|
+
description:
|
|
1363
|
+
"Cancel one PENDING scheduled post on your authenticated account so it never publishes. Only works before its execute_at: once the post has gone out there is no scheduled row left to cancel, and the thing to remove is the resulting tweet, with twitter_delete_tweet. Get the id from twitter_scheduled_list. Requires an authenticated session behind your key. Returns ok, deleted, and the scheduled_tweet_id you targeted.",
|
|
1364
|
+
shape: {
|
|
1365
|
+
id: z.string().describe(
|
|
1366
|
+
"Numeric id of the scheduled post to cancel, from twitter_scheduled_list. Also accepted by the API as scheduled_tweet_id.",
|
|
1367
|
+
),
|
|
1368
|
+
auth_token: z.string().optional().describe(
|
|
1369
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1370
|
+
),
|
|
1371
|
+
ct0: z.string().optional().describe(
|
|
1372
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1373
|
+
),
|
|
1374
|
+
proxy_url: z.string().optional().describe(
|
|
1375
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1376
|
+
),
|
|
1377
|
+
user_agent: z.string().optional().describe(
|
|
1378
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1379
|
+
),
|
|
1380
|
+
},
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
name: "twitter_scheduled_list",
|
|
1384
|
+
path: "/twitter/scheduled/list",
|
|
1385
|
+
description:
|
|
1386
|
+
"List the posts QUEUED to publish on your authenticated account. This is where a scheduled id comes from for a cancel, and it is worth reading before scheduling anything so a retry in your own code does not quietly queue the same post twice. Rows carry X's own state label verbatim (for example Scheduled), and a row that has already published leaves the queue and becomes an ordinary tweet. Requires an authenticated session behind your key. Returns scheduled (each with scheduled_tweet_id, text, thread_truncated, execute_at, state), count, and sometimes partial. thread_truncated is INFERRED on this endpoint rather than captured: a scheduled row carries the same compose payload a draft row does, and the captured scheduled row elides that body, so the flag is sound and fail-safe (an absent key yields false) but has not been seen true. execute_at comes back in epoch SECONDS: X answers this operation in milliseconds and the value is normalised, so a timestamp read here can be passed straight back into twitter_scheduled_create. partial true means X's answer was read but not fully understood, which is not the same as an empty queue; on a clean read it is absent entirely.",
|
|
1387
|
+
shape: {
|
|
1388
|
+
ascending: z.string().optional().describe(
|
|
1389
|
+
"Optional. Pass the STRING \"true\" for the oldest row first. Anything else, including omitting it, returns X's default order.",
|
|
1390
|
+
),
|
|
1391
|
+
auth_token: z.string().optional().describe(
|
|
1392
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1393
|
+
),
|
|
1394
|
+
ct0: z.string().optional().describe(
|
|
1395
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1396
|
+
),
|
|
1397
|
+
proxy_url: z.string().optional().describe(
|
|
1398
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1399
|
+
),
|
|
1400
|
+
user_agent: z.string().optional().describe(
|
|
1401
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1161
1402
|
),
|
|
1162
1403
|
},
|
|
1163
1404
|
},
|
|
@@ -1176,16 +1417,16 @@ export const TOOLS = [
|
|
|
1176
1417
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1177
1418
|
),
|
|
1178
1419
|
auth_token: z.string().optional().describe(
|
|
1179
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1420
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1180
1421
|
),
|
|
1181
1422
|
ct0: z.string().optional().describe(
|
|
1182
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1423
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1183
1424
|
),
|
|
1184
1425
|
proxy_url: z.string().optional().describe(
|
|
1185
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1426
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1186
1427
|
),
|
|
1187
1428
|
user_agent: z.string().optional().describe(
|
|
1188
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1429
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1189
1430
|
),
|
|
1190
1431
|
},
|
|
1191
1432
|
},
|
|
@@ -1205,16 +1446,16 @@ export const TOOLS = [
|
|
|
1205
1446
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1206
1447
|
),
|
|
1207
1448
|
auth_token: z.string().optional().describe(
|
|
1208
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1449
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1209
1450
|
),
|
|
1210
1451
|
ct0: z.string().optional().describe(
|
|
1211
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1452
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1212
1453
|
),
|
|
1213
1454
|
proxy_url: z.string().optional().describe(
|
|
1214
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1455
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1215
1456
|
),
|
|
1216
1457
|
user_agent: z.string().optional().describe(
|
|
1217
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1458
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1218
1459
|
),
|
|
1219
1460
|
},
|
|
1220
1461
|
},
|
|
@@ -1233,16 +1474,16 @@ export const TOOLS = [
|
|
|
1233
1474
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1234
1475
|
),
|
|
1235
1476
|
auth_token: z.string().optional().describe(
|
|
1236
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1477
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1237
1478
|
),
|
|
1238
1479
|
ct0: z.string().optional().describe(
|
|
1239
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1480
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1240
1481
|
),
|
|
1241
1482
|
proxy_url: z.string().optional().describe(
|
|
1242
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1483
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1243
1484
|
),
|
|
1244
1485
|
user_agent: z.string().optional().describe(
|
|
1245
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1486
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1246
1487
|
),
|
|
1247
1488
|
},
|
|
1248
1489
|
},
|
|
@@ -1262,16 +1503,16 @@ export const TOOLS = [
|
|
|
1262
1503
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1263
1504
|
),
|
|
1264
1505
|
auth_token: z.string().optional().describe(
|
|
1265
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1506
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1266
1507
|
),
|
|
1267
1508
|
ct0: z.string().optional().describe(
|
|
1268
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1509
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1269
1510
|
),
|
|
1270
1511
|
proxy_url: z.string().optional().describe(
|
|
1271
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1512
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1272
1513
|
),
|
|
1273
1514
|
user_agent: z.string().optional().describe(
|
|
1274
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1515
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1275
1516
|
),
|
|
1276
1517
|
},
|
|
1277
1518
|
},
|
|
@@ -1290,16 +1531,16 @@ export const TOOLS = [
|
|
|
1290
1531
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1291
1532
|
),
|
|
1292
1533
|
auth_token: z.string().optional().describe(
|
|
1293
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1534
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1294
1535
|
),
|
|
1295
1536
|
ct0: z.string().optional().describe(
|
|
1296
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1537
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1297
1538
|
),
|
|
1298
1539
|
proxy_url: z.string().optional().describe(
|
|
1299
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1540
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1300
1541
|
),
|
|
1301
1542
|
user_agent: z.string().optional().describe(
|
|
1302
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1543
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1303
1544
|
),
|
|
1304
1545
|
},
|
|
1305
1546
|
},
|
|
@@ -1319,16 +1560,16 @@ export const TOOLS = [
|
|
|
1319
1560
|
"Full tweet URL, e.g. \"https://x.com/elonmusk/status/1789012345678901234\". Provide exactly one of id or url.",
|
|
1320
1561
|
),
|
|
1321
1562
|
auth_token: z.string().optional().describe(
|
|
1322
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1563
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1323
1564
|
),
|
|
1324
1565
|
ct0: z.string().optional().describe(
|
|
1325
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1566
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1326
1567
|
),
|
|
1327
1568
|
proxy_url: z.string().optional().describe(
|
|
1328
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1569
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1329
1570
|
),
|
|
1330
1571
|
user_agent: z.string().optional().describe(
|
|
1331
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1572
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1332
1573
|
),
|
|
1333
1574
|
},
|
|
1334
1575
|
},
|
|
@@ -1344,16 +1585,16 @@ export const TOOLS = [
|
|
|
1344
1585
|
"Numeric user id of the account to follow. Resolve a handle to a user_id first with twitter_user_info.",
|
|
1345
1586
|
),
|
|
1346
1587
|
auth_token: z.string().optional().describe(
|
|
1347
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1588
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1348
1589
|
),
|
|
1349
1590
|
ct0: z.string().optional().describe(
|
|
1350
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1591
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1351
1592
|
),
|
|
1352
1593
|
proxy_url: z.string().optional().describe(
|
|
1353
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1594
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1354
1595
|
),
|
|
1355
1596
|
user_agent: z.string().optional().describe(
|
|
1356
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1597
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1357
1598
|
),
|
|
1358
1599
|
},
|
|
1359
1600
|
},
|
|
@@ -1370,16 +1611,16 @@ export const TOOLS = [
|
|
|
1370
1611
|
"Numeric user id of the account to unfollow.",
|
|
1371
1612
|
),
|
|
1372
1613
|
auth_token: z.string().optional().describe(
|
|
1373
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1614
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1374
1615
|
),
|
|
1375
1616
|
ct0: z.string().optional().describe(
|
|
1376
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1617
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1377
1618
|
),
|
|
1378
1619
|
proxy_url: z.string().optional().describe(
|
|
1379
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1620
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1380
1621
|
),
|
|
1381
1622
|
user_agent: z.string().optional().describe(
|
|
1382
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1623
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1383
1624
|
),
|
|
1384
1625
|
},
|
|
1385
1626
|
},
|
|
@@ -1398,16 +1639,16 @@ export const TOOLS = [
|
|
|
1398
1639
|
"Numeric user id of the account to add. Resolve a handle to a user_id first with twitter_user_info.",
|
|
1399
1640
|
),
|
|
1400
1641
|
auth_token: z.string().optional().describe(
|
|
1401
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1642
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1402
1643
|
),
|
|
1403
1644
|
ct0: z.string().optional().describe(
|
|
1404
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1645
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1405
1646
|
),
|
|
1406
1647
|
proxy_url: z.string().optional().describe(
|
|
1407
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1648
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1408
1649
|
),
|
|
1409
1650
|
user_agent: z.string().optional().describe(
|
|
1410
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1651
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1411
1652
|
),
|
|
1412
1653
|
},
|
|
1413
1654
|
},
|
|
@@ -1427,16 +1668,16 @@ export const TOOLS = [
|
|
|
1427
1668
|
"Numeric user id of the account to remove. Resolve a handle to a user_id first with twitter_user_info.",
|
|
1428
1669
|
),
|
|
1429
1670
|
auth_token: z.string().optional().describe(
|
|
1430
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1671
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1431
1672
|
),
|
|
1432
1673
|
ct0: z.string().optional().describe(
|
|
1433
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1674
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1434
1675
|
),
|
|
1435
1676
|
proxy_url: z.string().optional().describe(
|
|
1436
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1677
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1437
1678
|
),
|
|
1438
1679
|
user_agent: z.string().optional().describe(
|
|
1439
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1680
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1440
1681
|
),
|
|
1441
1682
|
},
|
|
1442
1683
|
},
|
|
@@ -1458,16 +1699,16 @@ export const TOOLS = [
|
|
|
1458
1699
|
"Optional. Pass the string \"true\" to create a PRIVATE List. Defaults to false (public), because a public List can be made private later while a leak cannot be undone. Note a private List is not readable by the public List read tools.",
|
|
1459
1700
|
),
|
|
1460
1701
|
auth_token: z.string().optional().describe(
|
|
1461
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1702
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1462
1703
|
),
|
|
1463
1704
|
ct0: z.string().optional().describe(
|
|
1464
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1705
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1465
1706
|
),
|
|
1466
1707
|
proxy_url: z.string().optional().describe(
|
|
1467
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1708
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1468
1709
|
),
|
|
1469
1710
|
user_agent: z.string().optional().describe(
|
|
1470
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1711
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1471
1712
|
),
|
|
1472
1713
|
},
|
|
1473
1714
|
},
|
|
@@ -1549,16 +1790,16 @@ export const TOOLS = [
|
|
|
1549
1790
|
"Base64-encoded image bytes to upload. Sent in the JSON request body.",
|
|
1550
1791
|
),
|
|
1551
1792
|
auth_token: z.string().optional().describe(
|
|
1552
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1793
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1553
1794
|
),
|
|
1554
1795
|
ct0: z.string().optional().describe(
|
|
1555
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1796
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1556
1797
|
),
|
|
1557
1798
|
proxy_url: z.string().optional().describe(
|
|
1558
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1799
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1559
1800
|
),
|
|
1560
1801
|
user_agent: z.string().optional().describe(
|
|
1561
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1802
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1562
1803
|
),
|
|
1563
1804
|
},
|
|
1564
1805
|
},
|
|
@@ -1572,16 +1813,16 @@ export const TOOLS = [
|
|
|
1572
1813
|
"Numeric media id returned by twitter_media_upload, e.g. '1234567890123456789'.",
|
|
1573
1814
|
),
|
|
1574
1815
|
auth_token: z.string().optional().describe(
|
|
1575
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1816
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1576
1817
|
),
|
|
1577
1818
|
ct0: z.string().optional().describe(
|
|
1578
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1819
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1579
1820
|
),
|
|
1580
1821
|
proxy_url: z.string().optional().describe(
|
|
1581
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1822
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1582
1823
|
),
|
|
1583
1824
|
user_agent: z.string().optional().describe(
|
|
1584
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1825
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1585
1826
|
),
|
|
1586
1827
|
},
|
|
1587
1828
|
},
|
|
@@ -1594,16 +1835,16 @@ export const TOOLS = [
|
|
|
1594
1835
|
"Start a new DRAFT article ('Note') AS your authenticated account. No input required. Returns the new article's id (pass this to twitter_article_update_title / twitter_article_update_content / twitter_article_publish / twitter_article_delete) and its full article object. Requires an authenticated session with write capability behind your key.",
|
|
1595
1836
|
shape: {
|
|
1596
1837
|
auth_token: z.string().optional().describe(
|
|
1597
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1838
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1598
1839
|
),
|
|
1599
1840
|
ct0: z.string().optional().describe(
|
|
1600
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1841
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1601
1842
|
),
|
|
1602
1843
|
proxy_url: z.string().optional().describe(
|
|
1603
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1844
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1604
1845
|
),
|
|
1605
1846
|
user_agent: z.string().optional().describe(
|
|
1606
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1847
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1607
1848
|
),
|
|
1608
1849
|
},
|
|
1609
1850
|
},
|
|
@@ -1625,16 +1866,16 @@ export const TOOLS = [
|
|
|
1625
1866
|
"Optional. X's media category for the upload. Defaults to 'DraftTweetImage', which is what X's own article editor sends for a cover image. Only set this if you know X expects a different category.",
|
|
1626
1867
|
),
|
|
1627
1868
|
auth_token: z.string().optional().describe(
|
|
1628
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1869
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1629
1870
|
),
|
|
1630
1871
|
ct0: z.string().optional().describe(
|
|
1631
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1872
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1632
1873
|
),
|
|
1633
1874
|
proxy_url: z.string().optional().describe(
|
|
1634
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1875
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1635
1876
|
),
|
|
1636
1877
|
user_agent: z.string().optional().describe(
|
|
1637
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1878
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1638
1879
|
),
|
|
1639
1880
|
},
|
|
1640
1881
|
},
|
|
@@ -1653,16 +1894,16 @@ export const TOOLS = [
|
|
|
1653
1894
|
"The new article title (non-empty).",
|
|
1654
1895
|
),
|
|
1655
1896
|
auth_token: z.string().optional().describe(
|
|
1656
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1897
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1657
1898
|
),
|
|
1658
1899
|
ct0: z.string().optional().describe(
|
|
1659
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1900
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1660
1901
|
),
|
|
1661
1902
|
proxy_url: z.string().optional().describe(
|
|
1662
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1903
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1663
1904
|
),
|
|
1664
1905
|
user_agent: z.string().optional().describe(
|
|
1665
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1906
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1666
1907
|
),
|
|
1667
1908
|
},
|
|
1668
1909
|
},
|
|
@@ -1682,16 +1923,16 @@ export const TOOLS = [
|
|
|
1682
1923
|
"Draft.js content state object: { blocks: [...], entityMap: [...] }. You construct this JSON yourself (it is the same shape the X Article editor produces); it is passed through to X verbatim and not validated here.",
|
|
1683
1924
|
),
|
|
1684
1925
|
auth_token: z.string().optional().describe(
|
|
1685
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1926
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1686
1927
|
),
|
|
1687
1928
|
ct0: z.string().optional().describe(
|
|
1688
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1929
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1689
1930
|
),
|
|
1690
1931
|
proxy_url: z.string().optional().describe(
|
|
1691
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1932
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1692
1933
|
),
|
|
1693
1934
|
user_agent: z.string().optional().describe(
|
|
1694
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1935
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1695
1936
|
),
|
|
1696
1937
|
},
|
|
1697
1938
|
},
|
|
@@ -1716,16 +1957,16 @@ export const TOOLS = [
|
|
|
1716
1957
|
"Optional. Short caption text for the announcement tweet, up to 256 characters.",
|
|
1717
1958
|
),
|
|
1718
1959
|
auth_token: z.string().optional().describe(
|
|
1719
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1960
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1720
1961
|
),
|
|
1721
1962
|
ct0: z.string().optional().describe(
|
|
1722
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1963
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1723
1964
|
),
|
|
1724
1965
|
proxy_url: z.string().optional().describe(
|
|
1725
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1966
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1726
1967
|
),
|
|
1727
1968
|
user_agent: z.string().optional().describe(
|
|
1728
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1969
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1729
1970
|
),
|
|
1730
1971
|
},
|
|
1731
1972
|
},
|
|
@@ -1742,16 +1983,16 @@ export const TOOLS = [
|
|
|
1742
1983
|
"The article's entity id, from twitter_article_create or twitter_article_list. Must currently be Published.",
|
|
1743
1984
|
),
|
|
1744
1985
|
auth_token: z.string().optional().describe(
|
|
1745
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
1986
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1746
1987
|
),
|
|
1747
1988
|
ct0: z.string().optional().describe(
|
|
1748
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
1989
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1749
1990
|
),
|
|
1750
1991
|
proxy_url: z.string().optional().describe(
|
|
1751
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
1992
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1752
1993
|
),
|
|
1753
1994
|
user_agent: z.string().optional().describe(
|
|
1754
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
1995
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1755
1996
|
),
|
|
1756
1997
|
},
|
|
1757
1998
|
},
|
|
@@ -1771,16 +2012,16 @@ export const TOOLS = [
|
|
|
1771
2012
|
"OWNER-ONLY form. The article's own entity id, from twitter_article_create or twitter_article_list (e.g. 'ArticleEntity:1234567890123456789', or the bare numeric rest_id). Requires an authenticated session. Provide exactly one of id, url, or article_id.",
|
|
1772
2013
|
),
|
|
1773
2014
|
auth_token: z.string().optional().describe(
|
|
1774
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
2015
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1775
2016
|
),
|
|
1776
2017
|
ct0: z.string().optional().describe(
|
|
1777
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
2018
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1778
2019
|
),
|
|
1779
2020
|
proxy_url: z.string().optional().describe(
|
|
1780
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
2021
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1781
2022
|
),
|
|
1782
2023
|
user_agent: z.string().optional().describe(
|
|
1783
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
2024
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1784
2025
|
),
|
|
1785
2026
|
},
|
|
1786
2027
|
},
|
|
@@ -1800,16 +2041,16 @@ export const TOOLS = [
|
|
|
1800
2041
|
"Opaque pagination cursor from a previous response's next_cursor field. Omit on the first call; pass on subsequent calls to fetch the next page.",
|
|
1801
2042
|
),
|
|
1802
2043
|
auth_token: z.string().optional().describe(
|
|
1803
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
2044
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1804
2045
|
),
|
|
1805
2046
|
ct0: z.string().optional().describe(
|
|
1806
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
2047
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1807
2048
|
),
|
|
1808
2049
|
proxy_url: z.string().optional().describe(
|
|
1809
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
2050
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1810
2051
|
),
|
|
1811
2052
|
user_agent: z.string().optional().describe(
|
|
1812
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
2053
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1813
2054
|
),
|
|
1814
2055
|
},
|
|
1815
2056
|
},
|
|
@@ -1832,16 +2073,16 @@ export const TOOLS = [
|
|
|
1832
2073
|
"Optional fast-path hint: the announcement tweet id, only meaningful when lifecycle is 'published'. Omit to let the server resolve it from your own article list.",
|
|
1833
2074
|
),
|
|
1834
2075
|
auth_token: z.string().optional().describe(
|
|
1835
|
-
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0).
|
|
2076
|
+
"Optional. The account's auth_token cookie, to act AS that account for this call (must be paired with ct0). Travels out of band: as the x-auth-token request header on most tools, or inside the JSON request body on the tools that take one. Never a query parameter, so it never reaches a URL or an access log.",
|
|
1836
2077
|
),
|
|
1837
2078
|
ct0: z.string().optional().describe(
|
|
1838
|
-
"Optional. The account's ct0 cookie, paired with auth_token.
|
|
2079
|
+
"Optional. The account's ct0 cookie, paired with auth_token. Same transport as auth_token: the x-ct0 request header, or the JSON body on a body-taking tool. Never a query parameter.",
|
|
1839
2080
|
),
|
|
1840
2081
|
proxy_url: z.string().optional().describe(
|
|
1841
|
-
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url header.",
|
|
2082
|
+
"Optional. Residential proxy URL to egress this call through. Recommended for writes: X soft-blocks writes from datacenter IPs as automated. Sent as the x-proxy-url request header, or in the JSON body on a body-taking tool.",
|
|
1842
2083
|
),
|
|
1843
2084
|
user_agent: z.string().optional().describe(
|
|
1844
|
-
"Optional. User-Agent string to send for this session. Sent as the x-user-agent header.",
|
|
2085
|
+
"Optional. User-Agent string to send for this session. Sent as the x-user-agent request header, or in the JSON body on a body-taking tool.",
|
|
1845
2086
|
),
|
|
1846
2087
|
},
|
|
1847
2088
|
},
|