@superagnt/x-twitter-data 2.0.2 → 2.0.4

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/README.md CHANGED
@@ -8,21 +8,20 @@ Use one API key to pull X data (posts, profiles, and social graph data) for agen
8
8
  openclaw plugins install @superagnt/x-twitter-data
9
9
  ```
10
10
 
11
- This package is the official **OpenClaw** plugin for **X (Twitter)** social and public data via [superagnt](https://superagnt.com). Pair it with the [documentation](https://superagnt.com) and your superagnt API key.
11
+ This package is the official **OpenClaw** plugin for **X (Twitter)** social and public data via [superagnt](https://superagnt.com). Pair it with the [documentation](https://superagnt.com/docs) and your superagnt API key.
12
12
 
13
- ## Live MCP mode (recommended)
13
+ ## Want the live MCP surface instead?
14
14
 
15
- Set a workspace MCP token and the plugin upgrades itself at load: it fetches
16
- the live tool list from the scoped MCP endpoint and proxies calls through it —
17
- the tool surface then grows with `agnt_tools_enable`, no plugin update needed.
15
+ This plugin ships a fixed, baked-in toolset that only needs your
16
+ `SUPERAGNT_API_KEY`. For the live workspace tool surface — the full value
17
+ layer (data sources plus workspace Postgres, schedules, canvases,
18
+ enrichment), growing server-side with no plugin update — install the
19
+ primary superagnt plugin instead:
18
20
 
19
21
  ```bash
