@apteva/integrations 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/package.json +1 -1
  2. package/src/apps/activecampaign.json +209 -0
  3. package/src/apps/activecollab.json +417 -0
  4. package/src/apps/airtable.json +235 -0
  5. package/src/apps/alpaca-trading.json +1554 -0
  6. package/src/apps/amadeus.json +225 -0
  7. package/src/apps/anthropic-api.json +96 -0
  8. package/src/apps/apify.json +203 -0
  9. package/src/apps/apollo.json +748 -0
  10. package/src/apps/apple-podcasts.json +116 -0
  11. package/src/apps/archive-api.json +104 -0
  12. package/src/apps/archive.json +151 -0
  13. package/src/apps/arduino-cloud.json +301 -0
  14. package/src/apps/arest.json +492 -0
  15. package/src/apps/asana.json +184 -0
  16. package/src/apps/ashby.json +176 -0
  17. package/src/apps/assemblyai.json +163 -0
  18. package/src/apps/attio.json +243 -0
  19. package/src/apps/aws-cloudfront.json +132 -0
  20. package/src/apps/aws-dynamodb.json +295 -0
  21. package/src/apps/aws-ec2.json +184 -0
  22. package/src/apps/aws-lambda.json +361 -0
  23. package/src/apps/aws-route53.json +110 -0
  24. package/src/apps/aws-s3.json +303 -0
  25. package/src/apps/aws-ses.json +556 -0
  26. package/src/apps/aws-sns.json +217 -0
  27. package/src/apps/aws-sqs.json +234 -0
  28. package/src/apps/axiom.json +123 -0
  29. package/src/apps/beehiiv.json +252 -0
  30. package/src/apps/binance-trading.json +555 -0
  31. package/src/apps/bitly.json +175 -0
  32. package/src/apps/bloobirds.json +246 -0
  33. package/src/apps/bluesky.json +201 -0
  34. package/src/apps/blynk.json +316 -0
  35. package/src/apps/booking-com.json +144 -0
  36. package/src/apps/box.json +289 -0
  37. package/src/apps/brevo.json +1423 -0
  38. package/src/apps/browse-ai.json +148 -0
  39. package/src/apps/bunny-cdn.json +330 -0
  40. package/src/apps/bunny-stream.json +387 -0
  41. package/src/apps/cal-com.json +240 -0
  42. package/src/apps/calendly.json +578 -0
  43. package/src/apps/calflow-calendar.json +706 -0
  44. package/src/apps/callrail.json +190 -0
  45. package/src/apps/canva.json +197 -0
  46. package/src/apps/cartesia.json +201 -0
  47. package/src/apps/castbase.json +753 -0
  48. package/src/apps/chargebee.json +226 -0
  49. package/src/apps/cleanster.json +359 -0
  50. package/src/apps/clicksend.json +278 -0
  51. package/src/apps/clickup.json +266 -0
  52. package/src/apps/clipkit.json +517 -0
  53. package/src/apps/close.json +359 -0
  54. package/src/apps/cloudflare.json +329 -0
  55. package/src/apps/cloudinary.json +164 -0
  56. package/src/apps/coda.json +288 -0
  57. package/src/apps/cohere.json +158 -0
  58. package/src/apps/coinbase.json +268 -0
  59. package/src/apps/composio.json +146 -0
  60. package/src/apps/confluence.json +270 -0
  61. package/src/apps/consensus.json +879 -0
  62. package/src/apps/contabo.json +733 -0
  63. package/src/apps/convertkit.json +211 -0
  64. package/src/apps/core-image.json +426 -0
  65. package/src/apps/core-video.json +1246 -0
  66. package/src/apps/craftcloud.json +298 -0
  67. package/src/apps/datadog.json +401 -0
  68. package/src/apps/dataforseo.json +1273 -0
  69. package/src/apps/deepseek.json +150 -0
  70. package/src/apps/dialpad.json +229 -0
  71. package/src/apps/discord.json +239 -0
  72. package/src/apps/dnsimple.json +405 -0
  73. package/src/apps/docusign.json +214 -0
  74. package/src/apps/docx.json +282 -0
  75. package/src/apps/dropbox.json +185 -0
  76. package/src/apps/duffel.json +231 -0
  77. package/src/apps/dux-soup.json +694 -0
  78. package/src/apps/dynadot.json +250 -0
  79. package/src/apps/elevenlabs.json +327 -0
  80. package/src/apps/eventbrite-events.json +598 -0
  81. package/src/apps/facebook-ads.json +1399 -0
  82. package/src/apps/facebook-api.json +282 -0
  83. package/src/apps/fal-ai.json +400 -0
  84. package/src/apps/fathom.json +86 -0
  85. package/src/apps/figma.json +162 -0
  86. package/src/apps/filestack.json +159 -0
  87. package/src/apps/firebase.json +271 -0
  88. package/src/apps/firecrawl.json +278 -0
  89. package/src/apps/folk.json +564 -0
  90. package/src/apps/forecast-app.json +377 -0
  91. package/src/apps/freshdesk.json +283 -0
  92. package/src/apps/gemini.json +528 -0
  93. package/src/apps/ghost.json +439 -0
  94. package/src/apps/gigs-marketplace.json +1442 -0
  95. package/src/apps/github.json +1479 -47
  96. package/src/apps/gitlab.json +448 -0
  97. package/src/apps/gmail.json +839 -28
  98. package/src/apps/gohighlevel.json +596 -0
  99. package/src/apps/google-ads.json +270 -0
  100. package/src/apps/google-calendar.json +996 -36
  101. package/src/apps/google-docs.json +278 -0
  102. package/src/apps/google-drive.json +360 -0
  103. package/src/apps/google-maps.json +473 -0
  104. package/src/apps/google-sheets.json +330 -0
  105. package/src/apps/gooten.json +411 -0
  106. package/src/apps/gravity-forms.json +385 -0
  107. package/src/apps/gusto.json +171 -0
  108. package/src/apps/hackernews.json +221 -0
  109. package/src/apps/harmonic.json +86 -0
  110. package/src/apps/helpscout.json +664 -0
  111. package/src/apps/hetzner.json +658 -0
  112. package/src/apps/heygen.json +184 -0
  113. package/src/apps/heyreach.json +388 -0
  114. package/src/apps/hospitable.json +340 -0
  115. package/src/apps/hostinger.json +374 -0
  116. package/src/apps/hubspot.json +682 -0
  117. package/src/apps/huggingface.json +97 -0
  118. package/src/apps/hunter.json +504 -0
  119. package/src/apps/ig-trading.json +849 -0
  120. package/src/apps/imaterialise.json +349 -0
  121. package/src/apps/instagram-api.json +538 -0
  122. package/src/apps/intercom.json +648 -0
  123. package/src/apps/jira.json +226 -0
  124. package/src/apps/klaviyo.json +199 -0
  125. package/src/apps/kling-ai.json +206 -0
  126. package/src/apps/kraken.json +870 -0
  127. package/src/apps/late.json +1056 -0
  128. package/src/apps/leadpages.json +243 -0
  129. package/src/apps/learning-platform.json +2244 -0
  130. package/src/apps/linear.json +184 -57
  131. package/src/apps/linkedin.json +179 -0
  132. package/src/apps/listen-notes.json +136 -0
  133. package/src/apps/lnk-bio.json +125 -0
  134. package/src/apps/loom.json +188 -0
  135. package/src/apps/luma.json +280 -0
  136. package/src/apps/mailchimp.json +238 -0
  137. package/src/apps/mailgun.json +310 -0
  138. package/src/apps/manychat.json +312 -0
  139. package/src/apps/marin-software.json +843 -0
  140. package/src/apps/media-downloader.json +157 -0
  141. package/src/apps/meetup-events.json +361 -0
  142. package/src/apps/meshy.json +248 -0
  143. package/src/apps/microsoft-teams.json +162 -0
  144. package/src/apps/monday.json +213 -0
  145. package/src/apps/mongodb-atlas.json +467 -0
  146. package/src/apps/namecheap.json +252 -0
  147. package/src/apps/nexar.json +289 -0
  148. package/src/apps/notion.json +530 -50
  149. package/src/apps/omnikit-analytics.json +374 -0
  150. package/src/apps/omnikit-api-gateway.json +660 -0
  151. package/src/apps/omnikit-billing.json +1781 -0
  152. package/src/apps/omnikit-cms.json +899 -0
  153. package/src/apps/omnikit-functions.json +329 -0
  154. package/src/apps/omnikit-intelligence.json +650 -0
  155. package/src/apps/omnikit-management.json +214 -0
  156. package/src/apps/omnikit-media.json +646 -0
  157. package/src/apps/omnikit-messaging.json +1826 -0
  158. package/src/apps/omnikit-redirects.json +209 -0
  159. package/src/apps/omnikit-webhooks.json +269 -0
  160. package/src/apps/omnikit-workflows.json +323 -0
  161. package/src/apps/openai-api.json +462 -0
  162. package/src/apps/openmeteo-weather.json +75 -0
  163. package/src/apps/optinmonster.json +244 -0
  164. package/src/apps/paidkit.json +1218 -0
  165. package/src/apps/paypal.json +254 -0
  166. package/src/apps/pdf.json +366 -0
  167. package/src/apps/pipedrive.json +255 -0
  168. package/src/apps/polymarket.json +653 -0
  169. package/src/apps/porkbun.json +417 -0
  170. package/src/apps/portfolio.json +501 -0
  171. package/src/apps/postmark.json +257 -0
  172. package/src/apps/printful.json +273 -0
  173. package/src/apps/printify.json +295 -0
  174. package/src/apps/producthunt.json +346 -0
  175. package/src/apps/pushover-notifications.json +113 -0
  176. package/src/apps/qonto.json +366 -0
  177. package/src/apps/quickbooks.json +234 -0
  178. package/src/apps/replicate.json +106 -0
  179. package/src/apps/rss.json +281 -0
  180. package/src/apps/salesflow.json +538 -0
  181. package/src/apps/salesforce-crm.json +216 -0
  182. package/src/apps/sap.json +256 -0
  183. package/src/apps/scaleway.json +911 -0
  184. package/src/apps/sculpteo.json +234 -0
  185. package/src/apps/sendgrid-email.json +233 -0
  186. package/src/apps/sendgrid.json +160 -35
  187. package/src/apps/shapeways.json +188 -0
  188. package/src/apps/shopify.json +1217 -0
  189. package/src/apps/skai.json +779 -0
  190. package/src/apps/slack.json +228 -38
  191. package/src/apps/slant3d.json +231 -0
  192. package/src/apps/slides.json +760 -0
  193. package/src/apps/smartly.json +504 -0
  194. package/src/apps/snov.json +467 -0
  195. package/src/apps/socialcast.json +553 -63
  196. package/src/apps/square.json +274 -0
  197. package/src/apps/storage-management.json +788 -0
  198. package/src/apps/storylane.json +180 -0
  199. package/src/apps/strapi.json +338 -0
  200. package/src/apps/stripe-payments.json +847 -0
  201. package/src/apps/stripe.json +472 -35
  202. package/src/apps/supabase.json +169 -0
  203. package/src/apps/supademo.json +115 -0
  204. package/src/apps/taskflow.json +714 -0
  205. package/src/apps/teamwork.json +457 -0
  206. package/src/apps/telegram.json +444 -0
  207. package/src/apps/thinger.json +458 -0
  208. package/src/apps/ticktick.json +169 -0
  209. package/src/apps/tiktok-api.json +406 -0
  210. package/src/apps/todoist.json +151 -0
  211. package/src/apps/together.json +123 -0
  212. package/src/apps/torrent.json +267 -0
  213. package/src/apps/trading.json +1012 -0
  214. package/src/apps/trading212.json +383 -0
  215. package/src/apps/trello.json +205 -0
  216. package/src/apps/tripo.json +157 -0
  217. package/src/apps/twilio.json +1008 -0
  218. package/src/apps/twitter-ads.json +875 -0
  219. package/src/apps/twitter-api.json +1151 -0
  220. package/src/apps/twitterapiio.json +548 -0
  221. package/src/apps/typeform.json +210 -0
  222. package/src/apps/vidforge.json +1020 -0
  223. package/src/apps/vonage.json +394 -0
  224. package/src/apps/vultr.json +225 -0
  225. package/src/apps/webflow.json +223 -0
  226. package/src/apps/wise.json +273 -0
  227. package/src/apps/wistia.json +283 -0
  228. package/src/apps/woocommerce.json +288 -0
  229. package/src/apps/wordpress.json +1675 -0
  230. package/src/apps/xero.json +257 -0
  231. package/src/apps/youtube-api.json +861 -0
  232. package/src/apps/zendesk.json +295 -0
  233. package/src/apps/zite.json +173 -0
  234. package/src/apps/zoho-crm.json +386 -0
  235. package/src/apps/zoo.json +193 -0
  236. package/src/apps/zoom.json +334 -0
