@bitget-ai/getagent-skill 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/.claude-plugin/marketplace.json +15 -4
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/VERSION +1 -1
  4. package/package.json +1 -1
  5. package/skills/getagent/SKILL.md +145 -10
  6. package/skills/getagent/references/api/confirm.md +59 -0
  7. package/skills/getagent/references/api/index.md +9 -7
  8. package/skills/getagent/references/api/publish.md +13 -10
  9. package/skills/getagent/references/api/run.md +5 -5
  10. package/skills/getagent/references/api/upload.md +22 -4
  11. package/skills/getagent/references/backtest-engine.md +11 -10
  12. package/skills/getagent/references/package-schema.md +8 -7
  13. package/skills/getagent/references/sdk/backtest/catalog.md +5 -3
  14. package/skills/getagent/references/sdk/data/catalog.md +2 -4
  15. package/skills/getagent/references/sdk/data/commodity.md +46 -0
  16. package/skills/getagent/references/sdk/data/crypto.md +1468 -88
  17. package/skills/getagent/references/sdk/data/currency.md +48 -0
  18. package/skills/getagent/references/sdk/data/derivatives.md +126 -0
  19. package/skills/getagent/references/sdk/data/economy.md +736 -0
  20. package/skills/getagent/references/sdk/data/equity.md +1462 -0
  21. package/skills/getagent/references/sdk/data/etf.md +510 -0
  22. package/skills/getagent/references/sdk/data/fixedincome.md +485 -0
  23. package/skills/getagent/references/sdk/data/news.md +76 -0
  24. package/skills/getagent/references/sdk/data/regulators.md +85 -0
  25. package/skills/getagent/references/sdk/data/sentiment.md +176 -0
  26. package/skills/getagent/references/sdk.md +14 -5
  27. package/skills/getagent/scripts/validate.py +9 -29
  28. package/skills/getagent/scripts/version_check.sh +13 -12
  29. package/skills/getagent/references/sdk/data/playbook-supported.md +0 -9236
@@ -61,6 +61,37 @@ Summary: Company
61
61
  | `business_relevance_less_than` | `no` | `number | null` | `-` | News stories will have a business relevance score less than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. |
62
62
  | `offset` | `no` | `integer | null` | `0` | Page offset, used in conjunction with limit. |
63
63
 
64
+ #### Response fields
65
+
66
+ | Field | Type | Notes |
67
+ |---|---|---|
68
+ | `date` | `string` | The date of the data. The date of publication. |
69
+ | `title` | `string` | Title of the article. |
70
+ | `author` | `string` | Author of the article. |
71
+ | `excerpt` | `string` | Excerpt of the article text. |
72
+ | `body` | `string` | Body of the article text. |
73
+ | `images` | `object` | Images associated with the article. |
74
+ | `url` | `string` | URL to the article. |
75
+ | `symbols` | `string` | Symbols associated with the article. |
76
+ | `source` | `string` | Name of the news site. |
77
+ | `summary` | `string` | The summary of the news article. |
78
+ | `topics` | `string` | The topics related to the news article. |
79
+ | `word_count` | `integer` | The word count of the news article. |
80
+ | `business_relevance` | `number` | How strongly correlated the news article is to the business. |
81
+ | `sentiment` | `string` | The sentiment of the news article - i.e, negative, positive. |
82
+ | `sentiment_confidence` | `number` | The confidence score of the sentiment rating. |
83
+ | `language` | `string` | The language of the news article. |
84
+ | `spam` | `boolean` | Whether the news article is spam. |
85
+ | `copyright` | `string` | The copyright notice of the news article. |
86
+ | `id` | `string` | Article ID. |
87
+ | `security` | `object` | The Intrinio Security object. Contains the security details related to the news article. |
88
+ | `channels` | `string` | Channels associated with the news. |
89
+ | `tags` | `string` | Tags associated with the news. |
90
+ | `updated` | `string` | Updated date of the news. |
91
+ | `original_id` | `string` | Original ID of the news article. |
92
+ | `article_id` | `integer` | Unique ID of the news article. |
93
+ | `crawl_date` | `string` | Date the news article was crawled. |
94
+
64
95
  ---
65
96
 
66
97
  ### `news.label_search`
@@ -91,6 +122,16 @@ Summary: Label Search
91
122
  | `page` | `no` | `integer | null` | `1` | Page number for pagination (1-based). Defaults to 1. |
92
123
  | `page_size` | `no` | `integer | null` | `10` | Number of news items per page. Defaults to 10. |
