@oomol-lab/open-connector 1.6.3 → 1.6.5

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 (108) hide show
  1. package/assets/open-connector/catalog/apps/aisa.json +568 -0
  2. package/assets/open-connector/catalog/apps/bilibili.json +2586 -0
  3. package/assets/open-connector/catalog/apps/bitwarden.json +1423 -0
  4. package/assets/open-connector/catalog/apps/cronfree.json +303 -0
  5. package/assets/open-connector/catalog/apps/cufinder.json +368 -0
  6. package/assets/open-connector/catalog/apps/feishu_app_bot.json +2 -2
  7. package/assets/open-connector/catalog/apps/gmail.json +73 -0
  8. package/assets/open-connector/catalog/apps/investoday_mcp.json +22228 -197
  9. package/assets/open-connector/catalog/apps/ixspy.json +2274 -0
  10. package/assets/open-connector/catalog/apps/jin10.json +1 -1
  11. package/assets/open-connector/catalog/apps/osv.json +663 -0
  12. package/assets/open-connector/catalog/apps/pdf_vector.json +329 -0
  13. package/assets/open-connector/catalog/apps/pulsetic.json +406 -0
  14. package/assets/open-connector/catalog/apps/shopee.json +1785 -0
  15. package/assets/open-connector/catalog/apps/slack.json +81 -0
  16. package/assets/open-connector/catalog/apps/slackbot.json +81 -0
  17. package/assets/open-connector/catalog/apps/speak_ai.json +360 -0
  18. package/assets/open-connector/catalog/apps/tongdaxin.json +11 -440
  19. package/assets/open-connector/catalog/apps/zyhub.json +1585 -0
  20. package/assets/open-connector/catalog/apps-index.json +1 -1
  21. package/package.json +1 -1
  22. package/src/core/json-schema.d.ts +5 -1
  23. package/src/core/json-schema.js +14 -2
  24. package/src/core/types.d.ts +9 -0
  25. package/src/oauth/oauth-credential-refresh-service.js +3 -1
  26. package/src/oauth/oauth-flow-service.js +17 -2
  27. package/src/oauth/oauth-token.d.ts +13 -0
  28. package/src/providers/action-contracts.generated.d.ts +16 -4
  29. package/src/providers/aisa/executors.d.ts +4 -0
  30. package/src/providers/aisa/executors.js +176 -0
  31. package/src/providers/bilibili/articles.d.ts +3 -0
  32. package/src/providers/bilibili/articles.js +369 -0
  33. package/src/providers/bilibili/executors.d.ts +8 -0
  34. package/src/providers/bilibili/executors.js +262 -0
  35. package/src/providers/bilibili/runtime.d.ts +95 -0
  36. package/src/providers/bilibili/runtime.js +238 -0
  37. package/src/providers/bilibili/upload.d.ts +14 -0
  38. package/src/providers/bilibili/upload.js +105 -0
  39. package/src/providers/bitwarden/executors.d.ts +3 -0
  40. package/src/providers/bitwarden/executors.js +146 -0
  41. package/src/providers/cronfree/executors.d.ts +4 -0
  42. package/src/providers/cronfree/executors.js +89 -0
  43. package/src/providers/cufinder/executors.d.ts +4 -0
  44. package/src/providers/cufinder/executors.js +105 -0
  45. package/src/providers/dropbox/executors.js +21 -3
  46. package/src/providers/elevenreader/runtime.js +6 -5
  47. package/src/providers/feishu_app_bot/scopes.js +1 -1
  48. package/src/providers/gmail/attachment-stream.d.ts +2 -0
  49. package/src/providers/gmail/attachment-stream.js +162 -0
  50. package/src/providers/gmail/executors.d.ts +3 -1
  51. package/src/providers/gmail/executors.js +53 -25
  52. package/src/providers/investoday_mcp/official-actions.js +19 -372
  53. package/src/providers/investoday_mcp/official-tool-types.d.ts +10 -0
  54. package/src/providers/investoday_mcp/official-tool-types.js +4 -0
  55. package/src/providers/investoday_mcp/official-tools/charts.d.ts +2 -0
  56. package/src/providers/investoday_mcp/official-tools/charts.js +32 -0
  57. package/src/providers/investoday_mcp/official-tools/fixed-income.d.ts +2 -0
  58. package/src/providers/investoday_mcp/official-tools/fixed-income.js +326 -0
  59. package/src/providers/investoday_mcp/official-tools/funds.d.ts +2 -0
  60. package/src/providers/investoday_mcp/official-tools/funds.js +1085 -0
  61. package/src/providers/investoday_mcp/official-tools/hong-kong.d.ts +2 -0
  62. package/src/providers/investoday_mcp/official-tools/hong-kong.js +275 -0
  63. package/src/providers/investoday_mcp/official-tools/indices-industries.d.ts +2 -0
  64. package/src/providers/investoday_mcp/official-tools/indices-industries.js +642 -0
  65. package/src/providers/investoday_mcp/official-tools/macro-calendar.d.ts +2 -0
  66. package/src/providers/investoday_mcp/official-tools/macro-calendar.js +398 -0
  67. package/src/providers/investoday_mcp/official-tools/other.d.ts +2 -0
  68. package/src/providers/investoday_mcp/official-tools/other.js +131 -0
  69. package/src/providers/investoday_mcp/official-tools/research-news.d.ts +2 -0
  70. package/src/providers/investoday_mcp/official-tools/research-news.js +302 -0
  71. package/src/providers/investoday_mcp/official-tools/stocks.d.ts +2 -0
  72. package/src/providers/investoday_mcp/official-tools/stocks.js +2829 -0
  73. package/src/providers/ixspy/executors.d.ts +3 -0
  74. package/src/providers/ixspy/executors.js +220 -0
  75. package/src/providers/mcp-client.d.ts +1 -0
  76. package/src/providers/mcp-client.js +41 -27
  77. package/src/providers/osv/executors.d.ts +2 -0
  78. package/src/providers/osv/executors.js +11 -0
  79. package/src/providers/osv/runtime.d.ts +9 -0
  80. package/src/providers/osv/runtime.js +66 -0
  81. package/src/providers/pdf_vector/executors.d.ts +4 -0
  82. package/src/providers/pdf_vector/executors.js +108 -0
  83. package/src/providers/provider-runtime.d.ts +3 -0
  84. package/src/providers/provider-runtime.js +4 -1
  85. package/src/providers/pulsetic/executors.d.ts +4 -0
  86. package/src/providers/pulsetic/executors.js +126 -0
  87. package/src/providers/registry.generated.js +12 -0
  88. package/src/providers/sellersprite_mcp/executors.js +2 -1
  89. package/src/providers/shopee/actions.d.ts +2 -0
  90. package/src/providers/shopee/actions.js +474 -0
  91. package/src/providers/shopee/executors.d.ts +3 -0
  92. package/src/providers/shopee/executors.js +85 -0
  93. package/src/providers/shopee/runtime.d.ts +79 -0
  94. package/src/providers/shopee/runtime.js +693 -0
  95. package/src/providers/slack/actions.js +17 -0
  96. package/src/providers/slack/runtime.js +62 -4
  97. package/src/providers/speak_ai/executors.d.ts +3 -0
  98. package/src/providers/speak_ai/executors.js +187 -0
  99. package/src/providers/tongdaxin/executors.js +5 -4
  100. package/src/providers/tongdaxin/named-action-output.js +3 -9
  101. package/src/providers/tongdaxin/named-action-routing.js +1 -1
  102. package/src/providers/tongdaxin/named-actions.js +1 -6
  103. package/src/providers/tushare/runtime.js +22 -9
  104. package/src/providers/twenty_crm/runtime.js +4 -2
  105. package/src/providers/zyhub/executors.d.ts +3 -0
  106. package/src/providers/zyhub/executors.js +240 -0
  107. package/src/server/files/transit-files.d.ts +3 -2
  108. package/src/server/files/transit-files.js +31 -35
