@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.
- package/.claude-plugin/marketplace.json +15 -4
- package/.claude-plugin/plugin.json +1 -1
- package/VERSION +1 -1
- package/package.json +1 -1
- package/skills/getagent/SKILL.md +145 -10
- package/skills/getagent/references/api/confirm.md +59 -0
- package/skills/getagent/references/api/index.md +9 -7
- package/skills/getagent/references/api/publish.md +13 -10
- package/skills/getagent/references/api/run.md +5 -5
- package/skills/getagent/references/api/upload.md +22 -4
- package/skills/getagent/references/backtest-engine.md +11 -10
- package/skills/getagent/references/package-schema.md +8 -7
- package/skills/getagent/references/sdk/backtest/catalog.md +5 -3
- package/skills/getagent/references/sdk/data/catalog.md +2 -4
- package/skills/getagent/references/sdk/data/commodity.md +46 -0
- package/skills/getagent/references/sdk/data/crypto.md +1468 -88
- package/skills/getagent/references/sdk/data/currency.md +48 -0
- package/skills/getagent/references/sdk/data/derivatives.md +126 -0
- package/skills/getagent/references/sdk/data/economy.md +736 -0
- package/skills/getagent/references/sdk/data/equity.md +1462 -0
- package/skills/getagent/references/sdk/data/etf.md +510 -0
- package/skills/getagent/references/sdk/data/fixedincome.md +485 -0
- package/skills/getagent/references/sdk/data/news.md +76 -0
- package/skills/getagent/references/sdk/data/regulators.md +85 -0
- package/skills/getagent/references/sdk/data/sentiment.md +176 -0
- package/skills/getagent/references/sdk.md +14 -5
- package/skills/getagent/scripts/validate.py +9 -29
- package/skills/getagent/scripts/version_check.sh +13 -12
- 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/
|
|
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/
|
|
98
|
-
|
|
99
|
-
2. `[sdk/data/
|
|
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
|
-
|
|
6
|
-
|
|
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
|
-
#
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
36
|
-
| sed -n 's/.*"
|
|
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 "$
|
|
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
|
-
|
|
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: $
|
|
58
|
-
Latest: $
|
|
59
|
-
Update with
|
|
60
|
-
npx
|
|
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
|