93
124
 
125
+ #### Response fields
126
+
127
+ | Field | Type | Notes |
128
+ |---|---|---|
129
+ | `title` | `string` | News article title. |
130
+ | `content` | `string` | Full HTML/text content of the news article. |
131
+ | `labels` | `array` | Human-readable label names associated with the article (e.g. ['Crypto', 'Stocks']). |
132
+ | `language` | `string` | Locale string of the article language (e.g. 'en', 'zh-CN'). |
133
+ | `published_at` | `string` | Publication timestamp of the article. |
134
+
94
135
  ---
95
136
 
96
137
  ### `news.world`
@@ -141,3 +182,38 @@ Summary: World
141
182
  | `business_relevance_greater_than` | `no` | `number | null` | `-` | News stories will have a business relevance score more than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. |
142
183
  | `business_relevance_less_than` | `no` | `number | null` | `-` | News stories will have a business relevance score less than this value. Unsupported for yahoo source. Value is a decimal between 0 and 1. |
143
184
  | `offset` | `no` | `integer | null` | `0` | Page offset, used in conjunction with limit. |
185
+
186
+ #### Response fields
187
+
188
+ | Field | Type | Notes |
189
+ |---|---|---|
190
+ | `date` | `string` | The date of the data. The date of publication. |
191
+ | `title` | `string` | Title of the article. |
192
+ | `author` | `string` | Author of the article. |
193
+ | `excerpt` | `string` | Excerpt of the article text. |
194
+ | `body` | `string` | Body of the article text. |
195
+ | `images` | `object` | Images associated with the article. |
196
+ | `url` | `string` | URL to the article. |
197
+ | `source` | `string` | News source. |
198
+ | `tags` | `array` | Tags for the article. |
199
+ | `score` | `number` | Search relevance score for the article. |
200
+ | `symbols` | `string` | Ticker tagged in the fetched news. |
201
+ | `article_id` | `integer` | Unique ID of the news article. |
202
+ | `site` | `string` | News source. |
203
+ | `crawl_date` | `string` | Date the news article was crawled. |
204
+ | `channels` | `string` | Channels associated with the news. |
205
+ | `stocks` | `string` | Stocks associated with the news. |
206
+ | `updated` | `string` | Updated date of the news. |
207
+ | `id` | `string` | Article ID. |
208
+ | `updated_id` | `string` | Updated article ID if the article was updated. |
209
+ | `summary` | `string` | The summary of the news article. |
210
+ | `topics` | `string` | The topics related to the news article. |
211
+ | `word_count` | `integer` | The word count of the news article. |
212
+ | `business_relevance` | `number` | How strongly correlated the news article is to the business. |
213
+ | `sentiment` | `string` | The sentiment of the news article - i.e, negative, positive. |
214
+ | `sentiment_confidence` | `number` | The confidence score of the sentiment rating. |
215
+ | `language` | `string` | The language of the news article. |
216
+ | `spam` | `boolean` | Whether the news article is spam. |
217
+ | `copyright` | `string` | The copyright notice of the news article. |
218
+ | `company` | `object` | The Intrinio Company object. Contains details company reference data. |
219
+ | `security` | `object` | The Intrinio Security object. Contains the security details related to the news article. |
@@ -15,6 +15,9 @@ are callable through the DataSDK wrapper.
15
15
  - [`regulators.sec.schema_files`](#regulatorssecschema-files)
16
16
  - [`regulators.sec.sic_search`](#regulatorssecsic-search)
17
17
  - [`regulators.sec.symbol_map`](#regulatorssecsymbol-map)
18
+ - [`uscongress.bill_info`](#uscongressbill-info)
19
+ - [`uscongress.bill_text_urls`](#uscongressbill-text-urls)
20
+ - [`uscongress.bills`](#uscongressbills)
18
21
 
19
22
  ## Endpoint reference
20
23
 
@@ -277,3 +280,85 @@ Summary: Symbol Map
277
280
  |---|---|---|---|---|
278
281
  | `query` | `yes` | `string` | `-` | Search query. |
279
282
  | `use_cache` | `no` | `boolean | null` | `true` | Whether or not to use cache. If True, cache will store for seven days. |
283
+
284
+ ---
285
+
286
+ ### `uscongress.bill_info`
287
+
288
+ ```python
289
+ data.uscongress.bill_info(bill_url=None)
290
+ ```
291
+
292
+ Summary: Bill Info
293
+
294
+ | Field | Value |
295
+ |---|---|
296
+ | Endpoint ID | `uscongress.bill_info` |
297
+ | HTTP | `GET` |
298
+ | Path | `/inner/v1/agent-data/regulators/uscongress/bill_info` |
299
+ | SDK | `supported` |
300
+ | Host | `supported` |
301
+ | Notes | - |
302
+
303
+ #### Query parameters
304
+
305
+ | Param | Required | Type | Default | Notes |
306
+ |---|---|---|---|---|
307
+ | `bill_url` | `no` | `string | null` | `-` | Enter a base URL of a bill (e.g., 'https://api.congress.gov/v3/bill/119/s/1947?format=json'). Alternatively, you can enter a bill number (e.g., '119/s/1947'). |
308
+
309
+ ---
310
+
311
+ ### `uscongress.bill_text_urls`
312
+
313
+ ```python
314
+ data.uscongress.bill_text_urls(bill_url=..., is_workspace=False)
315
+ ```
316
+
317
+ Summary: Bill Text Urls
318
+
319
+ | Field | Value |
320
+ |---|---|
321
+ | Endpoint ID | `uscongress.bill_text_urls` |
322
+ | HTTP | `GET` |
323
+ | Path | `/inner/v1/agent-data/regulators/uscongress/bill_text_urls` |
324
+ | SDK | `supported` |
325
+ | Host | `supported` |
326
+ | Notes | - |
327
+
328
+ #### Query parameters
329
+
330
+ | Param | Required | Type | Default | Notes |
331
+ |---|---|---|---|---|
332
+ | `bill_url` | `yes` | `string` | `-` | Base URL or bill number of the bill to retrieve document choices for. |
333
+ | `is_workspace` | `no` | `boolean` | `false` | - |
334
+
335
+ ---
336
+
337
+ ### `uscongress.bills`
338
+
339
+ ```python
340
+ data.uscongress.bills(congress=None, bill_type=None, start_time=None, end_time=None, limit=100, offset=0, sort_by='desc')
341
+ ```
342
+
343
+ Summary: Bills
344
+
345
+ | Field | Value |
346
+ |---|---|
347
+ | Endpoint ID | `uscongress.bills` |
348
+ | HTTP | `GET` |
349
+ | Path | `/inner/v1/agent-data/regulators/uscongress/bills` |
350
+ | SDK | `supported` |
351
+ | Host | `supported` |
352
+ | Notes | - |
353
+
354
+ #### Query parameters
355
+
356
+ | Param | Required | Type | Default | Notes |
357
+ |---|---|---|---|---|
358
+ | `congress` | `no` | `integer | null` | `-` | Congress number (e.g., 118 for the 118th Congress). The 103rd Congress started in 1993. Each Congress spans two years, starting in odd-numbered years. |
359
+ | `bill_type` | `no` | `string | null` | `-` | Bill type. Must be one of: hr, s, hjres, sjres, hconres, sconres, hres, sres. |
360
+ | `start_time` | `no` | `integer | null` | `-` | Start time of the data as a Unix timestamp in milliseconds. Filters bills by last updated date. |
361
+ | `end_time` | `no` | `integer | null` | `-` | End time of the data as a Unix timestamp in milliseconds. Filters bills by last updated date. |
362
+ | `limit` | `no` | `integer | null` | `100` | The number of data entries to return. Default 100, max 250. Set to 0 for no limit (must be used with 'bill_type' and 'congress'). |
363
+ | `offset` | `no` | `integer | null` | `0` | The starting record returned. 0 is the first record. |
364
+ | `sort_by` | `no` | `string` | `desc` | Sort by update date. Default is latest first. enum: asc, desc |
@@ -43,6 +43,18 @@ Summary: Followin Coin News
43
43
  | `symbol` | `yes` | `string` | `-` | Coin/token symbol to fetch news for (e.g. 'BTC', 'ETH'). |
44
44
  | `limit` | `no` | `integer` | `20` | Maximum number of articles to return. Default 20. |
45
45
 
46
+ #### Response fields
47
+
48
+ | Field | Type | Notes |
49
+ |---|---|---|
50
+ | `title` | `string` | Article title. |
51
+ | `link` | `string` | URL of the article. |
52
+ | `published` | `string` | Publication datetime (UTC). |
53
+ | `source` | `string` | Original news source name. |
54
+ | `summary` | `string` | Article summary or description. |
55
+ | `author` | `string` | Author or KOL name. |
56
+ | `symbol` | `string` | Related coin/token symbol if applicable. |
57
+
46
58
  ---
47
59
 
48
60
  ### `sentiment.followin_news`
@@ -69,6 +81,18 @@ Summary: Followin News
69
81
  | `news_type` | `no` | `string` | `trending` | Type of news to fetch. 'trending' = hot news feed, 'flash' = flash/breaking news, 'kol_opinions' = KOL opinion articles. |
70
82
  | `limit` | `no` | `integer` | `20` | Maximum number of articles to return. Default 20. |
71
83
 
84
+ #### Response fields
85
+
86
+ | Field | Type | Notes |
87
+ |---|---|---|
88
+ | `title` | `string` | Article title. |
89
+ | `link` | `string` | URL of the article. |
90
+ | `published` | `string` | Publication datetime (UTC). |
91
+ | `source` | `string` | Original news source name. |
92
+ | `summary` | `string` | Article summary or description. |
93
+ | `author` | `string` | Author or KOL name. |
94
+ | `symbol` | `string` | Related coin/token symbol if applicable. |
95
+
72
96
  ---
73
97
 
74
98
  ### `sentiment.followin_trending_topics`
@@ -94,6 +118,16 @@ Summary: Followin Trending Topics
94
118
  |---|---|---|---|---|
95
119
  | `limit` | `no` | `integer` | `20` | Maximum number of topics to return. Default 20. |
96
120
 
121
+ #### Response fields
122
+
123
+ | Field | Type | Notes |
124
+ |---|---|---|
125
+ | `rank` | `integer` | Topic rank. |
126
+ | `topic` | `string` | Trending topic name or keyword. |
127
+ | `heat` | `integer` | Heat/popularity score of the topic. |
128
+ | `article_count` | `integer` | Number of articles related to this topic. |
129
+ | `symbol` | `string` | Related coin/token symbol if applicable. |
130
+
97
131
  ---
98
132
 
99
133
  ### `sentiment.market_fear_greed`
@@ -118,6 +152,18 @@ Summary: Market Fear Greed
118
152
  | Param | Required | Type | Default | Notes |
119
153
  |---|---|---|---|---|
120
154
 
155
+ #### Response fields
156
+
157
+ | Field | Type | Notes |
158
+ |---|---|---|
159
+ | `score` | `number` | Current Fear & Greed Index score (0-100). 0 = Extreme Fear, 50 = Neutral, 100 = Extreme Greed. |
160
+ | `rating` | `string` | Human-readable rating: 'Extreme Fear', 'Fear', 'Neutral', 'Greed', 'Extreme Greed'. |
161
+ | `timestamp` | `string` | Timestamp of the index reading. |
162
+ | `previous_close` | `number` | Previous close score. |
163
+ | `previous_1_week` | `number` | Score one week ago. |
164
+ | `previous_1_month` | `number` | Score one month ago. |
165
+ | `previous_1_year` | `number` | Score one year ago. |
166
+
121
167
  ---
122
168
 
123
169
  ### `sentiment.news`
@@ -144,6 +190,18 @@ Summary: News
144
190
  | `category` | `no` | `string` | `all` | News category filter. 'all' fetches all 44 sources concurrently. Other options filter by source group: 'crypto_core' (7 sources), 'crypto_high_freq' (4), 'crypto_supplement' (6), 'macro' (4), 'kol' (4), 'tech_ai' (5), 'geopolitical' (5), 'reddit' (5), 'chinese_japanese' (2), 'other' (2). |
145
191
  | `limit` | `no` | `integer` | `20` | Maximum number of articles to return per source. Default 20. |
146
192
 
193
+ #### Response fields
194
+
195
+ | Field | Type | Notes |
196
+ |---|---|---|
197
+ | `title` | `string` | Article title. |
198
+ | `link` | `string` | URL of the article. |
199
+ | `published` | `string` | Publication datetime (UTC). |
200
+ | `source` | `string` | Name of the news source. |
201
+ | `category` | `string` | Source category group. |
202
+ | `summary` | `string` | Article summary or description. |
203
+ | `author` | `string` | Article author. |
204
+
147
205
  ---
148
206
 
149
207
  ### `sentiment.trending`
@@ -170,6 +228,18 @@ Summary: Trending
170
228
  | `filter` | `no` | `string` | `all-stocks` | Category or subreddit filter for trending data.; The subreddit or category filter. 'all-stocks' aggregates all stock-related subreddits, 'all-crypto' aggregates all crypto-related subreddits, '4chan' is /biz/ board, or specific subreddits like 'wallstreetbets', 'stocks', 'investing', 'cryptocurrency'. |
171
229
  | `page` | `no` | `integer` | `1` | Page number for pagination. |
172
230
 
231
+ #### Response fields
232
+
233
+ | Field | Type | Notes |
234
+ |---|---|---|
235
+ | `rank` | `integer` | Current rank by mention volume. |
236
+ | `ticker` | `string` | The ticker symbol. |
237
+ | `name` | `string` | Company or asset name. |
238
+ | `mentions` | `integer` | Number of mentions in the last 24 hours. |
239
+ | `upvotes` | `integer` | Total upvotes on posts mentioning this ticker. |
240
+ | `rank_24h_ago` | `integer` | Rank 24 hours ago. |
241
+ | `mentions_24h_ago` | `integer` | Number of mentions 24 hours ago. |
242
+
173
243
  ---
174
244
 
175
245
  ### `sentiment.twitter_list_timeline`
@@ -197,6 +267,26 @@ Summary: Twitter List Timeline
197
267
  | `count` | `no` | `integer` | `20` | Number of tweets to return (max 100). |
198
268
  | `cursor` | `no` | `string` | `` | Pagination cursor for next page. Leave empty for first page. |
199
269
 
270
+ #### Response fields
271
+
272
+ | Field | Type | Notes |
273
+ |---|---|---|
274
+ | `tweet_id` | `string` | Unique tweet ID. |
275
+ | `text` | `string` | Full tweet text content. |
276
+ | `created_at` | `string` | Tweet creation timestamp. |
277
+ | `author_id` | `string` | Author's user ID. |
278
+ | `author_name` | `string` | Author's display name. |
279
+ | `author_username` | `string` | Author's screen name (@handle). |
280
+ | `reply_count` | `integer` | Number of replies. |
281
+ | `retweet_count` | `integer` | Number of retweets. |
282
+ | `like_count` | `integer` | Number of likes/favorites. |
283
+ | `quote_count` | `integer` | Number of quote tweets. |
284
+ | `bookmark_count` | `integer` | Number of bookmarks. |
285
+ | `lang` | `string` | Language code of the tweet. |
286
+ | `is_retweet` | `boolean` | Whether this tweet is a retweet. |
287
+ | `is_quote` | `boolean` | Whether this tweet is a quote tweet. |
288
+ | `next_cursor` | `string` | Cursor for fetching the next page of results. |
289
+
200
290
  ---
201
291
 
202
292
  ### `sentiment.twitter_search`
@@ -225,6 +315,26 @@ Summary: Twitter Search
225
315
  | `cursor` | `no` | `string` | `` | Pagination cursor for next page. Leave empty for first page. |
226
316
  | `product` | `no` | `string` | `Latest` | Timeline product type. One of 'Latest' or 'Top'. |
227
317
 
318
+ #### Response fields
319
+
320
+ | Field | Type | Notes |
321
+ |---|---|---|
322
+ | `tweet_id` | `string` | Unique tweet ID. |
323
+ | `text` | `string` | Full tweet text content. |
324
+ | `created_at` | `string` | Tweet creation timestamp. |
325
+ | `author_id` | `string` | Author's user ID. |
326
+ | `author_name` | `string` | Author's display name. |
327
+ | `author_username` | `string` | Author's screen name (@handle). |
328
+ | `reply_count` | `integer` | Number of replies. |
329
+ | `retweet_count` | `integer` | Number of retweets. |
330
+ | `like_count` | `integer` | Number of likes/favorites. |
331
+ | `quote_count` | `integer` | Number of quote tweets. |
332
+ | `bookmark_count` | `integer` | Number of bookmarks. |
333
+ | `lang` | `string` | Language code of the tweet. |
334
+ | `is_retweet` | `boolean` | Whether this tweet is a retweet. |
335
+ | `is_quote` | `boolean` | Whether this tweet is a quote tweet. |
336
+ | `next_cursor` | `string` | Cursor for fetching the next page of results. |
337
+
228
338
  ---
229
339
 
230
340
  ### `sentiment.twitter_tweet_detail`
@@ -250,6 +360,30 @@ Summary: Twitter Tweet Detail
250
360
  |---|---|---|---|---|
251
361
  | `tweet_id` | `yes` | `string` | `-` | The focal tweet ID to fetch details for. |
252
362
 
363
+ #### Response fields
364
+
365
+ | Field | Type | Notes |
366
+ |---|---|---|
367
+ | `tweet_id` | `string` | Unique tweet ID. |
368
+ | `text` | `string` | Full tweet text content. |
369
+ | `created_at` | `string` | Tweet creation timestamp. |
370
+ | `author_id` | `string` | Author's user ID. |
371
+ | `author_name` | `string` | Author's display name. |
372
+ | `author_username` | `string` | Author's screen name (@handle). |
373
+ | `reply_count` | `integer` | Number of replies. |
374
+ | `retweet_count` | `integer` | Number of retweets. |
375
+ | `like_count` | `integer` | Number of likes/favorites. |
376
+ | `quote_count` | `integer` | Number of quote tweets. |
377
+ | `bookmark_count` | `integer` | Number of bookmarks. |
378
+ | `view_count` | `integer` | Number of views/impressions. |
379
+ | `lang` | `string` | Language code of the tweet. |
380
+ | `conversation_id` | `string` | Root conversation thread ID. |
381
+ | `in_reply_to_user_id` | `string` | User ID of the account being replied to. |
382
+ | `is_retweet` | `boolean` | Whether this tweet is a retweet. |
383
+ | `is_quote` | `boolean` | Whether this tweet is a quote tweet. |
384
+ | `quoted_tweet_id` | `string` | ID of the quoted tweet, if any. |
385
+ | `media_urls` | `array` | List of media URLs attached to the tweet. |
386
+
253
387
  ---
254
388
 
255
389
  ### `sentiment.twitter_user_by_id`
@@ -275,6 +409,27 @@ Summary: Twitter User By Id
275
409
  |---|---|---|---|---|
276
410
  | `user_id` | `yes` | `string` | `-` | Twitter user ID (numeric string). |
277
411
 
412
+ #### Response fields
413
+
414
+ | Field | Type | Notes |
415
+ |---|---|---|
416
+ | `user_id` | `string` | Unique numeric user ID. |
417
+ | `name` | `string` | Display name. |
418
+ | `username` | `string` | Screen name (@handle, without @). |
419
+ | `description` | `string` | Profile bio/description. |
420
+ | `created_at` | `string` | Account creation timestamp. |
421
+ | `followers_count` | `integer` | Number of followers. |
422
+ | `following_count` | `integer` | Number of accounts followed. |
423
+ | `tweet_count` | `integer` | Total number of tweets. |
424
+ | `listed_count` | `integer` | Number of public lists the user is in. |
425
+ | `verified` | `boolean` | Whether the account is legacy verified. |
426
+ | `is_blue_verified` | `boolean` | Whether the account has Twitter Blue verification. |
427
+ | `profile_image_url` | `string` | URL of the profile image. |
428
+ | `profile_banner_url` | `string` | URL of the profile banner image. |
429
+ | `location` | `string` | User-specified location. |
430
+ | `url` | `string` | User's website URL. |
431
+ | `pinned_tweet_id` | `string` | ID of the user's pinned tweet. |
432
+
278
433
  ---
279
434
 
280
435
  ### `sentiment.twitter_user_by_name`
@@ -299,3 +454,24 @@ Summary: Twitter User By Name
299
454
  | Param | Required | Type | Default | Notes |
300
455
  |---|---|---|---|---|
301
456
  | `screen_name` | `yes` | `string` | `-` | Twitter screen name / @handle (without @). |
457
+
458
+ #### Response fields
459
+
460
+ | Field | Type | Notes |
461
+ |---|---|---|
462
+ | `user_id` | `string` | Unique numeric user ID. |
463
+ | `name` | `string` | Display name. |
464
+ | `username` | `string` | Screen name (@handle, without @). |
465
+ | `description` | `string` | Profile bio/description. |
466
+ | `created_at` | `string` | Account creation timestamp. |
467
+ | `followers_count` | `integer` | Number of followers. |
468
+ | `following_count` | `integer` | Number of accounts followed. |
469
+ | `tweet_count` | `integer` | Total number of tweets. |
470
+ | `listed_count` | `integer` | Number of public lists the user is in. |
471
+ | `verified` | `boolean` | Whether the account is legacy verified. |
472
+ | `is_blue_verified` | `boolean` | Whether the account has Twitter Blue verification. |
473
+ | `profile_image_url` | `string` | URL of the profile image. |
474
+ | `profile_banner_url` | `string` | URL of the profile banner image. |
475
+ | `location` | `string` | User-specified location. |
476
+ | `url` | `string` | User's website URL. |
477
+ | `pinned_tweet_id` | `string` | ID of the user's pinned tweet. |
@@ -13,7 +13,17 @@ This folder separates:
13
13
  1. Start with `[package-schema.md](package-schema.md)` to understand the package
14
14
  contract.
15
15
  2. Read the relevant SDK section below:
16
- - market data → `[sdk/data/playbook-supported.md](sdk/data/playbook-supported.md)`
16
+ - market data → `[sdk/data/catalog.md](sdk/data/catalog.md)` (domain index) →
17
+ domain files: `[crypto.md](sdk/data/crypto.md)`, `[equity.md](sdk/data/equity.md)`,
18
+ `[economy.md](sdk/data/economy.md)`, `[derivatives.md](sdk/data/derivatives.md)`,
19
+ `[etf.md](sdk/data/etf.md)`, `[fixedincome.md](sdk/data/fixedincome.md)`,
20
+ `[currency.md](sdk/data/currency.md)`, `[commodity.md](sdk/data/commodity.md)`,
21
+ `[sentiment.md](sdk/data/sentiment.md)`, `[index.md](sdk/data/index.md)`,
22
+ `[news.md](sdk/data/news.md)`, `[regulators.md](sdk/data/regulators.md)`,
23
+ `[uscongress.md](sdk/data/uscongress.md)`, `[arxiv.md](sdk/data/arxiv.md)`,
24
+ `[web_search.md](sdk/data/web_search.md)`, `[wikipedia.md](sdk/data/wikipedia.md)`,
25
+ `[famafrench.md](sdk/data/famafrench.md)`, `[imf_utils.md](sdk/data/imf_utils.md)`,
26
+ `[coverage.md](sdk/data/coverage.md)`
17
27
  - replay / charting → `[sdk/backtest/catalog.md](sdk/backtest/catalog.md)`
18
28
  - trading → `[sdk/trade/patterns.md](sdk/trade/patterns.md)`
19
29
  - runtime protocol / signal output → `[sdk/runtime/catalog.md](sdk/runtime/catalog.md)`
@@ -94,10 +104,9 @@ The only supported market data module.
94
104
 
95
105
  Read order:
96
106
 
97
- 1. `[sdk/data/playbook-supported.md](sdk/data/playbook-supported.md)` —
98
- full Playbook-callable `getagent.data` endpoint surface
99
- 2. `[sdk/data/catalog.md](sdk/data/catalog.md)` — full domain index
100
- 3. domain files under `[sdk/data/](sdk/data/catalog.md)` — exact signatures,
107
+ 1. `[sdk/data/catalog.md](sdk/data/catalog.md)` — full domain index with all
108
+ Playbook-callable `getagent.data` endpoints organised by domain
109
+ 2. domain files under `[sdk/data/](sdk/data/catalog.md)` — exact signatures,
101
110
  defaults, enums, and parameter notes
102
111
 
103
112
  Hard rules:
@@ -2,8 +2,10 @@
2
2
  """Playbook package Local validation script。
3
3
 
4
4
  Usage:
5
- conda activate get_agent_test
6
- python scripts/validate.py ./my-strategy/
5
+ python3 scripts/validate.py ./my-strategy/
6
+
7
+ Requires Python 3.11+. PyYAML is recommended (`pip install pyyaml`);
8
+ without it the script falls back to a weaker built-in parser.
7
9
 
8
10
  Checks:
9
11
  1. Directory structure complete(manifest.yaml, src/main.py)
@@ -19,7 +21,6 @@ from __future__ import annotations
19
21
  import ast
20
22
  import re
21
23
  import sys
22
- from datetime import datetime
23
24
  from pathlib import Path, PurePosixPath
24
25
  from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
25
26
 
@@ -482,15 +483,6 @@ def validate_backtest_yaml(pkg_dir: Path, manifest: dict, result: ValidationResu
482
483
  if not str(payload.get(field, "") or "").strip():
483
484
  result.error(f"{prefix}: missing '{field}'")
484
485
 
485
- def _parse_backtest_datetime(value: object) -> datetime | None:
486
- text = str(value or "").strip()
487
- if not text:
488
- return None
489
- try:
490
- return datetime.fromisoformat(text.replace("Z", "+00:00"))
491
- except ValueError:
492
- return None
493
-
494
486
  def _instrument_symbol(item: dict) -> str:
495
487
  raw = str(
496
488
  item.get("raw_symbol")
@@ -662,24 +654,12 @@ def validate_backtest_yaml(pkg_dir: Path, manifest: dict, result: ValidationResu
662
654
  f"missing manifest symbols={missing_symbols or []}"
663
655
  )
664
656
 
657
+ # The replay window is the author's call: execution.start/end are optional
658
+ # bar filters. The platform never polices window presence, length, recency,
659
+ # or ordering — anti-fraud checks (real evidence) are the only backtest gate.
665
660
  execution = data.get("execution")
666
- if not isinstance(execution, dict):
667
- result.error("backtest.yaml: 'execution' must be a mapping")
668
- else:
669
- start = str(execution.get("start") or "").strip()
670
- end = str(execution.get("end") or "").strip()
671
- if not start or not end:
672
- result.error(
673
- "backtest.yaml.execution: 'start' and 'end' are required so "
674
- "the sandbox can prove the replay window has bars"
675
- )
676
- else:
677
- parsed_start = _parse_backtest_datetime(start)
678
- parsed_end = _parse_backtest_datetime(end)
679
- if parsed_start is None or parsed_end is None:
680
- result.error("backtest.yaml.execution: 'start' and 'end' must be ISO datetimes")
681
- elif parsed_end <= parsed_start:
682
- result.error("backtest.yaml.execution: 'end' must be after 'start'")
661
+ if execution is not None and not isinstance(execution, dict):
662
+ result.error("backtest.yaml: 'execution' must be a mapping when provided")
683
663
 
684
664
  data_requirements = data.get("data_requirements")
685
665
  if data_requirements is not None and not isinstance(data_requirements, dict):
@@ -8,9 +8,10 @@ SKILL_MD="$SKILL_DIR/SKILL.md"
8
8
  CONFIG_FILE="$SKILL_DIR/.env"
9
9
  CHECK_INTERVAL=28800
10
10
 
11
- # GitLab project path URL-encoded: algorithm/upex-algorithm-getall-skill-sdk
12
- PROJECT_PATH="algorithm%2Fupex-algorithm-getall-skill-sdk"
13
- RELEASES_URL="https://gitlab.bitget.tools/api/v4/projects/${PROJECT_PATH}/releases"
11
+ # Published versions live on the public npm registry; this works for both
12
+ # internal and external installs. Silently skip when offline.
13
+ NPM_PACKAGE="@bitget-ai/getagent-skill"
14
+ DIST_TAGS_URL="https://registry.npmjs.org/-/package/${NPM_PACKAGE}/dist-tags"
14
15
 
15
16
  read_local_version() {
16
17
  if [ ! -f "$SKILL_MD" ]; then
@@ -32,11 +33,11 @@ if [ "$elapsed" -lt "$CHECK_INTERVAL" ]; then
32
33
  exit 0
33
34
  fi
34
35
 
35
- remote_tag=$(curl -sf --max-time 5 "$RELEASES_URL" \
36
- | sed -n 's/.*"tag_name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' \
36
+ remote_ver=$(curl -sf --max-time 5 "$DIST_TAGS_URL" \
37
+ | sed -n 's/.*"latest"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p' \
37
38
  | head -1 || true)
38
39
 
39
- if [ -z "$remote_tag" ]; then
40
+ if [ -z "$remote_ver" ]; then
40
41
  exit 0
41
42
  fi
42
43
 
@@ -48,15 +49,15 @@ echo "last_check=$now" >> "$tmp_config"
48
49
  mv "$tmp_config" "$CONFIG_FILE"
49
50
 
50
51
  local_tag=$(read_local_version)
51
- if [ -z "$local_tag" ] || [ "$local_tag" = "$remote_tag" ]; then
52
+ local_ver=${local_tag#v}
53
+ if [ -z "$local_ver" ] || [ "$local_ver" = "$remote_ver" ]; then
52
54
  exit 0
53
55
  fi
54
56
 
55
57
  cat <<EOF
56
58
  GetAgent skill update available.
57
- Installed: $local_tag
58
- Latest: $remote_tag
59
- Update with one of:
60
- npx skills add https://gitlab.bitget.tools/algorithm/upex-algorithm-getall-skill-sdk/-/tree/${remote_tag}/skills/getagent --skill getagent -y
61
- git clone --branch ${remote_tag} --depth 1 git@gitlab.bitget.tools:algorithm/upex-algorithm-getall-skill-sdk.git ./.tmp/getagent-skill && cp -R ./.tmp/getagent-skill/skills/getagent/. "${SKILL_DIR}/" && rm -rf ./.tmp/getagent-skill
59
+ Installed: v$local_ver
60
+ Latest: v$remote_ver
61
+ Update with:
62
+ npx ${NPM_PACKAGE}@latest install --client <claude|cursor|codex|all>
62
63
  EOF