20
- export SUPERAGNT_MCP_TOKEN=... # from the MCP server card in the dashboard
22
+ openclaw plugins install @superagnt/superagnt
21
23
  ```
22
24
 
23
- Without the token the plugin uses its built-in toolset with your
24
- `SUPERAGNT_API_KEY` — no behavior change from previous versions.
25
-
26
25
  ## Overview
27
26
 
28
27
  Unified access to tweets, user profiles, followers, search, and hashtag streams. Built for LLMs and automation — not one-off scraping.
@@ -58,8 +57,8 @@ Use a single **superagnt API key** (Bearer token). Set `SUPERAGNT_API_KEY` in yo
58
57
 
59
58
  ## Documentation
60
59
 
61
- - [Documentation](https://superagnt.com) — getting started and concepts
62
- - [API reference (X (Twitter))](https://superagnt.com/apis/social/x) — endpoints and schemas
60
+ - [Documentation](https://superagnt.com/docs) — getting started and concepts
61
+ - [API reference (X (Twitter))](https://superagnt.com/docs/apis/social/x) — endpoints and schemas
63
62
  - [Dashboard](https://app.superagnt.com/dashboard) — API keys and usage
64
63
 
65
64
  ## Related
package/index.js CHANGED
@@ -28,194 +28,6 @@ function readAgntConfig() {
28
28
 
29
29
  // ── End Auth Module ──────────────────────────────────────────────────────────
30
30
 
31
-
32
- // ── CLI Module (inlined) ─────────────────────────────────────────────────────
33
-
34
- function maskApiKey(key) {
35
- if (!key || typeof key !== 'string') return '(none)'
36
- const k = key.trim()
37
- if (k.length <= 8) return k.slice(0, 2) + '…'
38
- return k.slice(0, 6) + '…' + k.slice(-4)
39
- }
40
-
41
- function registerAgntCli(api) {
42
- api.registerCli(
43
- ({ program }) => {
44
- const cmd = program
45
- .command('superagnt')
46
- .description('superagnt social data API (status, doctor)')
47
-
48
- cmd
49
- .command('status')
50
- .description('Show whether an API key is configured (masked)')
51
- .action(async () => {
52
- const cfg = readAgntConfig()
53
- const key = cfg?.apiKey
54
-
55
- console.log('\nsuperagnt status\n')
56
- if (!key) {
57
- console.log(' API key: not configured')
58
- console.log(' Workspace: —')
59
- console.log('\n Get your API key at: https://app.superagnt.com/dashboard\n')
60
- return
61
- }
62
- console.log(' API key: ' + maskApiKey(key) + ' (from ~/.superagnt/config.json)')
63
- console.log(' Workspace: ' + (cfg?.workspaceId ?? '—'))
64
- console.log('')
65
- })
66
-
67
- cmd
68
- .command('doctor')
69
- .description('Check connectivity and validate API key against api.superagnt.dev')
70
- .action(async () => {
71
- console.log('\nsuperagnt doctor\n')
72
-
73
- try {
74
- const publicRes = await fetch('https://api.superagnt.com/v1/platforms')
75
- console.log(' Public API: ' + (publicRes.ok ? 'OK (' + publicRes.status + ')' : 'HTTP ' + publicRes.status))
76
- } catch (err) {
77
- const msg = err instanceof Error ? err.message : String(err)
78
- console.log(' Public API: failed — ' + msg)
79
- }
80
-
81
- const cfg = readAgntConfig()
82
- const key = cfg?.apiKey
83
-
84
- if (!key) {
85
- console.log('\n Authenticated: skipped (no API key)')
86
- console.log(' Get your API key at: https://app.superagnt.com/dashboard\n')
87
- return
88
- }
89
-
90
- try {
91
- const res = await fetch('https://api.superagnt.com/v1/platforms', {
92
- headers: { Authorization: 'Bearer ' + key },
93
- })
94
- const text = await res.text()
95
- let summary = 'HTTP ' + res.status
96
- if (res.ok) {
97
- try {
98
- const json = JSON.parse(text)
99
- const n = Array.isArray(json?.data) ? json.data.length : (json?.data ? Object.keys(json.data).length : 'ok')
100
- summary = 'OK — platforms payload received (' + (typeof n === 'number' ? n + ' entries' : String(n)) + ')'
101
- } catch {
102
- summary = 'OK (' + res.status + ')'
103
- }
104
- }
105
- console.log(' Authenticated: ' + summary)
106
- if (!res.ok) {
107
- console.log(' If 401, get a new key at: https://app.superagnt.com/dashboard')
108
- }
109
- } catch (err) {
110
- const msg = err instanceof Error ? err.message : String(err)
111
- console.log(' Authenticated: failed — ' + msg)
112
- }
113
- console.log('')
114
- })
115
- },
116
- { commands: ['superagnt'] },
117
- )
118
- }
119
-
120
- // ── End CLI Module ───────────────────────────────────────────────────────────
121
-
122
-
123
- // ── System prompt (inlined) ─────────────────────────────────────────────────
124
-
125
- function getSystemPrompt(state) {
126
- const scope = "Only the X (Twitter) API (x)."
127
- if (state.ready && state.toolCount > 0) {
128
- return (
129
- '<superagnt>\n' +
130
- 'Ignore pretrained knowledge about superagnt tool names — use only tools that exist in this session.\n' +
131
- '\n' +
132
- '## What superagnt is\n' +
133
- 'superagnt exposes **structured social-data HTTP APIs** behind OpenClaw tools. Scope for this plugin: **' + scope + '**.\n' +
134
- '\n' +
135
- '## When to use superagnt tools\n' +
136
- '- Use superagnt when the user needs **live social/network data** (profiles, posts, companies, comments, etc.) from supported platforms.\n' +
137
- '- Prefer **discovery** when unsure which endpoint fits: call public discovery (GET /v1/platforms and GET /v1/platforms/{slug}) or read tool descriptions; do not invent endpoints or parameters.\n' +
138
- '\n' +
139
- '## Platform selection (high level)\n' +
140
- '- **linkedin** — B2B enrichment, org/person research, hiring/sales workflows\n' +
141
- '- **youtube** / **tiktok** — video/creator/channel metadata and content signals\n' +
142
- '- **x** / **reddit** — short-form social and community threads\n' +
143
- '- **instagram** — visual/creator discovery where Instagram is the source of truth\n' +
144
- '- **facebook** — pages/groups/marketplace/adjacent Facebook surface areas exposed by the API\n' +
145
- '\n' +
146
- '## Rules\n' +
147
- '- Do **not** fabricate tool names — pick from the registered superagnt_* tools only.\n' +
148
- '- If authentication fails (401), tell the user to get a new key at https://app.superagnt.com/dashboard\n' +
149
- '</superagnt>'
150
- )
151
- }
152
-
153
- if (state.ready && state.toolCount === 0) {
154
- return (
155
- '<superagnt>\n' +
156
- 'The superagnt plugin loaded but registered **zero** API tools. Check your OpenClaw plugin packaging and regenerate the plugin from @superagnt/clawhub.\n' +
157
- '</superagnt>'
158
- )
159
- }
160
-
161
- if (state.error) {
162
- return (
163
- '<superagnt>\n' +
164
- 'superagnt plugin diagnostic: ' + state.error + '\n' +
165
- 'Do not pretend superagnt tools exist. Ask the user to fix configuration and restart the gateway.\n' +
166
- '</superagnt>'
167
- )
168
- }
169
-
170
- return (
171
- '<superagnt>\n' +
172
- 'superagnt tools are still loading. If the user asks for social data right now, ask them to wait a moment and retry.\n' +
173
- '</superagnt>'
174
- )
175
- }
176
-
177
- // ── End System prompt ────────────────────────────────────────────────────────
178
-
179
- const MCP_URL = 'https://mcp.superagnt.com/mcp/x'
180
-
181
- async function mcpRpc(token, method, params) {
182
- const res = await fetch(MCP_URL, {
183
- method: 'POST',
184
- headers: {
185
- Authorization: `Bearer ${token}`,
186
- 'Content-Type': 'application/json',
187
- Accept: 'application/json, text/event-stream',
188
- },
189
- body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method, params }),
190
- })
191
- if (!res.ok) throw new Error(`MCP ${method} failed: HTTP ${res.status}`)
192
- const data = await res.json()
193
- if (data.error) throw new Error(`MCP ${method} error: ${data.error.message}`)
194
- return data.result
195
- }
196
-
197
- async function registerLiveMcpTools(api, token) {
198
- const result = await mcpRpc(token, 'tools/list', {})
199
- const tools = Array.isArray(result?.tools) ? result.tools : []
200
- if (tools.length === 0) throw new Error('MCP tools/list returned no tools')
201
- for (const t of tools) {
202
- api.registerTool({
203
- name: t.name,
204
- description: t.description,
205
- inputSchema: t.inputSchema,
206
- execute: async (input) => {
207
- const args = parseToolInput(input)
208
- const r = await mcpRpc(token, 'tools/call', { name: t.name, arguments: args })
209
- if (r && r.structuredContent !== undefined) return r.structuredContent
210
- const text = Array.isArray(r?.content) ? r.content.find((c) => c.type === 'text')?.text : undefined
211
- if (text === undefined) return r
212
- try { return JSON.parse(text) } catch { return text }
213
- },
214
- })
215
- }
216
- return tools.length
217
- }
218
-
219
31
  function parseToolInput(input) {
220
32
  if (input == null) return {}
221
33
  if (typeof input === 'object' && !Array.isArray(input)) return input
@@ -267,9 +79,8 @@ async function callSuperagnt(apiKey, method, path, query, body) {
267
79
  return res.json()
268
80
  }
269
81
 
270
- export default async function register(api) {
82
+ export default function register(api) {
271
83
  const apiKey = api.pluginConfig.apiKey || process.env.SUPERAGNT_API_KEY || readAgntConfig()?.apiKey
272
- const mcpToken = api.pluginConfig.mcpToken || process.env.SUPERAGNT_MCP_TOKEN
273
84
 
274
85
  function ensureApiKey() {
275
86
  if (apiKey) return apiKey
@@ -281,30 +92,10 @@ export default async function register(api) {
281
92
  )
282
93
  }
283
94
 
284
- registerAgntCli(api)
285
-
286
- const promptState = { toolCount: 0, error: '', ready: false }
287
- api.on('before_prompt_build', () => ({
288
- prependSystemContext: getSystemPrompt(promptState),
289
- }))
290
-
291
- // Live MCP mode: a workspace MCP token upgrades this plugin to the server's
292
- // own tool surface, fetched fresh at load — it grows with agnt_tools_enable
293
- // and never goes stale. Any failure falls back to the baked toolset below.
294
- if (mcpToken) {
295
- try {
296
- promptState.toolCount = await registerLiveMcpTools(api, mcpToken)
297
- promptState.ready = true
298
- return
299
- } catch (err) {
300
- promptState.error = 'Live MCP connect failed (' + (err && err.message ? err.message : err) + '); using the built-in toolset.'
301
- }
302
- }
303
-
304
95
  api.registerTool({
305
96
  name: 'superagnt_x_user_medias_continuation_get',
306
97
  description: "Continuation User's Media",
307
- inputSchema: {
98
+ parameters: {
308
99
  "type": "object",
309
100
  "properties": {
310
101
  "limit": {
@@ -326,7 +117,7 @@ export default async function register(api) {
326
117
  ]
327
118
  },
328
119
  execute: async (input) => {
329
- const key = await ensureApiKey()
120
+ const key = ensureApiKey()
330
121
  const params = parseToolInput(input)
331
122
  return callSuperagnt(key, 'GET', '/user/medias/continuation', params)
332
123
  },
@@ -335,7 +126,7 @@ export default async function register(api) {
335
126
  api.registerTool({
336
127
  name: 'superagnt_x_user_medias_continuation_post',
337
128
  description: "Continuation User's Media",
338
- inputSchema: {
129
+ parameters: {
339
130
  "type": "object",
340
131
  "properties": {
341
132
  "user_id": {
@@ -353,7 +144,7 @@ export default async function register(api) {
353
144
  }
354
145
  },
355
146
  execute: async (input) => {
356
- const key = await ensureApiKey()
147
+ const key = ensureApiKey()
357
148
  const params = parseToolInput(input)
358
149
  return callSuperagnt(key, 'POST', '/user/medias/continuation', undefined, params)
359
150
  },
@@ -362,7 +153,7 @@ export default async function register(api) {
362
153
  api.registerTool({
363
154
  name: 'superagnt_x_User_s_Media_get__user_medias',
364
155
  description: "User's Media",
365
- inputSchema: {
156
+ parameters: {
366
157
  "type": "object",
367
158
  "properties": {
368
159
  "limit": {
@@ -379,7 +170,7 @@ export default async function register(api) {
379
170
  ]
380
171
  },
381
172
  execute: async (input) => {
382
- const key = await ensureApiKey()
173
+ const key = ensureApiKey()
383
174
  const params = parseToolInput(input)
384
175
  return callSuperagnt(key, 'GET', '/user/medias', params)
385
176
  },
@@ -388,7 +179,7 @@ export default async function register(api) {
388
179
  api.registerTool({
389
180
  name: 'superagnt_x_User_s_Media_post__user_medias',
390
181
  description: "User's Media",
391
- inputSchema: {
182
+ parameters: {
392
183
  "type": "object",
393
184
  "properties": {
394
185
  "user_id": {
@@ -402,7 +193,7 @@ export default async function register(api) {
402
193
  }
403
194
  },
404
195
  execute: async (input) => {
405
- const key = await ensureApiKey()
196
+ const key = ensureApiKey()
406
197
  const params = parseToolInput(input)
407
198
  return callSuperagnt(key, 'POST', '/user/medias', undefined, params)
408
199
  },
@@ -411,7 +202,7 @@ export default async function register(api) {
411
202
  api.registerTool({
412
203
  name: 'superagnt_x_user_likes_continuation_get',
413
204
  description: "Continuation User's Likes",
414
- inputSchema: {
205
+ parameters: {
415
206
  "type": "object",
416
207
  "properties": {
417
208
  "continuation_token": {
@@ -433,7 +224,7 @@ export default async function register(api) {
433
224
  ]
434
225
  },
435
226
  execute: async (input) => {
436
- const key = await ensureApiKey()
227
+ const key = ensureApiKey()
437
228
  const params = parseToolInput(input)
438
229
  return callSuperagnt(key, 'GET', '/user/likes/continuation', params)
439
230
  },
@@ -442,7 +233,7 @@ export default async function register(api) {
442
233
  api.registerTool({
443
234
  name: 'superagnt_x_user_likes_continuation_post',
444
235
  description: "Continuation User's Likes",
445
- inputSchema: {
236
+ parameters: {
446
237
  "type": "object",
447
238
  "properties": {
448
239
  "user_id": {
@@ -460,7 +251,7 @@ export default async function register(api) {
460
251
  }
461
252
  },
462
253
  execute: async (input) => {
463
- const key = await ensureApiKey()
254
+ const key = ensureApiKey()
464
255
  const params = parseToolInput(input)
465
256
  return callSuperagnt(key, 'POST', '/user/likes/continuation', undefined, params)
466
257
  },
@@ -469,7 +260,7 @@ export default async function register(api) {
469
260
  api.registerTool({
470
261
  name: 'superagnt_x_User_s_Likes_get__user_likes',
471
262
  description: "User's Likes",
472
- inputSchema: {
263
+ parameters: {
473
264
  "type": "object",
474
265
  "properties": {
475
266
  "user_id": {
@@ -486,7 +277,7 @@ export default async function register(api) {
486
277
  ]
487
278
  },
488
279
  execute: async (input) => {
489
- const key = await ensureApiKey()
280
+ const key = ensureApiKey()
490
281
  const params = parseToolInput(input)
491
282
  return callSuperagnt(key, 'GET', '/user/likes', params)
492
283
  },
@@ -495,7 +286,7 @@ export default async function register(api) {
495
286
  api.registerTool({
496
287
  name: 'superagnt_x_User_s_Likes_post__user_likes',
497
288
  description: "User's Likes",
498
- inputSchema: {
289
+ parameters: {
499
290
  "type": "object",
500
291
  "properties": {
501
292
  "user_id": {
@@ -509,7 +300,7 @@ export default async function register(api) {
509
300
  }
510
301
  },
511
302
  execute: async (input) => {
512
- const key = await ensureApiKey()
303
+ const key = ensureApiKey()
513
304
  const params = parseToolInput(input)
514
305
  return callSuperagnt(key, 'POST', '/user/likes', undefined, params)
515
306
  },
@@ -518,7 +309,7 @@ export default async function register(api) {
518
309
  api.registerTool({
519
310
  name: 'superagnt_x_user_followers_continuation_get',
520
311
  description: "Continuation User's Followers",
521
- inputSchema: {
312
+ parameters: {
522
313
  "type": "object",
523
314
  "properties": {
524
315
  "user_id": {
@@ -540,7 +331,7 @@ export default async function register(api) {
540
331
  ]
541
332
  },
542
333
  execute: async (input) => {
543
- const key = await ensureApiKey()
334
+ const key = ensureApiKey()
544
335
  const params = parseToolInput(input)
545
336
  return callSuperagnt(key, 'GET', '/user/followers/continuation', params)
546
337
  },
@@ -549,7 +340,7 @@ export default async function register(api) {
549
340
  api.registerTool({
550
341
  name: 'superagnt_x_user_followers_continuation_post',
551
342
  description: "Continuation User's Followers",
552
- inputSchema: {
343
+ parameters: {
553
344
  "type": "object",
554
345
  "properties": {
555
346
  "user_id": {
@@ -567,7 +358,7 @@ export default async function register(api) {
567
358
  }
568
359
  },
569
360
  execute: async (input) => {
570
- const key = await ensureApiKey()
361
+ const key = ensureApiKey()
571
362
  const params = parseToolInput(input)
572
363
  return callSuperagnt(key, 'POST', '/user/followers/continuation', undefined, params)
573
364
  },
@@ -576,7 +367,7 @@ export default async function register(api) {
576
367
  api.registerTool({
577
368
  name: 'superagnt_x_User_s_Followers_get__user_followers',
578
369
  description: "User's Followers",
579
- inputSchema: {
370
+ parameters: {
580
371
  "type": "object",
581
372
  "properties": {
582
373
  "limit": {
@@ -593,7 +384,7 @@ export default async function register(api) {
593
384
  ]
594
385
  },
595
386
  execute: async (input) => {
596
- const key = await ensureApiKey()
387
+ const key = ensureApiKey()
597
388
  const params = parseToolInput(input)
598
389
  return callSuperagnt(key, 'GET', '/user/followers', params)
599
390
  },
@@ -602,7 +393,7 @@ export default async function register(api) {
602
393
  api.registerTool({
603
394
  name: 'superagnt_x_User_s_Followers_post__user_followers',
604
395
  description: "User's Followers",
605
- inputSchema: {
396
+ parameters: {
606
397
  "type": "object",
607
398
  "properties": {
608
399
  "user_id": {
@@ -616,7 +407,7 @@ export default async function register(api) {
616
407
  }
617
408
  },
618
409
  execute: async (input) => {
619
- const key = await ensureApiKey()
410
+ const key = ensureApiKey()
620
411
  const params = parseToolInput(input)
621
412
  return callSuperagnt(key, 'POST', '/user/followers', undefined, params)
622
413
  },
@@ -625,7 +416,7 @@ export default async function register(api) {
625
416
  api.registerTool({
626
417
  name: 'superagnt_x_user_following_continuation_get',
627
418
  description: "User's Following Continuation",
628
- inputSchema: {
419
+ parameters: {
629
420
  "type": "object",
630
421
  "properties": {
631
422
  "continuation_token": {
@@ -647,7 +438,7 @@ export default async function register(api) {
647
438
  ]
648
439
  },
649
440
  execute: async (input) => {
650
- const key = await ensureApiKey()
441
+ const key = ensureApiKey()
651
442
  const params = parseToolInput(input)
652
443
  return callSuperagnt(key, 'GET', '/user/following/continuation', params)
653
444
  },
@@ -656,7 +447,7 @@ export default async function register(api) {
656
447
  api.registerTool({
657
448
  name: 'superagnt_x_user_following_continuation_post',
658
449
  description: "User's Following Continuation",
659
- inputSchema: {
450
+ parameters: {
660
451
  "type": "object",
661
452
  "properties": {
662
453
  "user_id": {
@@ -670,7 +461,7 @@ export default async function register(api) {
670
461
  }
671
462
  },
672
463
  execute: async (input) => {
673
- const key = await ensureApiKey()
464
+ const key = ensureApiKey()
674
465
  const params = parseToolInput(input)
675
466
  return callSuperagnt(key, 'POST', '/user/following/continuation', undefined, params)
676
467
  },
@@ -679,7 +470,7 @@ export default async function register(api) {
679
470
  api.registerTool({
680
471
  name: 'superagnt_x_User_s_Tweets_get__user_tweets',
681
472
  description: "User's Tweets",
682
- inputSchema: {
473
+ parameters: {
683
474
  "type": "object",
684
475
  "properties": {
685
476
  "include_pinned": {
@@ -705,7 +496,7 @@ export default async function register(api) {
705
496
  }
706
497
  },
707
498
  execute: async (input) => {
708
- const key = await ensureApiKey()
499
+ const key = ensureApiKey()
709
500
  const params = parseToolInput(input)
710
501
  return callSuperagnt(key, 'GET', '/user/tweets', params)
711
502
  },
@@ -714,7 +505,7 @@ export default async function register(api) {
714
505
  api.registerTool({
715
506
  name: 'superagnt_x_User_s_Tweets_post__user_tweets',
716
507
  description: "User's Tweets",
717
- inputSchema: {
508
+ parameters: {
718
509
  "type": "object",
719
510
  "properties": {
720
511
  "username": {
@@ -736,7 +527,7 @@ export default async function register(api) {
736
527
  }
737
528
  },
738
529
  execute: async (input) => {
739
- const key = await ensureApiKey()
530
+ const key = ensureApiKey()
740
531
  const params = parseToolInput(input)
741
532
  return callSuperagnt(key, 'POST', '/user/tweets', undefined, params)
742
533
  },
@@ -745,7 +536,7 @@ export default async function register(api) {
745
536
  api.registerTool({
746
537
  name: 'superagnt_x_user_tweets_continuation_get',
747
538
  description: "User's Tweets Continuation",
748
- inputSchema: {
539
+ parameters: {
749
540
  "type": "object",
750
541
  "properties": {
751
542
  "username": {
@@ -774,7 +565,7 @@ export default async function register(api) {
774
565
  ]
775
566
  },
776
567
  execute: async (input) => {
777
- const key = await ensureApiKey()
568
+ const key = ensureApiKey()
778
569
  const params = parseToolInput(input)
779
570
  return callSuperagnt(key, 'GET', '/user/tweets/continuation', params)
780
571
  },
@@ -783,7 +574,7 @@ export default async function register(api) {
783
574
  api.registerTool({
784
575
  name: 'superagnt_x_user_tweets_continuation_post',
785
576
  description: "User's Tweets Continuation",
786
- inputSchema: {
577
+ parameters: {
787
578
  "type": "object",
788
579
  "properties": {
789
580
  "username": {
@@ -809,7 +600,7 @@ export default async function register(api) {
809
600
  }
810
601
  },
811
602
  execute: async (input) => {
812
- const key = await ensureApiKey()
603
+ const key = ensureApiKey()
813
604
  const params = parseToolInput(input)
814
605
  return callSuperagnt(key, 'POST', '/user/tweets/continuation', undefined, params)
815
606
  },
@@ -818,7 +609,7 @@ export default async function register(api) {
818
609
  api.registerTool({
819
610
  name: 'superagnt_x_User_Details_get__user_details',
820
611
  description: "User Details",
821
- inputSchema: {
612
+ parameters: {
822
613
  "type": "object",
823
614
  "properties": {
824
615
  "username": {
@@ -832,7 +623,7 @@ export default async function register(api) {
832
623
  }
833
624
  },
834
625
  execute: async (input) => {
835
- const key = await ensureApiKey()
626
+ const key = ensureApiKey()
836
627
  const params = parseToolInput(input)
837
628
  return callSuperagnt(key, 'GET', '/user/details', params)
838
629
  },
@@ -841,7 +632,7 @@ export default async function register(api) {
841
632
  api.registerTool({
842
633
  name: 'superagnt_x_User_Details_post__user_details',
843
634
  description: "User Details",
844
- inputSchema: {
635
+ parameters: {
845
636
  "type": "object",
846
637
  "properties": {
847
638
  "username": {
@@ -851,7 +642,7 @@ export default async function register(api) {
851
642
  }
852
643
  },
853
644
  execute: async (input) => {
854
- const key = await ensureApiKey()
645
+ const key = ensureApiKey()
855
646
  const params = parseToolInput(input)
856
647
  return callSuperagnt(key, 'POST', '/user/details', undefined, params)
857
648
  },
@@ -860,7 +651,7 @@ export default async function register(api) {
860
651
  api.registerTool({
861
652
  name: 'superagnt_x_User_About_get__user_about',
862
653
  description: "User About",
863
- inputSchema: {
654
+ parameters: {
864
655
  "type": "object",
865
656
  "properties": {
866
657
  "username": {
@@ -873,7 +664,7 @@ export default async function register(api) {
873
664
  ]
874
665
  },
875
666
  execute: async (input) => {
876
- const key = await ensureApiKey()
667
+ const key = ensureApiKey()
877
668
  const params = parseToolInput(input)
878
669
  return callSuperagnt(key, 'GET', '/user/about', params)
879
670
  },
@@ -882,7 +673,7 @@ export default async function register(api) {
882
673
  api.registerTool({
883
674
  name: 'superagnt_x_tweet_replies_continuation_get',
884
675
  description: "Tweet Replies Continuation",
885
- inputSchema: {
676
+ parameters: {
886
677
  "type": "object",
887
678
  "properties": {
888
679
  "continuation_token": {
@@ -900,7 +691,7 @@ export default async function register(api) {
900
691
  ]
901
692
  },
902
693
  execute: async (input) => {
903
- const key = await ensureApiKey()
694
+ const key = ensureApiKey()
904
695
  const params = parseToolInput(input)
905
696
  return callSuperagnt(key, 'GET', '/tweet/replies/continuation', params)
906
697
  },
@@ -909,7 +700,7 @@ export default async function register(api) {
909
700
  api.registerTool({
910
701
  name: 'superagnt_x_tweet_replies_continuation_post',
911
702
  description: "Tweet Replies Continuation",
912
- inputSchema: {
703
+ parameters: {
913
704
  "type": "object",
914
705
  "properties": {
915
706
  "tweet_id": {
@@ -923,7 +714,7 @@ export default async function register(api) {
923
714
  }
924
715
  },
925
716
  execute: async (input) => {
926
- const key = await ensureApiKey()
717
+ const key = ensureApiKey()
927
718
  const params = parseToolInput(input)
928
719
  return callSuperagnt(key, 'POST', '/tweet/replies/continuation', undefined, params)
929
720
  },
@@ -932,7 +723,7 @@ export default async function register(api) {
932
723
  api.registerTool({
933
724
  name: 'superagnt_x_tweet_favoriters_continuation_get',
934
725
  description: "Tweet User Favoriters Continuation",
935
- inputSchema: {
726
+ parameters: {
936
727
  "type": "object",
937
728
  "properties": {
938
729
  "continuation_token": {
@@ -950,7 +741,7 @@ export default async function register(api) {
950
741
  ]
951
742
  },
952
743
  execute: async (input) => {
953
- const key = await ensureApiKey()
744
+ const key = ensureApiKey()
954
745
  const params = parseToolInput(input)
955
746
  return callSuperagnt(key, 'GET', '/tweet/favoriters/continuation', params)
956
747
  },
@@ -959,7 +750,7 @@ export default async function register(api) {
959
750
  api.registerTool({
960
751
  name: 'superagnt_x_tweet_retweets_continuation_get',
961
752
  description: "Tweet User Retweets Continuation",
962
- inputSchema: {
753
+ parameters: {
963
754
  "type": "object",
964
755
  "properties": {
965
756
  "continuation_token": {
@@ -981,7 +772,7 @@ export default async function register(api) {
981
772
  ]
982
773
  },
983
774
  execute: async (input) => {
984
- const key = await ensureApiKey()
775
+ const key = ensureApiKey()
985
776
  const params = parseToolInput(input)
986
777
  return callSuperagnt(key, 'GET', '/tweet/retweets/continuation', params)
987
778
  },
@@ -990,7 +781,7 @@ export default async function register(api) {
990
781
  api.registerTool({
991
782
  name: 'superagnt_x_Tweet_Details_get__tweet_details',
992
783
  description: "Tweet Details",
993
- inputSchema: {
784
+ parameters: {
994
785
  "type": "object",
995
786
  "properties": {
996
787
  "tweet_id": {
@@ -1003,7 +794,7 @@ export default async function register(api) {
1003
794
  ]
1004
795
  },
1005
796
  execute: async (input) => {
1006
- const key = await ensureApiKey()
797
+ const key = ensureApiKey()
1007
798
  const params = parseToolInput(input)
1008
799
  return callSuperagnt(key, 'GET', '/tweet/details', params)
1009
800
  },
@@ -1012,7 +803,7 @@ export default async function register(api) {
1012
803
  api.registerTool({
1013
804
  name: 'superagnt_x_Tweet_Details_post__tweet_details',
1014
805
  description: "Tweet Details",
1015
- inputSchema: {
806
+ parameters: {
1016
807
  "type": "object",
1017
808
  "properties": {
1018
809
  "tweet_id": {
@@ -1022,7 +813,7 @@ export default async function register(api) {
1022
813
  }
1023
814
  },
1024
815
  execute: async (input) => {
1025
- const key = await ensureApiKey()
816
+ const key = ensureApiKey()
1026
817
  const params = parseToolInput(input)
1027
818
  return callSuperagnt(key, 'POST', '/tweet/details', undefined, params)
1028
819
  },
@@ -1031,7 +822,7 @@ export default async function register(api) {
1031
822
  api.registerTool({
1032
823
  name: 'superagnt_x_Tweet_User_Favoriters_get__tweet_favoriters',
1033
824
  description: "Tweet User Favoriters",
1034
- inputSchema: {
825
+ parameters: {
1035
826
  "type": "object",
1036
827
  "properties": {
1037
828
  "tweet_id": {
@@ -1044,7 +835,7 @@ export default async function register(api) {
1044
835
  ]
1045
836
  },
1046
837
  execute: async (input) => {
1047
- const key = await ensureApiKey()
838
+ const key = ensureApiKey()
1048
839
  const params = parseToolInput(input)
1049
840
  return callSuperagnt(key, 'GET', '/tweet/favoriters', params)
1050
841
  },
@@ -1053,7 +844,7 @@ export default async function register(api) {
1053
844
  api.registerTool({
1054
845
  name: 'superagnt_x_Tweet_User_Retweets_get__tweet_retweets',
1055
846
  description: "Tweet User Retweets",
1056
- inputSchema: {
847
+ parameters: {
1057
848
  "type": "object",
1058
849
  "properties": {
1059
850
  "tweet_id": {
@@ -1070,7 +861,7 @@ export default async function register(api) {
1070
861
  ]
1071
862
  },
1072
863
  execute: async (input) => {
1073
- const key = await ensureApiKey()
864
+ const key = ensureApiKey()
1074
865
  const params = parseToolInput(input)
1075
866
  return callSuperagnt(key, 'GET', '/tweet/retweets', params)
1076
867
  },
@@ -1079,7 +870,7 @@ export default async function register(api) {
1079
870
  api.registerTool({
1080
871
  name: 'superagnt_x_Tweet_Replies_get__tweet_replies',
1081
872
  description: "Tweet Replies",
1082
- inputSchema: {
873
+ parameters: {
1083
874
  "type": "object",
1084
875
  "properties": {
1085
876
  "tweet_id": {
@@ -1092,7 +883,7 @@ export default async function register(api) {
1092
883
  ]
1093
884
  },
1094
885
  execute: async (input) => {
1095
- const key = await ensureApiKey()
886
+ const key = ensureApiKey()
1096
887
  const params = parseToolInput(input)
1097
888
  return callSuperagnt(key, 'GET', '/tweet/replies', params)
1098
889
  },
@@ -1101,7 +892,7 @@ export default async function register(api) {
1101
892
  api.registerTool({
1102
893
  name: 'superagnt_x_Tweet_Replies_post__tweet_replies',
1103
894
  description: "Tweet Replies",
1104
- inputSchema: {
895
+ parameters: {
1105
896
  "type": "object",
1106
897
  "properties": {
1107
898
  "tweet_id": {
@@ -1111,7 +902,7 @@ export default async function register(api) {
1111
902
  }
1112
903
  },
1113
904
  execute: async (input) => {
1114
- const key = await ensureApiKey()
905
+ const key = ensureApiKey()
1115
906
  const params = parseToolInput(input)
1116
907
  return callSuperagnt(key, 'POST', '/tweet/replies', undefined, params)
1117
908
  },
@@ -1120,7 +911,7 @@ export default async function register(api) {
1120
911
  api.registerTool({
1121
912
  name: 'superagnt_x_User_s_Following_get__user_following',
1122
913
  description: "User's Following",
1123
- inputSchema: {
914
+ parameters: {
1124
915
  "type": "object",
1125
916
  "properties": {
1126
917
  "user_id": {
@@ -1137,7 +928,7 @@ export default async function register(api) {
1137
928
  ]
1138
929
  },
1139
930
  execute: async (input) => {
1140
- const key = await ensureApiKey()
931
+ const key = ensureApiKey()
1141
932
  const params = parseToolInput(input)
1142
933
  return callSuperagnt(key, 'GET', '/user/following', params)
1143
934
  },
@@ -1146,7 +937,7 @@ export default async function register(api) {
1146
937
  api.registerTool({
1147
938
  name: 'superagnt_x_User_s_Following_post__user_following',
1148
939
  description: "User's Following",
1149
- inputSchema: {
940
+ parameters: {
1150
941
  "type": "object",
1151
942
  "properties": {
1152
943
  "user_id": {
@@ -1160,7 +951,7 @@ export default async function register(api) {
1160
951
  }
1161
952
  },
1162
953
  execute: async (input) => {
1163
- const key = await ensureApiKey()
954
+ const key = ensureApiKey()
1164
955
  const params = parseToolInput(input)
1165
956
  return callSuperagnt(key, 'POST', '/user/following', undefined, params)
1166
957
  },
@@ -1169,7 +960,7 @@ export default async function register(api) {
1169
960
  api.registerTool({
1170
961
  name: 'superagnt_x_lists_tweets_continuation_get',
1171
962
  description: "Lists Tweets Continuation",
1172
- inputSchema: {
963
+ parameters: {
1173
964
  "type": "object",
1174
965
  "properties": {
1175
966
  "limit": {
@@ -1191,7 +982,7 @@ export default async function register(api) {
1191
982
  ]
1192
983
  },
1193
984
  execute: async (input) => {
1194
- const key = await ensureApiKey()
985
+ const key = ensureApiKey()
1195
986
  const params = parseToolInput(input)
1196
987
  return callSuperagnt(key, 'GET', '/lists/tweets/continuation', params)
1197
988
  },
@@ -1200,7 +991,7 @@ export default async function register(api) {
1200
991
  api.registerTool({
1201
992
  name: 'superagnt_x_search_continuation_get',
1202
993
  description: "Search Continuation",
1203
- inputSchema: {
994
+ parameters: {
1204
995
  "type": "object",
1205
996
  "properties": {
1206
997
  "end_date": {
@@ -1250,7 +1041,7 @@ export default async function register(api) {
1250
1041
  ]
1251
1042
  },
1252
1043
  execute: async (input) => {
1253
- const key = await ensureApiKey()
1044
+ const key = ensureApiKey()
1254
1045
  const params = parseToolInput(input)
1255
1046
  return callSuperagnt(key, 'GET', '/search/search/continuation', params)
1256
1047
  },
@@ -1259,7 +1050,7 @@ export default async function register(api) {
1259
1050
  api.registerTool({
1260
1051
  name: 'superagnt_x_search_continuation_post',
1261
1052
  description: "Search Continuation",
1262
- inputSchema: {
1053
+ parameters: {
1263
1054
  "type": "object",
1264
1055
  "properties": {
1265
1056
  "query": {
@@ -1297,7 +1088,7 @@ export default async function register(api) {
1297
1088
  }
1298
1089
  },
1299
1090
  execute: async (input) => {
1300
- const key = await ensureApiKey()
1091
+ const key = ensureApiKey()
1301
1092
  const params = parseToolInput(input)
1302
1093
  return callSuperagnt(key, 'POST', '/search/search/continuation', undefined, params)
1303
1094
  },
@@ -1306,7 +1097,7 @@ export default async function register(api) {
1306
1097
  api.registerTool({
1307
1098
  name: 'superagnt_x_ai_topic_classification',
1308
1099
  description: "Topic Classification",
1309
- inputSchema: {
1100
+ parameters: {
1310
1101
  "type": "object",
1311
1102
  "properties": {
1312
1103
  "text": {
@@ -1319,7 +1110,7 @@ export default async function register(api) {
1319
1110
  ]
1320
1111
  },
1321
1112
  execute: async (input) => {
1322
- const key = await ensureApiKey()
1113
+ const key = ensureApiKey()
1323
1114
  const params = parseToolInput(input)
1324
1115
  return callSuperagnt(key, 'GET', '/ai/topic-classification', params)
1325
1116
  },
@@ -1328,7 +1119,7 @@ export default async function register(api) {
1328
1119
  api.registerTool({
1329
1120
  name: 'superagnt_x_Detect_post__translate_detect',
1330
1121
  description: "Detect",
1331
- inputSchema: {
1122
+ parameters: {
1332
1123
  "type": "object",
1333
1124
  "properties": {
1334
1125
  "text": {
@@ -1338,7 +1129,7 @@ export default async function register(api) {
1338
1129
  }
1339
1130
  },
1340
1131
  execute: async (input) => {
1341
- const key = await ensureApiKey()
1132
+ const key = ensureApiKey()
1342
1133
  const params = parseToolInput(input)
1343
1134
  return callSuperagnt(key, 'POST', '/translate/detect', undefined, params)
1344
1135
  },
@@ -1347,7 +1138,7 @@ export default async function register(api) {
1347
1138
  api.registerTool({
1348
1139
  name: 'superagnt_x_ai_named_entity_recognition',
1349
1140
  description: "Named Entity Recognition",
1350
- inputSchema: {
1141
+ parameters: {
1351
1142
  "type": "object",
1352
1143
  "properties": {
1353
1144
  "text": {
@@ -1360,7 +1151,7 @@ export default async function register(api) {
1360
1151
  ]
1361
1152
  },
1362
1153
  execute: async (input) => {
1363
- const key = await ensureApiKey()
1154
+ const key = ensureApiKey()
1364
1155
  const params = parseToolInput(input)
1365
1156
  return callSuperagnt(key, 'GET', '/ai/named-entity-recognition', params)
1366
1157
  },
@@ -1369,7 +1160,7 @@ export default async function register(api) {
1369
1160
  api.registerTool({
1370
1161
  name: 'superagnt_x_Sentiment_Analysis_get__ai_sentiment_analysis',
1371
1162
  description: "Sentiment Analysis",
1372
- inputSchema: {
1163
+ parameters: {
1373
1164
  "type": "object",
1374
1165
  "properties": {
1375
1166
  "text": {
@@ -1382,7 +1173,7 @@ export default async function register(api) {
1382
1173
  ]
1383
1174
  },
1384
1175
  execute: async (input) => {
1385
- const key = await ensureApiKey()
1176
+ const key = ensureApiKey()
1386
1177
  const params = parseToolInput(input)
1387
1178
  return callSuperagnt(key, 'GET', '/ai/sentiment-analysis', params)
1388
1179
  },
@@ -1391,7 +1182,7 @@ export default async function register(api) {
1391
1182
  api.registerTool({
1392
1183
  name: 'superagnt_x_Translate_post__translate',
1393
1184
  description: "Translate",
1394
- inputSchema: {
1185
+ parameters: {
1395
1186
  "type": "object",
1396
1187
  "properties": {
1397
1188
  "dest": {
@@ -1405,7 +1196,7 @@ export default async function register(api) {
1405
1196
  }
1406
1197
  },
1407
1198
  execute: async (input) => {
1408
- const key = await ensureApiKey()
1199
+ const key = ensureApiKey()
1409
1200
  const params = parseToolInput(input)
1410
1201
  return callSuperagnt(key, 'POST', '/translate', undefined, params)
1411
1202
  },
@@ -1414,12 +1205,12 @@ export default async function register(api) {
1414
1205
  api.registerTool({
1415
1206
  name: 'superagnt_x_trends_available_locations',
1416
1207
  description: "Available Locations (Beta)",
1417
- inputSchema: {
1208
+ parameters: {
1418
1209
  "type": "object",
1419
1210
  "properties": {}
1420
1211
  },
1421
1212
  execute: async (input) => {
1422
- const key = await ensureApiKey()
1213
+ const key = ensureApiKey()
1423
1214
  const params = parseToolInput(input)
1424
1215
  return callSuperagnt(key, 'GET', '/trends/available', params)
1425
1216
  },
@@ -1428,7 +1219,7 @@ export default async function register(api) {
1428
1219
  api.registerTool({
1429
1220
  name: 'superagnt_x_Get_trends_near_a_location__Beta__get__trends',
1430
1221
  description: "Get trends near a location (Beta)",
1431
- inputSchema: {
1222
+ parameters: {
1432
1223
  "type": "object",
1433
1224
  "properties": {
1434
1225
  "woeid": {
@@ -1441,7 +1232,7 @@ export default async function register(api) {
1441
1232
  ]
1442
1233
  },
1443
1234
  execute: async (input) => {
1444
- const key = await ensureApiKey()
1235
+ const key = ensureApiKey()
1445
1236
  const params = parseToolInput(input)
1446
1237
  return callSuperagnt(key, 'GET', '/trends/', params)
1447
1238
  },
@@ -1450,7 +1241,7 @@ export default async function register(api) {
1450
1241
  api.registerTool({
1451
1242
  name: 'superagnt_x_Geo_Search___Beta__get__search_geo',
1452
1243
  description: "Geo Search (Beta)",
1453
- inputSchema: {
1244
+ parameters: {
1454
1245
  "type": "object",
1455
1246
  "properties": {
1456
1247
  "section": {
@@ -1487,7 +1278,7 @@ export default async function register(api) {
1487
1278
  ]
1488
1279
  },
1489
1280
  execute: async (input) => {
1490
- const key = await ensureApiKey()
1281
+ const key = ensureApiKey()
1491
1282
  const params = parseToolInput(input)
1492
1283
  return callSuperagnt(key, 'GET', '/search/geo', params)
1493
1284
  },
@@ -1496,7 +1287,7 @@ export default async function register(api) {
1496
1287
  api.registerTool({
1497
1288
  name: 'superagnt_x_Lists_Tweets_get__lists_tweets',
1498
1289
  description: "Lists Tweets",
1499
- inputSchema: {
1290
+ parameters: {
1500
1291
  "type": "object",
1501
1292
  "properties": {
1502
1293
  "limit": {
@@ -1513,7 +1304,7 @@ export default async function register(api) {
1513
1304
  ]
1514
1305
  },
1515
1306
  execute: async (input) => {
1516
- const key = await ensureApiKey()
1307
+ const key = ensureApiKey()
1517
1308
  const params = parseToolInput(input)
1518
1309
  return callSuperagnt(key, 'GET', '/lists/tweets', params)
1519
1310
  },
@@ -1522,7 +1313,7 @@ export default async function register(api) {
1522
1313
  api.registerTool({
1523
1314
  name: 'superagnt_x_Lists_Details_get__lists_details',
1524
1315
  description: "Lists Details",
1525
- inputSchema: {
1316
+ parameters: {
1526
1317
  "type": "object",
1527
1318
  "properties": {
1528
1319
  "list_id": {
@@ -1535,7 +1326,7 @@ export default async function register(api) {
1535
1326
  ]
1536
1327
  },
1537
1328
  execute: async (input) => {
1538
- const key = await ensureApiKey()
1329
+ const key = ensureApiKey()
1539
1330
  const params = parseToolInput(input)
1540
1331
  return callSuperagnt(key, 'GET', '/lists/details', params)
1541
1332
  },
@@ -1544,7 +1335,7 @@ export default async function register(api) {
1544
1335
  api.registerTool({
1545
1336
  name: 'superagnt_x_Search_get__search_search',
1546
1337
  description: "Search",
1547
- inputSchema: {
1338
+ parameters: {
1548
1339
  "type": "object",
1549
1340
  "properties": {
1550
1341
  "limit": {
@@ -1589,7 +1380,7 @@ export default async function register(api) {
1589
1380
  ]
1590
1381
  },
1591
1382
  execute: async (input) => {
1592
- const key = await ensureApiKey()
1383
+ const key = ensureApiKey()
1593
1384
  const params = parseToolInput(input)
1594
1385
  return callSuperagnt(key, 'GET', '/search/search', params)
1595
1386
  },
@@ -1598,7 +1389,7 @@ export default async function register(api) {
1598
1389
  api.registerTool({
1599
1390
  name: 'superagnt_x_Search_post__search_search',
1600
1391
  description: "Search",
1601
- inputSchema: {
1392
+ parameters: {
1602
1393
  "type": "object",
1603
1394
  "properties": {
1604
1395
  "query": {
@@ -1632,7 +1423,7 @@ export default async function register(api) {
1632
1423
  }
1633
1424
  },
1634
1425
  execute: async (input) => {
1635
- const key = await ensureApiKey()
1426
+ const key = ensureApiKey()
1636
1427
  const params = parseToolInput(input)
1637
1428
  return callSuperagnt(key, 'POST', '/search/search', undefined, params)
1638
1429
  },
@@ -1641,7 +1432,7 @@ export default async function register(api) {
1641
1432
  api.registerTool({
1642
1433
  name: 'superagnt_x_Hashtag_get__hashtag_hashtag',
1643
1434
  description: "Hashtag",
1644
- inputSchema: {
1435
+ parameters: {
1645
1436
  "type": "object",
1646
1437
  "properties": {
1647
1438
  "section": {
@@ -1662,7 +1453,7 @@ export default async function register(api) {
1662
1453
  ]
1663
1454
  },
1664
1455
  execute: async (input) => {
1665
- const key = await ensureApiKey()
1456
+ const key = ensureApiKey()
1666
1457
  const params = parseToolInput(input)
1667
1458
  return callSuperagnt(key, 'GET', '/hashtag/hashtag', params)
1668
1459
  },
@@ -1671,7 +1462,7 @@ export default async function register(api) {
1671
1462
  api.registerTool({
1672
1463
  name: 'superagnt_x_Hashtag_post__hashtag_hashtag',
1673
1464
  description: "Hashtag",
1674
- inputSchema: {
1465
+ parameters: {
1675
1466
  "type": "object",
1676
1467
  "properties": {
1677
1468
  "hashtag": {
@@ -1693,7 +1484,7 @@ export default async function register(api) {
1693
1484
  }
1694
1485
  },
1695
1486
  execute: async (input) => {
1696
- const key = await ensureApiKey()
1487
+ const key = ensureApiKey()
1697
1488
  const params = parseToolInput(input)
1698
1489
  return callSuperagnt(key, 'POST', '/hashtag/hashtag', undefined, params)
1699
1490
  },
@@ -1702,7 +1493,7 @@ export default async function register(api) {
1702
1493
  api.registerTool({
1703
1494
  name: 'superagnt_x_hashtag_continuation_get',
1704
1495
  description: "Hashtag Continuation",
1705
- inputSchema: {
1496
+ parameters: {
1706
1497
  "type": "object",
1707
1498
  "properties": {
1708
1499
  "continuation_token": {
@@ -1728,7 +1519,7 @@ export default async function register(api) {
1728
1519
  ]
1729
1520
  },
1730
1521
  execute: async (input) => {
1731
- const key = await ensureApiKey()
1522
+ const key = ensureApiKey()
1732
1523
  const params = parseToolInput(input)
1733
1524
  return callSuperagnt(key, 'GET', '/hashtag/hashtag/continuation', params)
1734
1525
  },
@@ -1737,7 +1528,7 @@ export default async function register(api) {
1737
1528
  api.registerTool({
1738
1529
  name: 'superagnt_x_hashtag_continuation_post',
1739
1530
  description: "Hashtag Continuation",
1740
- inputSchema: {
1531
+ parameters: {
1741
1532
  "type": "object",
1742
1533
  "properties": {
1743
1534
  "hashtag": {
@@ -1763,12 +1554,9 @@ export default async function register(api) {
1763
1554
  }
1764
1555
  },
1765
1556
  execute: async (input) => {
1766
- const key = await ensureApiKey()
1557
+ const key = ensureApiKey()
1767
1558
  const params = parseToolInput(input)
1768
1559
  return callSuperagnt(key, 'POST', '/hashtag/hashtag/continuation', undefined, params)
1769
1560
  },
1770
1561
  })
1771
-
1772
- promptState.toolCount = 52
1773
- promptState.ready = true
1774
1562
  }
@@ -2,7 +2,63 @@
2
2
  "id": "x-twitter-data",
3
3
  "name": "X (Twitter) Data",
4
4
  "description": "Unified access to tweets, user profiles, followers, search, and hashtag streams. Built for LLMs and automation — not one-off scraping.",
5
- "version": "2.0.2",
5
+ "version": "2.0.4",
6
+ "contracts": {
7
+ "tools": [
8
+ "superagnt_x_user_medias_continuation_get",
9
+ "superagnt_x_user_medias_continuation_post",
10
+ "superagnt_x_User_s_Media_get__user_medias",
11
+ "superagnt_x_User_s_Media_post__user_medias",
12
+ "superagnt_x_user_likes_continuation_get",
13
+ "superagnt_x_user_likes_continuation_post",
14
+ "superagnt_x_User_s_Likes_get__user_likes",
15
+ "superagnt_x_User_s_Likes_post__user_likes",
16
+ "superagnt_x_user_followers_continuation_get",
17
+ "superagnt_x_user_followers_continuation_post",
18
+ "superagnt_x_User_s_Followers_get__user_followers",
19
+ "superagnt_x_User_s_Followers_post__user_followers",
20
+ "superagnt_x_user_following_continuation_get",
21
+ "superagnt_x_user_following_continuation_post",
22
+ "superagnt_x_User_s_Tweets_get__user_tweets",
23
+ "superagnt_x_User_s_Tweets_post__user_tweets",
24
+ "superagnt_x_user_tweets_continuation_get",
25
+ "superagnt_x_user_tweets_continuation_post",
26
+ "superagnt_x_User_Details_get__user_details",
27
+ "superagnt_x_User_Details_post__user_details",
28
+ "superagnt_x_User_About_get__user_about",
29
+ "superagnt_x_tweet_replies_continuation_get",
30
+ "superagnt_x_tweet_replies_continuation_post",
31
+ "superagnt_x_tweet_favoriters_continuation_get",
32
+ "superagnt_x_tweet_retweets_continuation_get",
33
+ "superagnt_x_Tweet_Details_get__tweet_details",
34
+ "superagnt_x_Tweet_Details_post__tweet_details",
35
+ "superagnt_x_Tweet_User_Favoriters_get__tweet_favoriters",
36
+ "superagnt_x_Tweet_User_Retweets_get__tweet_retweets",
37
+ "superagnt_x_Tweet_Replies_get__tweet_replies",
38
+ "superagnt_x_Tweet_Replies_post__tweet_replies",
39
+ "superagnt_x_User_s_Following_get__user_following",
40
+ "superagnt_x_User_s_Following_post__user_following",
41
+ "superagnt_x_lists_tweets_continuation_get",
42
+ "superagnt_x_search_continuation_get",
43
+ "superagnt_x_search_continuation_post",
44
+ "superagnt_x_ai_topic_classification",
45
+ "superagnt_x_Detect_post__translate_detect",
46
+ "superagnt_x_ai_named_entity_recognition",
47
+ "superagnt_x_Sentiment_Analysis_get__ai_sentiment_analysis",
48
+ "superagnt_x_Translate_post__translate",
49
+ "superagnt_x_trends_available_locations",
50
+ "superagnt_x_Get_trends_near_a_location__Beta__get__trends",
51
+ "superagnt_x_Geo_Search___Beta__get__search_geo",
52
+ "superagnt_x_Lists_Tweets_get__lists_tweets",
53
+ "superagnt_x_Lists_Details_get__lists_details",
54
+ "superagnt_x_Search_get__search_search",
55
+ "superagnt_x_Search_post__search_search",
56
+ "superagnt_x_Hashtag_get__hashtag_hashtag",
57
+ "superagnt_x_Hashtag_post__hashtag_hashtag",
58
+ "superagnt_x_hashtag_continuation_get",
59
+ "superagnt_x_hashtag_continuation_post"
60
+ ]
61
+ },
6
62
  "configSchema": {
7
63
  "type": "object",
8
64
  "properties": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superagnt/x-twitter-data",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "type": "module",
5
5
  "description": "Unified access to tweets, user profiles, followers, search, and hashtag streams. Built for LLMs and automation — not one-off scraping.",
6
6
  "main": "index.js",