@@ -0,0 +1,1151 @@
1
+ {
2
+ "slug": "twitter-api",
3
+ "name": "X / Twitter API",
4
+ "description": "X API v2 - post tweets, manage followers, search, timelines, likes, retweets, bookmarks, DMs, mutes, and blocks via OAuth2",
5
+ "logo": "https://www.google.com/s2/favicons?domain=x.com&sz=128",
6
+ "categories": [
7
+ "twitter",
8
+ "x",
9
+ "social-media",
10
+ "tweets",
11
+ "oauth2"
12
+ ],
13
+ "base_url": "https://api.x.com",
14
+ "auth": {
15
+ "types": [
16
+ "bearer"
17
+ ],
18
+ "headers": {
19
+ "Authorization": "Bearer {{token}}"
20
+ },
21
+ "credential_fields": [
22
+ {
23
+ "name": "token",
24
+ "label": "API Key"
25
+ }
26
+ ]
27
+ },
28
+ "tools": [
29
+ {
30
+ "name": "get_me",
31
+ "description": "Get the authenticated user's profile information including name, username, bio, follower counts, and verification status",
32
+ "method": "GET",
33
+ "path": "/2/users/me",
34
+ "input_schema": {
35
+ "type": "object",
36
+ "properties": {
37
+ "user.fields": {
38
+ "type": "string",
39
+ "description": "Comma-separated user fields to return",
40
+ "default": "id,name,username,description,profile_image_url,public_metrics,verified,created_at"
41
+ }
42
+ }
43
+ }
44
+ },
45
+ {
46
+ "name": "get_user_by_username",
47
+ "description": "Look up an X user by their username (handle) to get their profile info and user ID",
48
+ "method": "GET",
49
+ "path": "/2/users/by/username/%7B%7Busername%7D%7D",
50
+ "input_schema": {
51
+ "type": "object",
52
+ "properties": {
53
+ "username": {
54
+ "type": "string",
55
+ "description": "X username without the @ symbol"
56
+ },
57
+ "user.fields": {
58
+ "type": "string",
59
+ "description": "Comma-separated user fields to return",
60
+ "default": "id,name,username,description,profile_image_url,public_metrics,verified,created_at"
61
+ }
62
+ },
63
+ "required": [
64
+ "username"
65
+ ]
66
+ }
67
+ },
68
+ {
69
+ "name": "get_tweet",
70
+ "description": "Get a single post by its ID with full details including metrics, author info, and referenced posts",
71
+ "method": "GET",
72
+ "path": "/2/tweets/%7B%7Btweet_id%7D%7D",
73
+ "input_schema": {
74
+ "type": "object",
75
+ "properties": {
76
+ "tweet_id": {
77
+ "type": "string",
78
+ "description": "The post ID to look up"
79
+ },
80
+ "tweet.fields": {
81
+ "type": "string",
82
+ "description": "Comma-separated tweet fields",
83
+ "default": "id,text,author_id,created_at,public_metrics,conversation_id,in_reply_to_user_id,referenced_tweets,entities"
84
+ },
85
+ "expansions": {
86
+ "type": "string",
87
+ "description": "Comma-separated expansions",
88
+ "default": "author_id,referenced_tweets.id"
89
+ },
90
+ "user.fields": {
91
+ "type": "string",
92
+ "description": "Comma-separated user fields for expanded users",
93
+ "default": "id,name,username,profile_image_url,verified"
94
+ }
95
+ },
96
+ "required": [
97
+ "tweet_id"
98
+ ]
99
+ }
100
+ },
101
+ {
102
+ "name": "post_tweet",
103
+ "description": "Post a new tweet. Can include text, reply to another tweet, or quote tweet. Max 280 characters.",
104
+ "method": "POST",
105
+ "path": "/2/tweets",
106
+ "input_schema": {
107
+ "type": "object",
108
+ "properties": {
109
+ "text": {
110
+ "type": "string",
111
+ "description": "The text content of the tweet (max 280 characters)",
112
+ "maxLength": 280
113
+ },
114
+ "reply": {
115
+ "type": "object",
116
+ "description": "Reply settings - include to make this a reply",
117
+ "properties": {
118
+ "in_reply_to_tweet_id": {
119
+ "type": "string",
120
+ "description": "Tweet ID to reply to"
121
+ }
122
+ },
123
+ "required": [
124
+ "in_reply_to_tweet_id"
125
+ ]
126
+ },
127
+ "quote_tweet_id": {
128
+ "type": "string",
129
+ "description": "Tweet ID to quote"
130
+ },
131
+ "media": {
132
+ "type": "object",
133
+ "description": "Media attachments",
134
+ "properties": {
135
+ "media_ids": {
136
+ "type": "array",
137
+ "items": {
138
+ "type": "string"
139
+ },
140
+ "description": "Array of media IDs to attach (1-4)"
141
+ }
142
+ }
143
+ }
144
+ },
145
+ "required": [
146
+ "text"
147
+ ]
148
+ }
149
+ },
150
+ {
151
+ "name": "delete_tweet",
152
+ "description": "Delete a tweet by its ID. Must be the authenticated user's own tweet.",
153
+ "method": "DELETE",
154
+ "path": "/2/tweets/%7B%7Btweet_id%7D%7D",
155
+ "input_schema": {
156
+ "type": "object",
157
+ "properties": {
158
+ "tweet_id": {
159
+ "type": "string",
160
+ "description": "The tweet ID to delete"
161
+ }
162
+ },
163
+ "required": [
164
+ "tweet_id"
165
+ ]
166
+ }
167
+ },
168
+ {
169
+ "name": "search_recent",
170
+ "description": "Search for tweets from the last 7 days using X search operators. Supports advanced query syntax.",
171
+ "method": "GET",
172
+ "path": "/2/tweets/search/recent",
173
+ "input_schema": {
174
+ "type": "object",
175
+ "properties": {
176
+ "query": {
177
+ "type": "string",
178
+ "description": "Search query (supports operators like from:, to:, #hashtag, @mention, lang:, is:retweet, etc.)"
179
+ },
180
+ "max_results": {
181
+ "type": "integer",
182
+ "description": "Number of results (10-100)",
183
+ "default": 10,
184
+ "minimum": 10,
185
+ "maximum": 100
186
+ },
187
+ "tweet.fields": {
188
+ "type": "string",
189
+ "description": "Comma-separated tweet fields",
190
+ "default": "id,text,author_id,created_at,public_metrics,entities"
191
+ },
192
+ "expansions": {
193
+ "type": "string",
194
+ "description": "Comma-separated expansions",
195
+ "default": "author_id"
196
+ },
197
+ "user.fields": {
198
+ "type": "string",
199
+ "description": "Comma-separated user fields for expanded users",
200
+ "default": "id,name,username,verified"
201
+ },
202
+ "next_token": {
203
+ "type": "string",
204
+ "description": "Pagination token for next page of results"
205
+ },
206
+ "start_time": {
207
+ "type": "string",
208
+ "description": "ISO 8601 start time for search window (e.g., 2024-01-01T00:00:00Z)"
209
+ },
210
+ "end_time": {
211
+ "type": "string",
212
+ "description": "ISO 8601 end time for search window"
213
+ },
214
+ "sort_order": {
215
+ "type": "string",
216
+ "enum": [
217
+ "recency",
218
+ "relevancy"
219
+ ],
220
+ "description": "Sort order for results"
221
+ }
222
+ },
223
+ "required": [
224
+ "query"
225
+ ]
226
+ }
227
+ },
228
+ {
229
+ "name": "get_user_tweets",
230
+ "description": "Get tweets posted by a specific user. Returns their timeline of original tweets and retweets.",
231
+ "method": "GET",
232
+ "path": "/2/users/%7B%7Buser_id%7D%7D/tweets",
233
+ "input_schema": {
234
+ "type": "object",
235
+ "properties": {
236
+ "user_id": {
237
+ "type": "string",
238
+ "description": "The user ID whose tweets to retrieve"
239
+ },
240
+ "max_results": {
241
+ "type": "integer",
242
+ "description": "Number of results (5-100)",
243
+ "default": 10,
244
+ "minimum": 5,
245
+ "maximum": 100
246
+ },
247
+ "tweet.fields": {
248
+ "type": "string",
249
+ "description": "Comma-separated tweet fields",
250
+ "default": "id,text,created_at,public_metrics,entities,referenced_tweets"
251
+ },
252
+ "pagination_token": {
253
+ "type": "string",
254
+ "description": "Pagination token for next page"
255
+ },
256
+ "exclude": {
257
+ "type": "string",
258
+ "description": "Comma-separated types to exclude: retweets,replies"
259
+ },
260
+ "start_time": {
261
+ "type": "string",
262
+ "description": "ISO 8601 start time filter"
263
+ },
264
+ "end_time": {
265
+ "type": "string",
266
+ "description": "ISO 8601 end time filter"
267
+ }
268
+ },
269
+ "required": [
270
+ "user_id"
271
+ ]
272
+ }
273
+ },
274
+ {
275
+ "name": "get_user_mentions",
276
+ "description": "Get tweets that mention a specific user by their user ID",
277
+ "method": "GET",
278
+ "path": "/2/users/%7B%7Buser_id%7D%7D/mentions",
279
+ "input_schema": {
280
+ "type": "object",
281
+ "properties": {
282
+ "user_id": {
283
+ "type": "string",
284
+ "description": "The user ID to get mentions for"
285
+ },
286
+ "max_results": {
287
+ "type": "integer",
288
+ "description": "Number of results (5-100)",
289
+ "default": 10,
290
+ "minimum": 5,
291
+ "maximum": 100
292
+ },
293
+ "tweet.fields": {
294
+ "type": "string",
295
+ "description": "Comma-separated tweet fields",
296
+ "default": "id,text,author_id,created_at,public_metrics"
297
+ },
298
+ "expansions": {
299
+ "type": "string",
300
+ "description": "Comma-separated expansions",
301
+ "default": "author_id"
302
+ },
303
+ "pagination_token": {
304
+ "type": "string",
305
+ "description": "Pagination token for next page"
306
+ }
307
+ },
308
+ "required": [
309
+ "user_id"
310
+ ]
311
+ }
312
+ },
313
+ {
314
+ "name": "get_home_timeline",
315
+ "description": "Get the authenticated user's reverse-chronological home timeline (tweets from followed accounts)",
316
+ "method": "GET",
317
+ "path": "/2/users/%7B%7Buser_id%7D%7D/timelines/reverse_chronological",
318
+ "input_schema": {
319
+ "type": "object",
320
+ "properties": {
321
+ "user_id": {
322
+ "type": "string",
323
+ "description": "The authenticated user's ID"
324
+ },
325
+ "max_results": {
326
+ "type": "integer",
327
+ "description": "Number of results (1-100)",
328
+ "default": 20,
329
+ "minimum": 1,
330
+ "maximum": 100
331
+ },
332
+ "tweet.fields": {
333
+ "type": "string",
334
+ "description": "Comma-separated tweet fields",
335
+ "default": "id,text,author_id,created_at,public_metrics,entities"
336
+ },
337
+ "expansions": {
338
+ "type": "string",
339
+ "description": "Comma-separated expansions",
340
+ "default": "author_id"
341
+ },
342
+ "user.fields": {
343
+ "type": "string",
344
+ "description": "Comma-separated user fields",
345
+ "default": "id,name,username,profile_image_url,verified"
346
+ },
347
+ "pagination_token": {
348
+ "type": "string",
349
+ "description": "Pagination token for next page"
350
+ },
351
+ "exclude": {
352
+ "type": "string",
353
+ "description": "Comma-separated types to exclude: retweets,replies"
354
+ }
355
+ },
356
+ "required": [
357
+ "user_id"
358
+ ]
359
+ }
360
+ },
361
+ {
362
+ "name": "get_followers",
363
+ "description": "Get a list of users who follow the specified user",
364
+ "method": "GET",
365
+ "path": "/2/users/%7B%7Buser_id%7D%7D/followers",
366
+ "input_schema": {
367
+ "type": "object",
368
+ "properties": {
369
+ "user_id": {
370
+ "type": "string",
371
+ "description": "The user ID to get followers for"
372
+ },
373
+ "max_results": {
374
+ "type": "integer",
375
+ "description": "Number of results (1-1000)",
376
+ "default": 100,
377
+ "minimum": 1,
378
+ "maximum": 1000
379
+ },
380
+ "user.fields": {
381
+ "type": "string",
382
+ "description": "Comma-separated user fields",
383
+ "default": "id,name,username,description,profile_image_url,public_metrics,verified"
384
+ },
385
+ "pagination_token": {
386
+ "type": "string",
387
+ "description": "Pagination token for next page"
388
+ }
389
+ },
390
+ "required": [
391
+ "user_id"
392
+ ]
393
+ }
394
+ },
395
+ {
396
+ "name": "get_following",
397
+ "description": "Get a list of users that the specified user follows",
398
+ "method": "GET",
399
+ "path": "/2/users/%7B%7Buser_id%7D%7D/following",
400
+ "input_schema": {
401
+ "type": "object",
402
+ "properties": {
403
+ "user_id": {
404
+ "type": "string",
405
+ "description": "The user ID to get following list for"
406
+ },
407
+ "max_results": {
408
+ "type": "integer",
409
+ "description": "Number of results (1-1000)",
410
+ "default": 100,
411
+ "minimum": 1,
412
+ "maximum": 1000
413
+ },
414
+ "user.fields": {
415
+ "type": "string",
416
+ "description": "Comma-separated user fields",
417
+ "default": "id,name,username,description,profile_image_url,public_metrics,verified"
418
+ },
419
+ "pagination_token": {
420
+ "type": "string",
421
+ "description": "Pagination token for next page"
422
+ }
423
+ },
424
+ "required": [
425
+ "user_id"
426
+ ]
427
+ }
428
+ },
429
+ {
430
+ "name": "follow_user",
431
+ "description": "Follow a user. Requires the authenticated user's ID and the target user's ID.",
432
+ "method": "POST",
433
+ "path": "/2/users/%7B%7Buser_id%7D%7D/following",
434
+ "input_schema": {
435
+ "type": "object",
436
+ "properties": {
437
+ "user_id": {
438
+ "type": "string",
439
+ "description": "The authenticated user's ID (the one doing the following)"
440
+ },
441
+ "target_user_id": {
442
+ "type": "string",
443
+ "description": "The user ID to follow"
444
+ }
445
+ },
446
+ "required": [
447
+ "user_id",
448
+ "target_user_id"
449
+ ]
450
+ }
451
+ },
452
+ {
453
+ "name": "unfollow_user",
454
+ "description": "Unfollow a user. Requires the authenticated user's ID and the target user's ID.",
455
+ "method": "DELETE",
456
+ "path": "/2/users/%7B%7Buser_id%7D%7D/following/%7B%7Btarget_user_id%7D%7D",
457
+ "input_schema": {
458
+ "type": "object",
459
+ "properties": {
460
+ "user_id": {
461
+ "type": "string",
462
+ "description": "The authenticated user's ID (the one unfollowing)"
463
+ },
464
+ "target_user_id": {
465
+ "type": "string",
466
+ "description": "The user ID to unfollow"
467
+ }
468
+ },
469
+ "required": [
470
+ "user_id",
471
+ "target_user_id"
472
+ ]
473
+ }
474
+ },
475
+ {
476
+ "name": "like_tweet",
477
+ "description": "Like a tweet. Requires the authenticated user's ID and the tweet ID.",
478
+ "method": "POST",
479
+ "path": "/2/users/%7B%7Buser_id%7D%7D/likes",
480
+ "input_schema": {
481
+ "type": "object",
482
+ "properties": {
483
+ "user_id": {
484
+ "type": "string",
485
+ "description": "The authenticated user's ID"
486
+ },
487
+ "tweet_id": {
488
+ "type": "string",
489
+ "description": "The tweet ID to like"
490
+ }
491
+ },
492
+ "required": [
493
+ "user_id",
494
+ "tweet_id"
495
+ ]
496
+ }
497
+ },
498
+ {
499
+ "name": "unlike_tweet",
500
+ "description": "Remove a like from a tweet",
501
+ "method": "DELETE",
502
+ "path": "/2/users/%7B%7Buser_id%7D%7D/likes/%7B%7Btweet_id%7D%7D",
503
+ "input_schema": {
504
+ "type": "object",
505
+ "properties": {
506
+ "user_id": {
507
+ "type": "string",
508
+ "description": "The authenticated user's ID"
509
+ },
510
+ "tweet_id": {
511
+ "type": "string",
512
+ "description": "The tweet ID to unlike"
513
+ }
514
+ },
515
+ "required": [
516
+ "user_id",
517
+ "tweet_id"
518
+ ]
519
+ }
520
+ },
521
+ {
522
+ "name": "retweet",
523
+ "description": "Retweet a tweet. Requires the authenticated user's ID and the tweet ID.",
524
+ "method": "POST",
525
+ "path": "/2/users/%7B%7Buser_id%7D%7D/retweets",
526
+ "input_schema": {
527
+ "type": "object",
528
+ "properties": {
529
+ "user_id": {
530
+ "type": "string",
531
+ "description": "The authenticated user's ID"
532
+ },
533
+ "tweet_id": {
534
+ "type": "string",
535
+ "description": "The tweet ID to retweet"
536
+ }
537
+ },
538
+ "required": [
539
+ "user_id",
540
+ "tweet_id"
541
+ ]
542
+ }
543
+ },
544
+ {
545
+ "name": "undo_retweet",
546
+ "description": "Remove a retweet",
547
+ "method": "DELETE",
548
+ "path": "/2/users/%7B%7Buser_id%7D%7D/retweets/%7B%7Btweet_id%7D%7D",
549
+ "input_schema": {
550
+ "type": "object",
551
+ "properties": {
552
+ "user_id": {
553
+ "type": "string",
554
+ "description": "The authenticated user's ID"
555
+ },
556
+ "tweet_id": {
557
+ "type": "string",
558
+ "description": "The tweet ID to un-retweet"
559
+ }
560
+ },
561
+ "required": [
562
+ "user_id",
563
+ "tweet_id"
564
+ ]
565
+ }
566
+ },
567
+ {
568
+ "name": "get_bookmarks",
569
+ "description": "Get the authenticated user's bookmarked tweets",
570
+ "method": "GET",
571
+ "path": "/2/users/%7B%7Buser_id%7D%7D/bookmarks",
572
+ "input_schema": {
573
+ "type": "object",
574
+ "properties": {
575
+ "user_id": {
576
+ "type": "string",
577
+ "description": "The authenticated user's ID"
578
+ },
579
+ "max_results": {
580
+ "type": "integer",
581
+ "description": "Number of results (1-100)",
582
+ "default": 20,
583
+ "minimum": 1,
584
+ "maximum": 100
585
+ },
586
+ "tweet.fields": {
587
+ "type": "string",
588
+ "description": "Comma-separated tweet fields",
589
+ "default": "id,text,author_id,created_at,public_metrics"
590
+ },
591
+ "expansions": {
592
+ "type": "string",
593
+ "description": "Comma-separated expansions",
594
+ "default": "author_id"
595
+ },
596
+ "pagination_token": {
597
+ "type": "string",
598
+ "description": "Pagination token for next page"
599
+ }
600
+ },
601
+ "required": [
602
+ "user_id"
603
+ ]
604
+ }
605
+ },
606
+ {
607
+ "name": "add_bookmark",
608
+ "description": "Add a tweet to the authenticated user's bookmarks",
609
+ "method": "POST",
610
+ "path": "/2/users/%7B%7Buser_id%7D%7D/bookmarks",
611
+ "input_schema": {
612
+ "type": "object",
613
+ "properties": {
614
+ "user_id": {
615
+ "type": "string",
616
+ "description": "The authenticated user's ID"
617
+ },
618
+ "tweet_id": {
619
+ "type": "string",
620
+ "description": "The tweet ID to bookmark"
621
+ }
622
+ },
623
+ "required": [
624
+ "user_id",
625
+ "tweet_id"
626
+ ]
627
+ }
628
+ },
629
+ {
630
+ "name": "remove_bookmark",
631
+ "description": "Remove a tweet from the authenticated user's bookmarks",
632
+ "method": "DELETE",
633
+ "path": "/2/users/%7B%7Buser_id%7D%7D/bookmarks/%7B%7Btweet_id%7D%7D",
634
+ "input_schema": {
635
+ "type": "object",
636
+ "properties": {
637
+ "user_id": {
638
+ "type": "string",
639
+ "description": "The authenticated user's ID"
640
+ },
641
+ "tweet_id": {
642
+ "type": "string",
643
+ "description": "The tweet ID to remove from bookmarks"
644
+ }
645
+ },
646
+ "required": [
647
+ "user_id",
648
+ "tweet_id"
649
+ ]
650
+ }
651
+ },
652
+ {
653
+ "name": "get_liked_tweets",
654
+ "description": "Get tweets liked by a specific user",
655
+ "method": "GET",
656
+ "path": "/2/users/%7B%7Buser_id%7D%7D/liked_tweets",
657
+ "input_schema": {
658
+ "type": "object",
659
+ "properties": {
660
+ "user_id": {
661
+ "type": "string",
662
+ "description": "The user ID to get liked tweets for"
663
+ },
664
+ "max_results": {
665
+ "type": "integer",
666
+ "description": "Number of results (10-100)",
667
+ "default": 10,
668
+ "minimum": 10,
669
+ "maximum": 100
670
+ },
671
+ "tweet.fields": {
672
+ "type": "string",
673
+ "description": "Comma-separated tweet fields",
674
+ "default": "id,text,author_id,created_at,public_metrics"
675
+ },
676
+ "expansions": {
677
+ "type": "string",
678
+ "description": "Comma-separated expansions",
679
+ "default": "author_id"
680
+ },
681
+ "pagination_token": {
682
+ "type": "string",
683
+ "description": "Pagination token for next page"
684
+ }
685
+ },
686
+ "required": [
687
+ "user_id"
688
+ ]
689
+ }
690
+ },
691
+ {
692
+ "name": "get_liking_users",
693
+ "description": "Get users who liked a specific tweet",
694
+ "method": "GET",
695
+ "path": "/2/tweets/%7B%7Btweet_id%7D%7D/liking_users",
696
+ "input_schema": {
697
+ "type": "object",
698
+ "properties": {
699
+ "tweet_id": {
700
+ "type": "string",
701
+ "description": "The tweet ID to get liking users for"
702
+ },
703
+ "max_results": {
704
+ "type": "integer",
705
+ "description": "Number of results (1-100)",
706
+ "default": 100,
707
+ "minimum": 1,
708
+ "maximum": 100
709
+ },
710
+ "user.fields": {
711
+ "type": "string",
712
+ "description": "Comma-separated user fields",
713
+ "default": "id,name,username,profile_image_url,public_metrics,verified"
714
+ },
715
+ "pagination_token": {
716
+ "type": "string",
717
+ "description": "Pagination token for next page"
718
+ }
719
+ },
720
+ "required": [
721
+ "tweet_id"
722
+ ]
723
+ }
724
+ },
725
+ {
726
+ "name": "get_retweeters",
727
+ "description": "Get users who retweeted a specific tweet",
728
+ "method": "GET",
729
+ "path": "/2/tweets/%7B%7Btweet_id%7D%7D/retweeted_by",
730
+ "input_schema": {
731
+ "type": "object",
732
+ "properties": {
733
+ "tweet_id": {
734
+ "type": "string",
735
+ "description": "The tweet ID to get retweeters for"
736
+ },
737
+ "max_results": {
738
+ "type": "integer",
739
+ "description": "Number of results (1-100)",
740
+ "default": 100,
741
+ "minimum": 1,
742
+ "maximum": 100
743
+ },
744
+ "user.fields": {
745
+ "type": "string",
746
+ "description": "Comma-separated user fields",
747
+ "default": "id,name,username,profile_image_url,public_metrics,verified"
748
+ },
749
+ "pagination_token": {
750
+ "type": "string",
751
+ "description": "Pagination token for next page"
752
+ }
753
+ },
754
+ "required": [
755
+ "tweet_id"
756
+ ]
757
+ }
758
+ },
759
+ {
760
+ "name": "mute_user",
761
+ "description": "Mute a user. Muted users' posts will not appear in your timeline.",
762
+ "method": "POST",
763
+ "path": "/2/users/%7B%7Buser_id%7D%7D/muting",
764
+ "input_schema": {
765
+ "type": "object",
766
+ "properties": {
767
+ "user_id": {
768
+ "type": "string",
769
+ "description": "The authenticated user's ID"
770
+ },
771
+ "target_user_id": {
772
+ "type": "string",
773
+ "description": "The user ID to mute"
774
+ }
775
+ },
776
+ "required": [
777
+ "user_id",
778
+ "target_user_id"
779
+ ]
780
+ }
781
+ },
782
+ {
783
+ "name": "unmute_user",
784
+ "description": "Unmute a previously muted user",
785
+ "method": "DELETE",
786
+ "path": "/2/users/%7B%7Buser_id%7D%7D/muting/%7B%7Btarget_user_id%7D%7D",
787
+ "input_schema": {
788
+ "type": "object",
789
+ "properties": {
790
+ "user_id": {
791
+ "type": "string",
792
+ "description": "The authenticated user's ID"
793
+ },
794
+ "target_user_id": {
795
+ "type": "string",
796
+ "description": "The user ID to unmute"
797
+ }
798
+ },
799
+ "required": [
800
+ "user_id",
801
+ "target_user_id"
802
+ ]
803
+ }
804
+ },
805
+ {
806
+ "name": "get_muted_users",
807
+ "description": "Get the list of users the authenticated user has muted",
808
+ "method": "GET",
809
+ "path": "/2/users/%7B%7Buser_id%7D%7D/muting",
810
+ "input_schema": {
811
+ "type": "object",
812
+ "properties": {
813
+ "user_id": {
814
+ "type": "string",
815
+ "description": "The authenticated user's ID"
816
+ },
817
+ "max_results": {
818
+ "type": "integer",
819
+ "description": "Number of results (1-1000)",
820
+ "default": 100,
821
+ "minimum": 1,
822
+ "maximum": 1000
823
+ },
824
+ "user.fields": {
825
+ "type": "string",
826
+ "description": "Comma-separated user fields",
827
+ "default": "id,name,username,description,profile_image_url,public_metrics"
828
+ },
829
+ "pagination_token": {
830
+ "type": "string",
831
+ "description": "Pagination token for next page"
832
+ }
833
+ },
834
+ "required": [
835
+ "user_id"
836
+ ]
837
+ }
838
+ },
839
+ {
840
+ "name": "block_user",
841
+ "description": "Block a user. Blocked users cannot follow you or view your posts.",
842
+ "method": "POST",
843
+ "path": "/2/users/%7B%7Buser_id%7D%7D/blocking",
844
+ "input_schema": {
845
+ "type": "object",
846
+ "properties": {
847
+ "user_id": {
848
+ "type": "string",
849
+ "description": "The authenticated user's ID"
850
+ },
851
+ "target_user_id": {
852
+ "type": "string",
853
+ "description": "The user ID to block"
854
+ }
855
+ },
856
+ "required": [
857
+ "user_id",
858
+ "target_user_id"
859
+ ]
860
+ }
861
+ },
862
+ {
863
+ "name": "unblock_user",
864
+ "description": "Unblock a previously blocked user",
865
+ "method": "DELETE",
866
+ "path": "/2/users/%7B%7Buser_id%7D%7D/blocking/%7B%7Btarget_user_id%7D%7D",
867
+ "input_schema": {
868
+ "type": "object",
869
+ "properties": {
870
+ "user_id": {
871
+ "type": "string",
872
+ "description": "The authenticated user's ID"
873
+ },
874
+ "target_user_id": {
875
+ "type": "string",
876
+ "description": "The user ID to unblock"
877
+ }
878
+ },
879
+ "required": [
880
+ "user_id",
881
+ "target_user_id"
882
+ ]
883
+ }
884
+ },
885
+ {
886
+ "name": "get_blocked_users",
887
+ "description": "Get the list of users the authenticated user has blocked",
888
+ "method": "GET",
889
+ "path": "/2/users/%7B%7Buser_id%7D%7D/blocking",
890
+ "input_schema": {
891
+ "type": "object",
892
+ "properties": {
893
+ "user_id": {
894
+ "type": "string",
895
+ "description": "The authenticated user's ID"
896
+ },
897
+ "max_results": {
898
+ "type": "integer",
899
+ "description": "Number of results (1-1000)",
900
+ "default": 100,
901
+ "minimum": 1,
902
+ "maximum": 1000
903
+ },
904
+ "user.fields": {
905
+ "type": "string",
906
+ "description": "Comma-separated user fields",
907
+ "default": "id,name,username,description,profile_image_url,public_metrics"
908
+ },
909
+ "pagination_token": {
910
+ "type": "string",
911
+ "description": "Pagination token for next page"
912
+ }
913
+ },
914
+ "required": [
915
+ "user_id"
916
+ ]
917
+ }
918
+ },
919
+ {
920
+ "name": "send_dm",
921
+ "description": "Send a direct message to a specific user. Creates a one-on-one DM conversation if one doesn't exist.",
922
+ "method": "POST",
923
+ "path": "/2/dm_conversations/with/%7B%7Bparticipant_id%7D%7D/messages",
924
+ "input_schema": {
925
+ "type": "object",
926
+ "properties": {
927
+ "participant_id": {
928
+ "type": "string",
929
+ "description": "The user ID of the person to send the DM to"
930
+ },
931
+ "text": {
932
+ "type": "string",
933
+ "description": "The text content of the direct message"
934
+ }
935
+ },
936
+ "required": [
937
+ "participant_id",
938
+ "text"
939
+ ]
940
+ }
941
+ },
942
+ {
943
+ "name": "send_dm_to_conversation",
944
+ "description": "Send a direct message to an existing DM conversation (one-on-one or group). Use the conversation ID from a previous DM lookup.",
945
+ "method": "POST",
946
+ "path": "/2/dm_conversations/%7B%7Bdm_conversation_id%7D%7D/messages",
947
+ "input_schema": {
948
+ "type": "object",
949
+ "properties": {
950
+ "dm_conversation_id": {
951
+ "type": "string",
952
+ "description": "The DM conversation ID (numeric string or pair like '123-456')"
953
+ },
954
+ "text": {
955
+ "type": "string",
956
+ "description": "The text content of the direct message"
957
+ }
958
+ },
959
+ "required": [
960
+ "dm_conversation_id",
961
+ "text"
962
+ ]
963
+ }
964
+ },
965
+ {
966
+ "name": "get_dm_events",
967
+ "description": "Get recent direct message events for the authenticated user, including messages from one-on-one and group conversations",
968
+ "method": "GET",
969
+ "path": "/2/dm_events",
970
+ "input_schema": {
971
+ "type": "object",
972
+ "properties": {
973
+ "max_results": {
974
+ "type": "integer",
975
+ "description": "Number of results (1-100)",
976
+ "default": 100,
977
+ "minimum": 1,
978
+ "maximum": 100
979
+ },
980
+ "pagination_token": {
981
+ "type": "string",
982
+ "description": "Pagination token for next page"
983
+ },
984
+ "event_types": {
985
+ "type": "string",
986
+ "description": "Comma-separated event types: MessageCreate,ParticipantsJoin,ParticipantsLeave",
987
+ "default": "MessageCreate"
988
+ },
989
+ "dm_event.fields": {
990
+ "type": "string",
991
+ "description": "Comma-separated DM event fields",
992
+ "default": "id,text,event_type,created_at,dm_conversation_id,sender_id"
993
+ },
994
+ "expansions": {
995
+ "type": "string",
996
+ "description": "Comma-separated expansions",
997
+ "default": "sender_id"
998
+ },
999
+ "user.fields": {
1000
+ "type": "string",
1001
+ "description": "Comma-separated user fields for expanded users",
1002
+ "default": "id,name,username,profile_image_url"
1003
+ }
1004
+ }
1005
+ }
1006
+ },
1007
+ {
1008
+ "name": "upload_media",
1009
+ "description": "Upload an image or subtitle file (up to 5MB) in a single request. Returns a media_id to use when posting a tweet with media. Supported: JPEG, PNG, WEBP, GIF (static), SRT, VTT.",
1010
+ "method": "POST",
1011
+ "path": "/2/media/upload",
1012
+ "input_schema": {
1013
+ "type": "object",
1014
+ "properties": {
1015
+ "media": {
1016
+ "type": "string",
1017
+ "description": "Base64-encoded media file data"
1018
+ },
1019
+ "media_category": {
1020
+ "type": "string",
1021
+ "enum": [
1022
+ "tweet_image",
1023
+ "dm_image",
1024
+ "subtitles"
1025
+ ],
1026
+ "description": "Media category determining upload constraints",
1027
+ "default": "tweet_image"
1028
+ },
1029
+ "media_type": {
1030
+ "type": "string",
1031
+ "enum": [
1032
+ "image/jpeg",
1033
+ "image/png",
1034
+ "image/webp",
1035
+ "image/gif",
1036
+ "text/srt",
1037
+ "text/vtt"
1038
+ ],
1039
+ "description": "MIME type of the media file"
1040
+ },
1041
+ "additional_owners": {
1042
+ "type": "array",
1043
+ "items": {
1044
+ "type": "string"
1045
+ },
1046
+ "description": "User IDs who can use this media"
1047
+ }
1048
+ },
1049
+ "required": [
1050
+ "media",
1051
+ "media_category"
1052
+ ]
1053
+ }
1054
+ },
1055
+ {
1056
+ "name": "upload_init",
1057
+ "description": "Initialize a chunked media upload for videos, animated GIFs, or large files. Returns a media_id to use with append and finalize. Limits: images up to 5MB, GIFs up to 15MB, videos up to 512MB.",
1058
+ "method": "POST",
1059
+ "path": "/2/media/upload/initialize",
1060
+ "input_schema": {
1061
+ "type": "object",
1062
+ "properties": {
1063
+ "total_bytes": {
1064
+ "type": "integer",
1065
+ "description": "Total file size in bytes"
1066
+ },
1067
+ "media_type": {
1068
+ "type": "string",
1069
+ "description": "MIME type (e.g., video/mp4, image/gif, video/quicktime)"
1070
+ },
1071
+ "media_category": {
1072
+ "type": "string",
1073
+ "enum": [
1074
+ "tweet_image",
1075
+ "tweet_gif",
1076
+ "tweet_video",
1077
+ "amplify_video",
1078
+ "dm_gif",
1079
+ "dm_image",
1080
+ "dm_video"
1081
+ ],
1082
+ "description": "Media category"
1083
+ },
1084
+ "additional_owners": {
1085
+ "type": "array",
1086
+ "items": {
1087
+ "type": "string"
1088
+ },
1089
+ "description": "User IDs who can use this media"
1090
+ },
1091
+ "shared": {
1092
+ "type": "boolean",
1093
+ "description": "Whether media is shared",
1094
+ "default": false
1095
+ }
1096
+ },
1097
+ "required": [
1098
+ "total_bytes",
1099
+ "media_type",
1100
+ "media_category"
1101
+ ]
1102
+ }
1103
+ },
1104
+ {
1105
+ "name": "upload_append",
1106
+ "description": "Append a chunk of data to an in-progress chunked upload. Call sequentially with incrementing segment_index (starting at 0) until all data is uploaded.",
1107
+ "method": "POST",
1108
+ "path": "/2/media/upload/%7B%7Bmedia_id%7D%7D/append",
1109
+ "input_schema": {
1110
+ "type": "object",
1111
+ "properties": {
1112
+ "media_id": {
1113
+ "type": "string",
1114
+ "description": "Media ID returned from the initialize step"
1115
+ },
1116
+ "segment_index": {
1117
+ "type": "integer",
1118
+ "description": "Chunk index (0-based, sequential)"
1119
+ },
1120
+ "media": {
1121
+ "type": "string",
1122
+ "description": "Base64-encoded chunk data"
1123
+ }
1124
+ },
1125
+ "required": [
1126
+ "media_id",
1127
+ "segment_index",
1128
+ "media"
1129
+ ]
1130
+ }
1131
+ },
1132
+ {
1133
+ "name": "upload_finalize",
1134
+ "description": "Finalize a chunked media upload after all chunks have been appended. If response includes processing_info with state 'pending' or 'in_progress', wait check_after_secs then check status again. Once state is 'succeeded', use the media_id to post a tweet.",
1135
+ "method": "POST",
1136
+ "path": "/2/media/upload/%7B%7Bmedia_id%7D%7D/finalize",
1137
+ "input_schema": {
1138
+ "type": "object",
1139
+ "properties": {
1140
+ "media_id": {
1141
+ "type": "string",
1142
+ "description": "Media ID from the initialize step"
1143
+ }
1144
+ },
1145
+ "required": [
1146
+ "media_id"
1147
+ ]
1148
+ }
1149
+ }
1150
+ ]
1151
+ }