@@ -0,0 +1,1085 @@
1
+ import { s } from "../../../core/json-schema.js";
2
+ import { investodayCodeDataOutputSchema } from "../official-tool-types.js";
3
+ // 此文件按 2026-09-21 官方 MCP tools/list 审核。
4
+ export const fundsOfficialTools = [
5
+ {
6
+ name: "get_fund_manager_basic_info",
7
+ toolName: "get_fund_manager_basic_info",
8
+ description: "Get fund manager basic info data from Investoday.",
9
+ operationType: "read",
10
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_manager_basic_info operation.", {
11
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
12
+ minItems: 1,
13
+ }), [["000001", "000006"]]),
14
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
15
+ "000001",
16
+ ]),
17
+ isIncumbent: s.withExamples(s.withEnum(s.integer("Whether the fund manager is currently serving Accepted by Investoday for get_fund_manager_basic_info."), [1, 0]), [1]),
18
+ }, { required: [] }), ["fundCode", "fundCodes"]),
19
+ outputSchema: investodayCodeDataOutputSchema,
20
+ },
21
+ {
22
+ name: "list_fund_adj_navs",
23
+ toolName: "list_fund_adj_navs",
24
+ description: "List fund adjusted navs data from Investoday.",
25
+ operationType: "read",
26
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_adj_navs operation.", {
27
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_adj_navs.", { minLength: 1 }), ["2025-01-01"]),
28
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
29
+ minItems: 1,
30
+ }), [["000001", "000006"]]),
31
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
32
+ "000001",
33
+ ]),
34
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_adj_navs.", {
35
+ minLength: 1,
36
+ }), ["2025-01-01"]),
37
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_adj_navs.", {
38
+ minimum: 1,
39
+ maximum: 500,
40
+ }), [10]),
41
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_adj_navs.", {
42
+ minimum: 1,
43
+ }), [1]),
44
+ }, { required: [] }), ["fundCode", "fundCodes"]),
45
+ outputSchema: investodayCodeDataOutputSchema,
46
+ },
47
+ {
48
+ name: "list_fund_adj_quotes",
49
+ toolName: "list_fund_adj_quotes",
50
+ description: "List fund adjusted quotes data from Investoday.",
51
+ operationType: "read",
52
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_adj_quotes operation.", {
53
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_adj_quotes.", {
54
+ minLength: 1,
55
+ }), ["2025-01-01"]),
56
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
57
+ minItems: 1,
58
+ }), [["000001", "000006"]]),
59
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
60
+ "000001",
61
+ ]),
62
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_adj_quotes.", { minLength: 1 }), ["2025-01-01"]),
63
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_adj_quotes.", {
64
+ minimum: 1,
65
+ maximum: 500,
66
+ }), [10]),
67
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_adj_quotes.", { minimum: 1 }), [1]),
68
+ }, { required: [] }), ["fundCode", "fundCodes"]),
69
+ outputSchema: investodayCodeDataOutputSchema,
70
+ },
71
+ {
72
+ name: "list_fund_all",
73
+ toolName: "list_fund_all",
74
+ description: "List fund all data from Investoday.",
75
+ operationType: "read",
76
+ inputSchema: s.object("Arguments for the Investoday list_fund_all operation.", {
77
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_all.", {
78
+ minimum: 1,
79
+ maximum: 500,
80
+ }), [10]),
81
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_all.", {
82
+ minimum: 1,
83
+ }), [1]),
84
+ }, { required: [] }),
85
+ outputSchema: investodayCodeDataOutputSchema,
86
+ },
87
+ {
88
+ name: "get_fund_award_records",
89
+ toolName: "get_fund_award_records",
90
+ description: "Get fund award records data from Investoday.",
91
+ operationType: "read",
92
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_award_records operation.", {
93
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
94
+ minItems: 1,
95
+ }), [["000001", "000006"]]),
96
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
97
+ "000001",
98
+ ]),
99
+ }, { required: [] }), ["fundCode", "fundCodes"]),
100
+ outputSchema: investodayCodeDataOutputSchema,
101
+ },
102
+ {
103
+ name: "get_fund_basic_info",
104
+ toolName: "get_fund_basic_info",
105
+ description: "Get fund basic info data from Investoday.",
106
+ operationType: "read",
107
+ inputSchema: s.object("Arguments for the Investoday get_fund_basic_info operation.", {
108
+ fundCodes: s.withExamples(s.array("Fund codes Accepted by Investoday for get_fund_basic_info.", s.string("One fundCode value.")), [["000001", "000006"]]),
109
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Accepted by Investoday for get_fund_basic_info."), [
110
+ "000001",
111
+ ]),
112
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for get_fund_basic_info.", {
113
+ minimum: 1,
114
+ maximum: 500,
115
+ }), [10]),
116
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for get_fund_basic_info.", {
117
+ minimum: 1,
118
+ }), [1]),
119
+ }, { required: [] }),
120
+ outputSchema: investodayCodeDataOutputSchema,
121
+ },
122
+ {
123
+ name: "get_fund_categories",
124
+ toolName: "get_fund_categories",
125
+ description: "Get fund categories data from Investoday.",
126
+ operationType: "read",
127
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_categories operation.", {
128
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
129
+ minItems: 1,
130
+ }), [["000001", "000006"]]),
131
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
132
+ "000001",
133
+ ]),
134
+ }, { required: [] }), ["fundCode", "fundCodes"]),
135
+ outputSchema: investodayCodeDataOutputSchema,
136
+ },
137
+ {
138
+ name: "get_fund_code_assoc",
139
+ toolName: "get_fund_code_assoc",
140
+ description: "Get fund code assoc data from Investoday.",
141
+ operationType: "read",
142
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_code_assoc operation.", {
143
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
144
+ minItems: 1,
145
+ }), [["000001", "000006"]]),
146
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
147
+ "000001",
148
+ ]),
149
+ }, { required: [] }), ["fundCode", "fundCodes"]),
150
+ outputSchema: investodayCodeDataOutputSchema,
151
+ },
152
+ {
153
+ name: "list_currency_yield_history",
154
+ toolName: "list_currency_yield_history",
155
+ description: "List currency yield history data from Investoday.",
156
+ operationType: "read",
157
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_currency_yield_history operation.", {
158
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_currency_yield_history.", {
159
+ minLength: 1,
160
+ }), ["2025-01-01"]),
161
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
162
+ minItems: 1,
163
+ }), [["000001", "000006"]]),
164
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
165
+ "000001",
166
+ ]),
167
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_currency_yield_history.", {
168
+ minLength: 1,
169
+ }), ["2025-01-01"]),
170
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_currency_yield_history.", {
171
+ minimum: 1,
172
+ maximum: 500,
173
+ }), [10]),
174
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_currency_yield_history.", {
175
+ minimum: 1,
176
+ }), [1]),
177
+ }, { required: [] }), ["fundCode", "fundCodes"]),
178
+ outputSchema: investodayCodeDataOutputSchema,
179
+ },
180
+ {
181
+ name: "list_fund_daily_quotes",
182
+ toolName: "list_fund_daily_quotes",
183
+ description: "List fund daily quotes data from Investoday.",
184
+ operationType: "read",
185
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_daily_quotes operation.", {
186
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_daily_quotes.", {
187
+ minLength: 1,
188
+ }), ["2025-01-01"]),
189
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
190
+ minItems: 1,
191
+ }), [["000001", "000006"]]),
192
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
193
+ "000001",
194
+ ]),
195
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_daily_quotes.", {
196
+ minLength: 1,
197
+ }), ["2025-01-01"]),
198
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_daily_quotes.", {
199
+ minimum: 1,
200
+ maximum: 500,
201
+ }), [10]),
202
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_daily_quotes.", { minimum: 1 }), [1]),
203
+ }, { required: [] }), ["fundCode", "fundCodes"]),
204
+ outputSchema: investodayCodeDataOutputSchema,
205
+ },
206
+ {
207
+ name: "list_fund_dividend_distributions",
208
+ toolName: "list_fund_dividend_distributions",
209
+ description: "List fund dividend distributions data from Investoday.",
210
+ operationType: "read",
211
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_dividend_distributions operation.", {
212
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_dividend_distributions.", {
213
+ minLength: 1,
214
+ }), ["2025-01-01"]),
215
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
216
+ minItems: 1,
217
+ }), [["000001", "000006"]]),
218
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
219
+ "000001",
220
+ ]),
221
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_dividend_distributions.", {
222
+ minLength: 1,
223
+ }), ["2025-01-01"]),
224
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_dividend_distributions.", {
225
+ minimum: 1,
226
+ maximum: 500,
227
+ }), [10]),
228
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_dividend_distributions.", {
229
+ minimum: 1,
230
+ }), [1]),
231
+ }, { required: [] }), ["fundCode", "fundCodes"]),
232
+ outputSchema: investodayCodeDataOutputSchema,
233
+ },
234
+ {
235
+ name: "list_etf_constituent_stks",
236
+ toolName: "list_etf_constituent_stks",
237
+ description: "List etf constituent stks data from Investoday.",
238
+ operationType: "read",
239
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_etf_constituent_stks operation.", {
240
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_etf_constituent_stks.", {
241
+ minLength: 1,
242
+ }), ["2025-01-01"]),
243
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
244
+ minItems: 1,
245
+ }), [["000001", "000006"]]),
246
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
247
+ "000001",
248
+ ]),
249
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_etf_constituent_stks.", {
250
+ minLength: 1,
251
+ }), ["2025-01-01"]),
252
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_etf_constituent_stks.", {
253
+ minimum: 1,
254
+ maximum: 500,
255
+ }), [10]),
256
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_etf_constituent_stks.", {
257
+ minimum: 1,
258
+ }), [1]),
259
+ }, { required: [] }), ["fundCode", "fundCodes"]),
260
+ outputSchema: investodayCodeDataOutputSchema,
261
+ },
262
+ {
263
+ name: "list_etf_sub_red_lists",
264
+ toolName: "list_etf_sub_red_lists",
265
+ description: "List etf sub red lists data from Investoday.",
266
+ operationType: "read",
267
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_etf_sub_red_lists operation.", {
268
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_etf_sub_red_lists.", {
269
+ minLength: 1,
270
+ }), ["2025-01-01"]),
271
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
272
+ minItems: 1,
273
+ }), [["000001", "000006"]]),
274
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
275
+ "000001",
276
+ ]),
277
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_etf_sub_red_lists.", {
278
+ minLength: 1,
279
+ }), ["2025-01-01"]),
280
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_etf_sub_red_lists.", {
281
+ minimum: 1,
282
+ maximum: 500,
283
+ }), [10]),
284
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_etf_sub_red_lists.", { minimum: 1 }), [1]),
285
+ }, { required: [] }), ["fundCode", "fundCodes"]),
286
+ outputSchema: investodayCodeDataOutputSchema,
287
+ },
288
+ {
289
+ name: "list_fund_fee_structures",
290
+ toolName: "list_fund_fee_structures",
291
+ description: "List fund fee structures data from Investoday.",
292
+ operationType: "read",
293
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_fee_structures operation.", {
294
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_fee_structures.", {
295
+ minLength: 1,
296
+ }), ["2025-01-01"]),
297
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
298
+ minItems: 1,
299
+ }), [["000001", "000006"]]),
300
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
301
+ "000001",
302
+ ]),
303
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_fee_structures.", {
304
+ minLength: 1,
305
+ }), ["2025-01-01"]),
306
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_fee_structures.", {
307
+ minimum: 1,
308
+ maximum: 500,
309
+ }), [10]),
310
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_fee_structures.", {
311
+ minimum: 1,
312
+ }), [1]),
313
+ }, { required: [] }), ["fundCode", "fundCodes"]),
314
+ outputSchema: investodayCodeDataOutputSchema,
315
+ },
316
+ {
317
+ name: "list_fund_fin_inds",
318
+ toolName: "list_fund_fin_inds",
319
+ description: "List fund financial indicators data from Investoday.",
320
+ operationType: "read",
321
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_fin_inds operation.", {
322
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_fin_inds.", { minLength: 1 }), ["2025-01-01"]),
323
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
324
+ minItems: 1,
325
+ }), [["000001", "000006"]]),
326
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
327
+ "000001",
328
+ ]),
329
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_fin_inds.", {
330
+ minLength: 1,
331
+ }), ["2025-01-01"]),
332
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_fin_inds.", {
333
+ minimum: 1,
334
+ maximum: 500,
335
+ }), [10]),
336
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_fin_inds.", {
337
+ minimum: 1,
338
+ }), [1]),
339
+ }, { required: [] }), ["fundCode", "fundCodes"]),
340
+ outputSchema: investodayCodeDataOutputSchema,
341
+ },
342
+ {
343
+ name: "list_fund_fin_inds_q",
344
+ toolName: "list_fund_fin_inds_q",
345
+ description: "List fund financial indicators quarterly data from Investoday.",
346
+ operationType: "read",
347
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_fin_inds_q operation.", {
348
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_fin_inds_q.", {
349
+ minLength: 1,
350
+ }), ["2025-01-01"]),
351
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
352
+ minItems: 1,
353
+ }), [["000001", "000006"]]),
354
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
355
+ "000001",
356
+ ]),
357
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_fin_inds_q.", { minLength: 1 }), ["2025-01-01"]),
358
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_fin_inds_q.", {
359
+ minimum: 1,
360
+ maximum: 500,
361
+ }), [10]),
362
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_fin_inds_q.", { minimum: 1 }), [1]),
363
+ }, { required: [] }), ["fundCode", "fundCodes"]),
364
+ outputSchema: investodayCodeDataOutputSchema,
365
+ },
366
+ {
367
+ name: "list_fund_hold_industry",
368
+ toolName: "list_fund_hold_industry",
369
+ description: "List fund hold industry data from Investoday.",
370
+ operationType: "read",
371
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_hold_industry operation.", {
372
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
373
+ minItems: 1,
374
+ }), [["000001", "000006"]]),
375
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
376
+ "000006",
377
+ ]),
378
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_hold_industry.", {
379
+ minimum: 1,
380
+ maximum: 500,
381
+ }), [10]),
382
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_hold_industry.", { minimum: 1 }), [1]),
383
+ }, { required: [] }), ["fundCode", "fundCodes"]),
384
+ outputSchema: investodayCodeDataOutputSchema,
385
+ },
386
+ {
387
+ name: "list_fund_hold_structures",
388
+ toolName: "list_fund_hold_structures",
389
+ description: "List fund hold structures data from Investoday.",
390
+ operationType: "read",
391
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_hold_structures operation.", {
392
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_hold_structures.", {
393
+ minLength: 1,
394
+ }), ["2025-01-01"]),
395
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
396
+ minItems: 1,
397
+ }), [["000001", "000006"]]),
398
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
399
+ "000001",
400
+ ]),
401
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_hold_structures.", {
402
+ minLength: 1,
403
+ }), ["2025-01-01"]),
404
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_hold_structures.", {
405
+ minimum: 1,
406
+ maximum: 500,
407
+ }), [10]),
408
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_hold_structures.", {
409
+ minimum: 1,
410
+ }), [1]),
411
+ }, { required: [] }), ["fundCode", "fundCodes"]),
412
+ outputSchema: investodayCodeDataOutputSchema,
413
+ },
414
+ {
415
+ name: "list_industry_hold_fund",
416
+ toolName: "list_industry_hold_fund",
417
+ description: "List industry hold fund data from Investoday.",
418
+ operationType: "read",
419
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_industry_hold_fund operation.", {
420
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_industry_hold_fund.", {
421
+ minimum: 1,
422
+ maximum: 500,
423
+ }), [10]),
424
+ industryCodes: s.withExamples(s.array("Industry codes Supply exactly one of industryCodes or industryCode.", s.string("One industryCode value."), { minItems: 1 }), [["370000", "74000"]]),
425
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_industry_hold_fund.", { minimum: 1 }), [1]),
426
+ industryCode: s.withExamples(s.nonEmptyString("Industry code Supply exactly one of industryCode or industryCodes."), ["370000"]),
427
+ }, { required: [] }), ["industryCode", "industryCodes"]),
428
+ outputSchema: investodayCodeDataOutputSchema,
429
+ },
430
+ {
431
+ name: "list_fund_invest_targets",
432
+ toolName: "list_fund_invest_targets",
433
+ description: "List fund invest targets data from Investoday.",
434
+ operationType: "read",
435
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_invest_targets operation.", {
436
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_invest_targets.", {
437
+ minLength: 1,
438
+ }), ["2025-01-01"]),
439
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
440
+ minItems: 1,
441
+ }), [["000001", "000006"]]),
442
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
443
+ "000001",
444
+ ]),
445
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_invest_targets.", {
446
+ minLength: 1,
447
+ }), ["2025-01-01"]),
448
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_invest_targets.", {
449
+ minimum: 1,
450
+ maximum: 500,
451
+ }), [10]),
452
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_invest_targets.", {
453
+ minimum: 1,
454
+ }), [1]),
455
+ }, { required: [] }), ["fundCode", "fundCodes"]),
456
+ outputSchema: investodayCodeDataOutputSchema,
457
+ },
458
+ {
459
+ name: "get_fund_listings_record",
460
+ toolName: "get_fund_listings_record",
461
+ description: "Get fund listings record data from Investoday.",
462
+ operationType: "read",
463
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_listings_record operation.", {
464
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
465
+ minItems: 1,
466
+ }), [["000001", "000006"]]),
467
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
468
+ "000001",
469
+ ]),
470
+ }, { required: [] }), ["fundCode", "fundCodes"]),
471
+ outputSchema: investodayCodeDataOutputSchema,
472
+ },
473
+ {
474
+ name: "list_fund_nav_history",
475
+ toolName: "list_fund_nav_history",
476
+ description: "List fund nav history data from Investoday.",
477
+ operationType: "read",
478
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_nav_history operation.", {
479
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_nav_history.", {
480
+ minLength: 1,
481
+ }), ["2025-01-01"]),
482
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
483
+ minItems: 1,
484
+ }), [["000001", "000006"]]),
485
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
486
+ "000001",
487
+ ]),
488
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_nav_history.", { minLength: 1 }), ["2025-01-01"]),
489
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_nav_history.", {
490
+ minimum: 1,
491
+ maximum: 500,
492
+ }), [10]),
493
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_nav_history.", { minimum: 1 }), [1]),
494
+ }, { required: [] }), ["fundCode", "fundCodes"]),
495
+ outputSchema: investodayCodeDataOutputSchema,
496
+ },
497
+ {
498
+ name: "list_perf_benchmark_quote",
499
+ toolName: "list_perf_benchmark_quote",
500
+ description: "List performance benchmark quote data from Investoday.",
501
+ operationType: "read",
502
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_perf_benchmark_quote operation.", {
503
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_perf_benchmark_quote.", {
504
+ minLength: 1,
505
+ }), ["2025-01-01"]),
506
+ benchmarkIndexCodes: s.withExamples(s.array("Benchmark index codes Supply exactly one of benchmarkIndexCodes or benchmarkIndexCode.", s.string("One benchmarkIndexCode value."), { minItems: 1 }), [["000001", "000006"]]),
507
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_perf_benchmark_quote.", {
508
+ minLength: 1,
509
+ }), ["2025-01-01"]),
510
+ benchmarkIndexCode: s.withExamples(s.nonEmptyString("Benchmark index code Supply exactly one of benchmarkIndexCode or benchmarkIndexCodes."), ["000001"]),
511
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_perf_benchmark_quote.", {
512
+ minimum: 1,
513
+ maximum: 500,
514
+ }), [10]),
515
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_perf_benchmark_quote.", {
516
+ minimum: 1,
517
+ }), [1]),
518
+ }, { required: [] }), ["benchmarkIndexCode", "benchmarkIndexCodes"]),
519
+ outputSchema: investodayCodeDataOutputSchema,
520
+ },
521
+ {
522
+ name: "list_fund_perf_benchmarks",
523
+ toolName: "list_fund_perf_benchmarks",
524
+ description: "List fund performance benchmarks data from Investoday.",
525
+ operationType: "read",
526
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_perf_benchmarks operation.", {
527
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_perf_benchmarks.", {
528
+ minLength: 1,
529
+ }), ["2025-01-01"]),
530
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
531
+ minItems: 1,
532
+ }), [["000001", "000006"]]),
533
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
534
+ "000001",
535
+ ]),
536
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_perf_benchmarks.", {
537
+ minLength: 1,
538
+ }), ["2025-01-01"]),
539
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_perf_benchmarks.", {
540
+ minimum: 1,
541
+ maximum: 500,
542
+ }), [10]),
543
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_perf_benchmarks.", {
544
+ minimum: 1,
545
+ }), [1]),
546
+ }, { required: [] }), ["fundCode", "fundCodes"]),
547
+ outputSchema: investodayCodeDataOutputSchema,
548
+ },
549
+ {
550
+ name: "list_fund_portfolio_asset_holdings",
551
+ toolName: "list_fund_portfolio_asset_holdings",
552
+ description: "List fund portfolio asset holdings data from Investoday.",
553
+ operationType: "read",
554
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_portfolio_asset_holdings operation.", {
555
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
556
+ minItems: 1,
557
+ }), [["000001", "000006"]]),
558
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
559
+ "000006",
560
+ ]),
561
+ }, { required: [] }), ["fundCode", "fundCodes"]),
562
+ outputSchema: investodayCodeDataOutputSchema,
563
+ },
564
+ {
565
+ name: "list_fund_portfolio_bond_holdings",
566
+ toolName: "list_fund_portfolio_bond_holdings",
567
+ description: "List fund portfolio bond holdings data from Investoday.",
568
+ operationType: "read",
569
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_portfolio_bond_holdings operation.", {
570
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
571
+ minItems: 1,
572
+ }), [["000001", "000006"]]),
573
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
574
+ "000006",
575
+ ]),
576
+ }, { required: [] }), ["fundCode", "fundCodes"]),
577
+ outputSchema: investodayCodeDataOutputSchema,
578
+ },
579
+ {
580
+ name: "list_portfolio_fund_holdings",
581
+ toolName: "list_portfolio_fund_holdings",
582
+ description: "List portfolio fund holdings data from Investoday.",
583
+ operationType: "read",
584
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_portfolio_fund_holdings operation.", {
585
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
586
+ minItems: 1,
587
+ }), [["000001", "000006"]]),
588
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
589
+ "000006",
590
+ ]),
591
+ }, { required: [] }), ["fundCode", "fundCodes"]),
592
+ outputSchema: investodayCodeDataOutputSchema,
593
+ },
594
+ {
595
+ name: "list_fund_portfolio_stock_holdings",
596
+ toolName: "list_fund_portfolio_stock_holdings",
597
+ description: "List fund portfolio stock holdings data from Investoday.",
598
+ operationType: "read",
599
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_portfolio_stock_holdings operation.", {
600
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
601
+ minItems: 1,
602
+ }), [["000001", "000006"]]),
603
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
604
+ "000006",
605
+ ]),
606
+ }, { required: [] }), ["fundCode", "fundCodes"]),
607
+ outputSchema: investodayCodeDataOutputSchema,
608
+ },
609
+ {
610
+ name: "list_fund_return_rate",
611
+ toolName: "list_fund_return_rate",
612
+ description: "List fund return rate data from Investoday.",
613
+ operationType: "read",
614
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_return_rate operation.", {
615
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
616
+ minItems: 1,
617
+ }), [["000001", "000006"]]),
618
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
619
+ "000001",
620
+ ]),
621
+ }, { required: [] }), ["fundCode", "fundCodes"]),
622
+ outputSchema: investodayCodeDataOutputSchema,
623
+ },
624
+ {
625
+ name: "list_fund_shares",
626
+ toolName: "list_fund_shares",
627
+ description: "List fund shares data from Investoday.",
628
+ operationType: "read",
629
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_shares operation.", {
630
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_shares.", {
631
+ minLength: 1,
632
+ }), ["2025-01-01"]),
633
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
634
+ minItems: 1,
635
+ }), [["000001", "000006"]]),
636
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
637
+ "000001",
638
+ ]),
639
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_shares.", {
640
+ minLength: 1,
641
+ }), ["2025-01-01"]),
642
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_shares.", {
643
+ minimum: 1,
644
+ maximum: 500,
645
+ }), [10]),
646
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_shares.", {
647
+ minimum: 1,
648
+ }), [1]),
649
+ }, { required: [] }), ["fundCode", "fundCodes"]),
650
+ outputSchema: investodayCodeDataOutputSchema,
651
+ },
652
+ {
653
+ name: "list_subscription_redemption_status",
654
+ toolName: "list_subscription_redemption_status",
655
+ description: "List subscription redemption status data from Investoday.",
656
+ operationType: "read",
657
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_subscription_redemption_status operation.", {
658
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_subscription_redemption_status.", {
659
+ minLength: 1,
660
+ }), ["2025-01-01"]),
661
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
662
+ minItems: 1,
663
+ }), [["000001", "000006"]]),
664
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
665
+ "000001",
666
+ ]),
667
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_subscription_redemption_status.", {
668
+ minLength: 1,
669
+ }), ["2025-01-01"]),
670
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_subscription_redemption_status.", {
671
+ minimum: 1,
672
+ maximum: 500,
673
+ }), [10]),
674
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_subscription_redemption_status.", {
675
+ minimum: 1,
676
+ }), [1]),
677
+ }, { required: [] }), ["fundCode", "fundCodes"]),
678
+ outputSchema: investodayCodeDataOutputSchema,
679
+ },
680
+ {
681
+ name: "list_fund_share_splits",
682
+ toolName: "list_fund_share_splits",
683
+ description: "List fund share splits data from Investoday.",
684
+ operationType: "read",
685
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_share_splits operation.", {
686
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_share_splits.", {
687
+ minLength: 1,
688
+ }), ["2025-01-01"]),
689
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
690
+ minItems: 1,
691
+ }), [["000001", "000006"]]),
692
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
693
+ "000001",
694
+ ]),
695
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_share_splits.", {
696
+ minLength: 1,
697
+ }), ["2025-01-01"]),
698
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_share_splits.", {
699
+ minimum: 1,
700
+ maximum: 500,
701
+ }), [10]),
702
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_share_splits.", { minimum: 1 }), [1]),
703
+ }, { required: [] }), ["fundCode", "fundCodes"]),
704
+ outputSchema: investodayCodeDataOutputSchema,
705
+ },
706
+ {
707
+ name: "get_fund_company_evals",
708
+ toolName: "get_fund_company_evals",
709
+ description: "Get fund company evals data from Investoday.",
710
+ operationType: "read",
711
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_company_evals operation.", {
712
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
713
+ minItems: 1,
714
+ }), [["000001", "000006"]]),
715
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
716
+ "000006",
717
+ ]),
718
+ }, { required: [] }), ["fundCode", "fundCodes"]),
719
+ outputSchema: investodayCodeDataOutputSchema,
720
+ },
721
+ {
722
+ name: "list_fund_mgr_hist_per",
723
+ toolName: "list_fund_mgr_hist_per",
724
+ description: "List fund manager historical per data from Investoday.",
725
+ operationType: "read",
726
+ inputSchema: s.object("Arguments for the Investoday list_fund_mgr_hist_per operation.", {
727
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_mgr_hist_per.", {
728
+ minimum: 1,
729
+ maximum: 500,
730
+ }), [10]),
731
+ fundManagerName: s.withExamples(s.nonEmptyString("Fund manager name Accepted by Investoday for list_fund_mgr_hist_per."), ["张三"]),
732
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_mgr_hist_per.", { minimum: 1 }), [1]),
733
+ }, { required: [] }),
734
+ outputSchema: investodayCodeDataOutputSchema,
735
+ },
736
+ {
737
+ name: "list_fund_mgr_returns",
738
+ toolName: "list_fund_mgr_returns",
739
+ description: "List fund manager returns data from Investoday.",
740
+ operationType: "read",
741
+ inputSchema: s.object("Arguments for the Investoday list_fund_mgr_returns operation.", {
742
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_mgr_returns.", { minLength: 1 }), ["2025-01-01"]),
743
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_mgr_returns.", { minLength: 1 }), ["2025-01-01"]),
744
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_mgr_returns.", {
745
+ minimum: 1,
746
+ maximum: 500,
747
+ }), [10]),
748
+ fundManagerName: s.withExamples(s.nonEmptyString("Fund manager name Accepted by Investoday for list_fund_mgr_returns."), ["张三"]),
749
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_mgr_returns.", { minimum: 1 }), [1]),
750
+ }, { required: ["fundManagerName"] }),
751
+ outputSchema: investodayCodeDataOutputSchema,
752
+ },
753
+ {
754
+ name: "list_fund_mgr_perf",
755
+ toolName: "list_fund_mgr_perf",
756
+ description: "List fund manager performance data from Investoday.",
757
+ operationType: "read",
758
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_mgr_perf operation.", {
759
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
760
+ minItems: 1,
761
+ }), [["000001", "000006"]]),
762
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
763
+ "000001",
764
+ ]),
765
+ managerName: s.withExamples(s.nonEmptyString("Manager name Accepted by Investoday for list_fund_mgr_perf."), [
766
+ "张三",
767
+ ]),
768
+ employmentStatus: s.withExamples(s.withEnum(s.integer("Employment status Accepted by Investoday for list_fund_mgr_perf."), [1, 0]), [1]),
769
+ }, { required: [] }), ["fundCode", "fundCodes"]),
770
+ outputSchema: investodayCodeDataOutputSchema,
771
+ },
772
+ {
773
+ name: "list_concept_hold_fund",
774
+ toolName: "list_concept_hold_fund",
775
+ description: "List concept hold fund data from Investoday.",
776
+ operationType: "read",
777
+ inputSchema: s.object("Arguments for the Investoday list_concept_hold_fund operation.", {
778
+ conceptCodes: s.withExamples(s.array("Concept codes Accepted by Investoday for list_concept_hold_fund.", s.string("One conceptCode value.")), [["CLS80457", "CLS82591"]]),
779
+ conceptCode: s.withExamples(s.nonEmptyString("Concept code Accepted by Investoday for list_concept_hold_fund."), ["CLS82591"]),
780
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_concept_hold_fund.", {
781
+ minimum: 1,
782
+ maximum: 500,
783
+ }), [10]),
784
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_concept_hold_fund.", { minimum: 1 }), [1]),
785
+ }, { required: [] }),
786
+ outputSchema: investodayCodeDataOutputSchema,
787
+ },
788
+ {
789
+ name: "list_concept_hold_fund_batch",
790
+ toolName: "list_concept_hold_fund_batch",
791
+ description: "List concept hold fund batch data from Investoday.",
792
+ operationType: "read",
793
+ inputSchema: s.object("Arguments for the Investoday list_concept_hold_fund_batch operation.", {
794
+ isETF: s.withExamples(s.boolean("Whether to limit results to exchange-traded funds Accepted by Investoday for list_concept_hold_fund_batch."), [true]),
795
+ conceptCodes: s.array("Concept codes Accepted by Investoday for list_concept_hold_fund_batch.", s.string("One conceptCode value."), { minItems: 1 }),
796
+ matchType: s.withExamples(s.withEnum(s.integer("Result matching type Accepted by Investoday for list_concept_hold_fund_batch."), [1, 2, 3]), [1]),
797
+ threshold: s.withExamples(s.integer("Threshold value Accepted by Investoday for list_concept_hold_fund_batch."), [40]),
798
+ }, { required: ["conceptCodes", "matchType", "threshold"] }),
799
+ outputSchema: investodayCodeDataOutputSchema,
800
+ },
801
+ {
802
+ name: "list_fund_current_manager_returns",
803
+ toolName: "list_fund_current_manager_returns",
804
+ description: "List fund current manager returns data from Investoday.",
805
+ operationType: "read",
806
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_current_manager_returns operation.", {
807
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
808
+ minItems: 1,
809
+ }), [["000001", "000006"]]),
810
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
811
+ "000300",
812
+ ]),
813
+ }, { required: [] }), ["fundCode", "fundCodes"]),
814
+ outputSchema: investodayCodeDataOutputSchema,
815
+ },
816
+ {
817
+ name: "get_fund_peer_avg_metric",
818
+ toolName: "get_fund_peer_avg_metric",
819
+ description: "Get fund peer average metric data from Investoday.",
820
+ operationType: "read",
821
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_peer_avg_metric operation.", {
822
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
823
+ minItems: 1,
824
+ }), [["000001", "000006"]]),
825
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
826
+ "000300",
827
+ ]),
828
+ }, { required: [] }), ["fundCode", "fundCodes"]),
829
+ outputSchema: investodayCodeDataOutputSchema,
830
+ },
831
+ {
832
+ name: "list_fund_flow",
833
+ toolName: "list_fund_flow",
834
+ description: "List fund flow data from Investoday.",
835
+ operationType: "read",
836
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_flow operation.", {
837
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_flow.", {
838
+ minLength: 1,
839
+ }), ["2025-01-01"]),
840
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
841
+ minItems: 1,
842
+ }), [["510300", "159915"]]),
843
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
844
+ "510300",
845
+ ]),
846
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_flow.", {
847
+ minLength: 1,
848
+ }), ["2025-12-31"]),
849
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_flow.", {
850
+ minimum: 1,
851
+ maximum: 500,
852
+ }), [10]),
853
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_flow.", {
854
+ minimum: 1,
855
+ }), [1]),
856
+ }, { required: [] }), ["fundCode", "fundCodes"]),
857
+ outputSchema: investodayCodeDataOutputSchema,
858
+ },
859
+ {
860
+ name: "list_fund_holdings_perf",
861
+ toolName: "list_fund_holdings_perf",
862
+ description: "List fund holdings performance data from Investoday.",
863
+ operationType: "read",
864
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_holdings_perf operation.", {
865
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
866
+ minItems: 1,
867
+ }), [["000001", "000006"]]),
868
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
869
+ "002594",
870
+ ]),
871
+ }, { required: [] }), ["fundCode", "fundCodes"]),
872
+ outputSchema: investodayCodeDataOutputSchema,
873
+ },
874
+ {
875
+ name: "list_fund_idx_ret_corr",
876
+ toolName: "list_fund_idx_ret_corr",
877
+ description: "List fund index ret corr data from Investoday.",
878
+ operationType: "read",
879
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_idx_ret_corr operation.", {
880
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_idx_ret_corr.", {
881
+ minLength: 1,
882
+ }), ["2025-01-01"]),
883
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
884
+ minItems: 1,
885
+ }), [["000001", "000006"]]),
886
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
887
+ "000001",
888
+ ]),
889
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_idx_ret_corr.", {
890
+ minLength: 1,
891
+ }), ["2025-01-01"]),
892
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_idx_ret_corr.", {
893
+ minimum: 1,
894
+ maximum: 500,
895
+ }), [10]),
896
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_idx_ret_corr.", { minimum: 1 }), [1]),
897
+ }, { required: [] }), ["fundCode", "fundCodes"]),
898
+ outputSchema: investodayCodeDataOutputSchema,
899
+ },
900
+ {
901
+ name: "list_industry_hold_fund_batch",
902
+ toolName: "list_industry_hold_fund_batch",
903
+ description: "List industry hold fund batch data from Investoday.",
904
+ operationType: "read",
905
+ inputSchema: s.object("Arguments for the Investoday list_industry_hold_fund_batch operation.", {
906
+ isETF: s.withExamples(s.boolean("Whether to limit results to exchange-traded funds Accepted by Investoday for list_industry_hold_fund_batch."), [true]),
907
+ matchType: s.withExamples(s.withEnum(s.integer("Result matching type Accepted by Investoday for list_industry_hold_fund_batch."), [1, 2, 3, 4, 5, 6, 7]), [1]),
908
+ threshold: s.withExamples(s.number("Threshold value Accepted by Investoday for list_industry_hold_fund_batch."), [40]),
909
+ industryCodes: s.withExamples(s.array("Industry codes Accepted by Investoday for list_industry_hold_fund_batch.", s.string("One industryCode value."), { minItems: 1 }), [["640000", "740000"]]),
910
+ }, { required: ["industryCodes", "matchType", "threshold"] }),
911
+ outputSchema: investodayCodeDataOutputSchema,
912
+ },
913
+ {
914
+ name: "list_fund_margin_trade",
915
+ toolName: "list_fund_margin_trade",
916
+ description: "List fund margin trade data from Investoday.",
917
+ operationType: "read",
918
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_margin_trade operation.", {
919
+ beginDate: s.withExamples(s.nonEmptyString("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_margin_trade."), ["2025-01-01"]),
920
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
921
+ minItems: 1,
922
+ }), [["000001", "600519"]]),
923
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
924
+ "002594",
925
+ ]),
926
+ endDate: s.withExamples(s.nonEmptyString("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_margin_trade."), ["2025-01-01"]),
927
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_margin_trade.", {
928
+ minimum: 1,
929
+ maximum: 500,
930
+ }), [10]),
931
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_margin_trade.", { minimum: 1 }), [1]),
932
+ }, { required: [] }), ["fundCode", "fundCodes"]),
933
+ outputSchema: investodayCodeDataOutputSchema,
934
+ },
935
+ {
936
+ name: "list_fund_oscillator_indicators",
937
+ toolName: "list_fund_oscillator_indicators",
938
+ description: "List fund oscillator indicators data from Investoday.",
939
+ operationType: "read",
940
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_oscillator_indicators operation.", {
941
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_oscillator_indicators.", {
942
+ minLength: 1,
943
+ }), ["2020-01-01"]),
944
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
945
+ minItems: 1,
946
+ }), [["000001", "600519"]]),
947
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
948
+ "000001",
949
+ ]),
950
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_oscillator_indicators.", {
951
+ minLength: 1,
952
+ }), ["2025-01-01"]),
953
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_oscillator_indicators.", {
954
+ minimum: 1,
955
+ maximum: 500,
956
+ }), [10]),
957
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_oscillator_indicators.", {
958
+ minimum: 1,
959
+ }), [1]),
960
+ }, { required: [] }), ["fundCode", "fundCodes"]),
961
+ outputSchema: investodayCodeDataOutputSchema,
962
+ },
963
+ {
964
+ name: "get_fund_performance_attribution",
965
+ toolName: "get_fund_performance_attribution",
966
+ description: "Get fund performance attribution data from Investoday.",
967
+ operationType: "read",
968
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday get_fund_performance_attribution operation.", {
969
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
970
+ minItems: 1,
971
+ }), [["000001", "000006"]]),
972
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
973
+ "000001",
974
+ ]),
975
+ }, { required: [] }), ["fundCode", "fundCodes"]),
976
+ outputSchema: investodayCodeDataOutputSchema,
977
+ },
978
+ {
979
+ name: "list_fund_price_volume_indicators",
980
+ toolName: "list_fund_price_volume_indicators",
981
+ description: "List fund price volume indicators data from Investoday.",
982
+ operationType: "read",
983
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_price_volume_indicators operation.", {
984
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_price_volume_indicators.", {
985
+ minLength: 1,
986
+ }), ["2020-01-01"]),
987
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
988
+ minItems: 1,
989
+ }), [["000001", "600519"]]),
990
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
991
+ "000001",
992
+ ]),
993
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_price_volume_indicators.", {
994
+ minLength: 1,
995
+ }), ["2025-01-01"]),
996
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_price_volume_indicators.", {
997
+ minimum: 1,
998
+ maximum: 500,
999
+ }), [10]),
1000
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_price_volume_indicators.", {
1001
+ minimum: 1,
1002
+ }), [1]),
1003
+ }, { required: [] }), ["fundCode", "fundCodes"]),
1004
+ outputSchema: investodayCodeDataOutputSchema,
1005
+ },
1006
+ {
1007
+ name: "list_fund_strength_trend_indicators",
1008
+ toolName: "list_fund_strength_trend_indicators",
1009
+ description: "List fund strength trend indicators data from Investoday.",
1010
+ operationType: "read",
1011
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_strength_trend_indicators operation.", {
1012
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_strength_trend_indicators.", {
1013
+ minLength: 1,
1014
+ }), ["2020-01-01"]),
1015
+ fundCodes: s.withExamples(s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), {
1016
+ minItems: 1,
1017
+ }), [["000001", "600519"]]),
1018
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
1019
+ "000001",
1020
+ ]),
1021
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_strength_trend_indicators.", {
1022
+ minLength: 1,
1023
+ }), ["2025-01-01"]),
1024
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_strength_trend_indicators.", {
1025
+ minimum: 1,
1026
+ maximum: 500,
1027
+ }), [10]),
1028
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_strength_trend_indicators.", {
1029
+ minimum: 1,
1030
+ }), [1]),
1031
+ }, { required: [] }), ["fundCode", "fundCodes"]),
1032
+ outputSchema: investodayCodeDataOutputSchema,
1033
+ },
1034
+ {
1035
+ name: "list_fund_tech_indicators",
1036
+ toolName: "list_fund_tech_indicators",
1037
+ description: "List fund tech indicators data from Investoday.",
1038
+ operationType: "read",
1039
+ inputSchema: s.requireExactlyOneProperty(s.object("Arguments for the Investoday list_fund_tech_indicators operation.", {
1040
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_tech_indicators.", {
1041
+ minLength: 1,
1042
+ }), ["2025-01-01"]),
1043
+ fundCodes: s.array("Fund codes Supply exactly one of fundCodes or fundCode.", s.string("One fundCode value."), { minItems: 1 }),
1044
+ fundCode: s.withExamples(s.nonEmptyString("Fund code Supply exactly one of fundCode or fundCodes."), [
1045
+ "000001",
1046
+ ]),
1047
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_tech_indicators.", {
1048
+ minLength: 1,
1049
+ }), ["2025-01-01"]),
1050
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_tech_indicators.", {
1051
+ minimum: 1,
1052
+ maximum: 500,
1053
+ }), [10]),
1054
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_tech_indicators.", {
1055
+ minimum: 1,
1056
+ }), [1]),
1057
+ }, { required: [] }), ["fundCode", "fundCodes"]),
1058
+ outputSchema: investodayCodeDataOutputSchema,
1059
+ },
1060
+ {
1061
+ name: "list_fund_announcements",
1062
+ toolName: "list_fund_announcements",
1063
+ description: "List fund announcements data from Investoday.",
1064
+ operationType: "read",
1065
+ inputSchema: s.object("Arguments for the Investoday list_fund_announcements operation.", {
1066
+ beginDate: s.withExamples(s.date("Start date in YYYY-MM-DD format Accepted by Investoday for list_fund_announcements.", {
1067
+ minLength: 1,
1068
+ }), ["2020-01-01"]),
1069
+ fundCodes: s.withExamples(s.array("Fund codes Accepted by Investoday for list_fund_announcements.", s.string("One fundCode value."), {
1070
+ minItems: 1,
1071
+ }), [["000001", "000004"]]),
1072
+ endDate: s.withExamples(s.date("End date in YYYY-MM-DD format Accepted by Investoday for list_fund_announcements.", { minLength: 1 }), ["2020-01-02"]),
1073
+ announcementID: s.withExamples(s.integer("Announcement identifier Accepted by Investoday for list_fund_announcements."), [9128035]),
1074
+ pageSize: s.withExamples(s.integer("Number of records per page Accepted by Investoday for list_fund_announcements.", {
1075
+ minimum: 1,
1076
+ maximum: 500,
1077
+ }), [10]),
1078
+ title: s.withExamples(s.nonEmptyString("Title keyword Accepted by Investoday for list_fund_announcements."), [
1079
+ "贵州茅台利润大涨",
1080
+ ]),
1081
+ pageNum: s.withExamples(s.integer("Page number, starting at 1 Accepted by Investoday for list_fund_announcements.", { minimum: 1 }), [1]),
1082
+ }, { required: ["fundCodes"] }),
1083
+ outputSchema: investodayCodeDataOutputSchema,
1084
+ },
1085
+ ];