@oomol-lab/open-connector 1.6.2 → 1.6.3

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 (168) hide show
  1. package/README.md +27 -0
  2. package/assets/open-connector/catalog/apps/assured_platform.json +218 -0
  3. package/assets/open-connector/catalog/apps/baixiao.json +1080 -0
  4. package/assets/open-connector/catalog/apps/benchmarkone.json +956 -0
  5. package/assets/open-connector/catalog/apps/bing_webmaster.json +3097 -0
  6. package/assets/open-connector/catalog/apps/buzzsprout.json +1979 -0
  7. package/assets/open-connector/catalog/apps/feishu.json +13 -19
  8. package/assets/open-connector/catalog/apps/feishu_app_bot.json +10 -17
  9. package/assets/open-connector/catalog/apps/linkfox.json +836 -0
  10. package/assets/open-connector/catalog/apps/metatraderapi.json +1077 -0
  11. package/assets/open-connector/catalog/apps/mktindex.json +2411 -0
  12. package/assets/open-connector/catalog/apps/mojo_helpdesk.json +660 -0
  13. package/assets/open-connector/catalog/apps/mumble.json +446 -0
  14. package/assets/open-connector/catalog/apps/notion.json +112 -3
  15. package/assets/open-connector/catalog/apps/omise.json +438 -0
  16. package/assets/open-connector/catalog/apps/panjiva.json +2858 -0
  17. package/assets/open-connector/catalog/apps/papertrail.json +449 -0
  18. package/assets/open-connector/catalog/apps/peec.json +747 -0
  19. package/assets/open-connector/catalog/apps/polygon_io.json +5156 -584
  20. package/assets/open-connector/catalog/apps/quant_data.json +1928 -0
  21. package/assets/open-connector/catalog/apps/riddle_quiz_maker.json +621 -0
  22. package/assets/open-connector/catalog/apps/slack.json +327 -4
  23. package/assets/open-connector/catalog/apps/slackbot.json +280 -3
  24. package/assets/open-connector/catalog/apps/templatedocs.json +438 -0
  25. package/assets/open-connector/catalog/apps/terminus_app.json +510 -0
  26. package/assets/open-connector/catalog/apps/ticket_tailor.json +584 -0
  27. package/assets/open-connector/catalog/apps/tongdaxin.json +2612 -79
  28. package/assets/open-connector/catalog/apps/veremark.json +514 -0
  29. package/assets/open-connector/catalog/apps/walletap.json +549 -0
  30. package/assets/open-connector/catalog/apps/xiaohongshu_store.json +955 -39
  31. package/assets/open-connector/catalog/apps-index.json +1 -1
  32. package/package.json +5 -1
  33. package/src/connection-service.d.ts +2 -0
  34. package/src/connection-service.js +8 -1
  35. package/src/core/provider-id.d.ts +5 -0
  36. package/src/core/provider-id.js +12 -0
  37. package/src/oauth/oauth-credential-refresh-service.js +2 -0
  38. package/src/oauth/oauth-flow-service.js +2 -0
  39. package/src/providers/action-contracts.generated.d.ts +27 -7
  40. package/src/providers/assured_platform/executors.d.ts +4 -0
  41. package/src/providers/assured_platform/executors.js +18 -0
  42. package/src/providers/assured_platform/runtime.d.ts +7 -0
  43. package/src/providers/assured_platform/runtime.js +108 -0
  44. package/src/providers/baixiao/actions.d.ts +2 -0
  45. package/src/providers/baixiao/actions.js +377 -0
  46. package/src/providers/baixiao/executors.d.ts +4 -0
  47. package/src/providers/baixiao/executors.js +106 -0
  48. package/src/providers/benchmarkone/executors.d.ts +4 -0
  49. package/src/providers/benchmarkone/executors.js +26 -0
  50. package/src/providers/benchmarkone/runtime.d.ts +12 -0
  51. package/src/providers/benchmarkone/runtime.js +113 -0
  52. package/src/providers/bing_webmaster/actions.d.ts +2 -0
  53. package/src/providers/bing_webmaster/actions.js +113 -0
  54. package/src/providers/bing_webmaster/executors.d.ts +4 -0
  55. package/src/providers/bing_webmaster/executors.js +104 -0
  56. package/src/providers/bing_webmaster/management-actions.d.ts +2 -0
  57. package/src/providers/bing_webmaster/management-actions.js +241 -0
  58. package/src/providers/bing_webmaster/reporting-actions.d.ts +2 -0
  59. package/src/providers/bing_webmaster/reporting-actions.js +300 -0
  60. package/src/providers/bing_webmaster/schemas.d.ts +33 -0
  61. package/src/providers/bing_webmaster/schemas.js +313 -0
  62. package/src/providers/buzzsprout/executors.d.ts +4 -0
  63. package/src/providers/buzzsprout/executors.js +21 -0
  64. package/src/providers/buzzsprout/runtime.d.ts +12 -0
  65. package/src/providers/buzzsprout/runtime.js +237 -0
  66. package/src/providers/feishu/shared/drive-actions.d.ts +1 -0
  67. package/src/providers/feishu/shared/drive-actions.js +13 -9
  68. package/src/providers/feishu/shared/drive-runtime.js +15 -3
  69. package/src/providers/feishu/shared/wiki-actions.js +4 -2
  70. package/src/providers/hithink_finance/runtime.js +39 -60
  71. package/src/providers/linkfox/actions.js +2 -0
  72. package/src/providers/linkfox/runtime.js +70 -1
  73. package/src/providers/linkfox/sif-actions.d.ts +10 -0
  74. package/src/providers/linkfox/sif-actions.js +193 -0
  75. package/src/providers/metatraderapi/executors.d.ts +4 -0
  76. package/src/providers/metatraderapi/executors.js +18 -0
  77. package/src/providers/metatraderapi/runtime.d.ts +7 -0
  78. package/src/providers/metatraderapi/runtime.js +216 -0
  79. package/src/providers/mktindex/actions-mmi.d.ts +2 -0
  80. package/src/providers/mktindex/actions-mmi.js +510 -0
  81. package/src/providers/mktindex/actions.d.ts +2 -0
  82. package/src/providers/mktindex/actions.js +2 -0
  83. package/src/providers/mktindex/executors.d.ts +4 -0
  84. package/src/providers/mktindex/executors.js +27 -0
  85. package/src/providers/mktindex/request.d.ts +17 -0
  86. package/src/providers/mktindex/request.js +48 -0
  87. package/src/providers/mktindex/runtime.d.ts +9 -0
  88. package/src/providers/mktindex/runtime.js +492 -0
  89. package/src/providers/mojo_helpdesk/executors.d.ts +4 -0
  90. package/src/providers/mojo_helpdesk/executors.js +18 -0
  91. package/src/providers/mojo_helpdesk/runtime.d.ts +7 -0
  92. package/src/providers/mojo_helpdesk/runtime.js +173 -0
  93. package/src/providers/mumble/executors.d.ts +4 -0
  94. package/src/providers/mumble/executors.js +99 -0
  95. package/src/providers/notion/executors.d.ts +9 -0
  96. package/src/providers/notion/executors.js +161 -6
  97. package/src/providers/omise/executors.d.ts +4 -0
  98. package/src/providers/omise/executors.js +120 -0
  99. package/src/providers/panjiva/actions.d.ts +14 -0
  100. package/src/providers/panjiva/actions.js +389 -0
  101. package/src/providers/panjiva/executors.d.ts +4 -0
  102. package/src/providers/panjiva/executors.js +136 -0
  103. package/src/providers/papertrail/executors.d.ts +4 -0
  104. package/src/providers/papertrail/executors.js +15 -0
  105. package/src/providers/papertrail/runtime.d.ts +7 -0
  106. package/src/providers/papertrail/runtime.js +167 -0
  107. package/src/providers/peec/executors.d.ts +4 -0
  108. package/src/providers/peec/executors.js +15 -0
  109. package/src/providers/peec/runtime.d.ts +7 -0
  110. package/src/providers/peec/runtime.js +128 -0
  111. package/src/providers/polygon_io/actions.d.ts +2 -0
  112. package/src/providers/polygon_io/actions.js +282 -0
  113. package/src/providers/polygon_io/expanded-actions.d.ts +2 -0
  114. package/src/providers/polygon_io/expanded-actions.js +375 -0
  115. package/src/providers/polygon_io/expanded-runtime.d.ts +16 -0
  116. package/src/providers/polygon_io/expanded-runtime.js +277 -0
  117. package/src/providers/polygon_io/runtime.js +21 -2
  118. package/src/providers/quant_data/executors.d.ts +4 -0
  119. package/src/providers/quant_data/executors.js +15 -0
  120. package/src/providers/quant_data/runtime.d.ts +7 -0
  121. package/src/providers/quant_data/runtime.js +118 -0
  122. package/src/providers/registry.generated.js +20 -0
  123. package/src/providers/riddle_quiz_maker/executors.d.ts +4 -0
  124. package/src/providers/riddle_quiz_maker/executors.js +15 -0
  125. package/src/providers/riddle_quiz_maker/runtime.d.ts +7 -0
  126. package/src/providers/riddle_quiz_maker/runtime.js +145 -0
  127. package/src/providers/slack/actions.js +106 -3
  128. package/src/providers/slack/runtime.js +260 -36
  129. package/src/providers/slackbot/actions.js +1 -1
  130. package/src/providers/templatedocs/executors.d.ts +4 -0
  131. package/src/providers/templatedocs/executors.js +18 -0
  132. package/src/providers/templatedocs/runtime.d.ts +13 -0
  133. package/src/providers/templatedocs/runtime.js +151 -0
  134. package/src/providers/terminus_app/executors.d.ts +4 -0
  135. package/src/providers/terminus_app/executors.js +15 -0
  136. package/src/providers/terminus_app/runtime.d.ts +7 -0
  137. package/src/providers/terminus_app/runtime.js +172 -0
  138. package/src/providers/ticket_tailor/executors.d.ts +4 -0
  139. package/src/providers/ticket_tailor/executors.js +15 -0
  140. package/src/providers/ticket_tailor/runtime.d.ts +7 -0
  141. package/src/providers/ticket_tailor/runtime.js +152 -0
  142. package/src/providers/tongdaxin/actions.d.ts +1 -0
  143. package/src/providers/tongdaxin/actions.js +6 -3
  144. package/src/providers/tongdaxin/executors.js +51 -10
  145. package/src/providers/tongdaxin/named-action-output.d.ts +1 -0
  146. package/src/providers/tongdaxin/named-action-output.js +149 -0
  147. package/src/providers/tongdaxin/named-action-routing.d.ts +9 -0
  148. package/src/providers/tongdaxin/named-action-routing.js +417 -0
  149. package/src/providers/tongdaxin/named-actions.d.ts +2 -0
  150. package/src/providers/tongdaxin/named-actions.js +378 -0
  151. package/src/providers/veremark/executors.d.ts +4 -0
  152. package/src/providers/veremark/executors.js +129 -0
  153. package/src/providers/walletap/executors.d.ts +4 -0
  154. package/src/providers/walletap/executors.js +15 -0
  155. package/src/providers/walletap/runtime.d.ts +7 -0
  156. package/src/providers/walletap/runtime.js +147 -0
  157. package/src/providers/weixin_official_account/access-token.js +31 -7
  158. package/src/providers/weixin_store/access-token.js +33 -7
  159. package/src/providers/xiaohongshu_store/executors.js +152 -3
  160. package/src/server/api/openapi.js +3 -0
  161. package/src/server/connector-assets.d.ts +4 -0
  162. package/src/server/connector-assets.js +12 -0
  163. package/src/server/connector-build.d.ts +33 -0
  164. package/src/server/connector-build.js +73 -0
  165. package/src/server/connector-runtime.d.ts +1 -2
  166. package/src/server/connector-runtime.js +2 -8
  167. package/src/server/server-assets.d.ts +0 -28
  168. package/src/server/server-assets.js +0 -50
@@ -0,0 +1,375 @@
1
+ import { jsonSchema as s } from "../../core/json-schema.js";
2
+ import { defineProviderAction } from "../../core/provider-definition.js";
3
+ const service = "polygon_io";
4
+ const ticker = s.nonEmptyString("The case-sensitive Massive ticker symbol, for example AAPL.");
5
+ const text = (description) => s.nonEmptyString(description);
6
+ const order = s.stringEnum("The order used when sorting returned results.", ["asc", "desc"]);
7
+ const limit = s.integer("The maximum number of results to return.", { minimum: 1, maximum: 50000 });
8
+ const snapshotLimit = s.integer("The maximum number of snapshot results to return.", {
9
+ minimum: 1,
10
+ maximum: 250,
11
+ });
12
+ const cursor = text("The pagination cursor from a previous response nextCursor value.");
13
+ const date = (description) => s.date(description);
14
+ const tickerArray = (description) => s.array(description, s.nonWhitespaceString("A Massive ticker symbol."), {
15
+ minItems: 1,
16
+ maxItems: 250,
17
+ uniqueItems: true,
18
+ });
19
+ const meta = s.object("Common response metadata returned by Massive.", {
20
+ status: s.nullable(s.string("The response status returned by Massive.")),
21
+ requestId: s.nullable(s.string("The request identifier assigned by Massive.")),
22
+ count: s.nullable(s.integer("The response count when Massive reports one.")),
23
+ });
24
+ const page = s.object("Cursor pagination information returned by Massive.", {
25
+ nextUrl: s.nullable(s.string("The next page URL when present.")),
26
+ nextCursor: s.nullable(s.string("The cursor extracted from nextUrl when present.")),
27
+ });
28
+ const rawRecord = s.looseObject("An unmodified result record returned by Massive.");
29
+ const listOutput = (description) => s.object(description, {
30
+ meta,
31
+ results: s.array("The result records returned by Massive.", rawRecord),
32
+ page,
33
+ });
34
+ const resultOutput = (description) => s.object(description, { meta, result: s.unknown("The result payload returned by Massive.") });
35
+ const pagedResultOutput = (description) => s.object(description, {
36
+ meta,
37
+ result: s.unknown("The result payload returned by Massive."),
38
+ page,
39
+ });
40
+ function input(description, properties, optional = []) {
41
+ return s.object(description, properties, { optional });
42
+ }
43
+ function readAction(config) {
44
+ return defineProviderAction(service, { operationType: "read", ...config });
45
+ }
46
+ const paging = { order, limit, sort: text("The upstream field used to sort results."), cursor };
47
+ const pagingOptional = ["order", "limit", "sort", "cursor"];
48
+ const dateRange = {
49
+ date: date("Filter results to this date."),
50
+ dateGte: date("Return results on or after this date."),
51
+ dateLte: date("Return results on or before this date."),
52
+ };
53
+ export const expandedPolygonIoActions = [
54
+ readAction({
55
+ name: "list_related_tickers",
56
+ description: "List companies related to a Massive stock ticker.",
57
+ inputSchema: input("Input parameters for listing related tickers.", { ticker }),
58
+ outputSchema: listOutput("The related tickers returned by Massive."),
59
+ }),
60
+ readAction({
61
+ name: "get_daily_open_close",
62
+ description: "Get a stock ticker's open, close, and extended-hours prices for one date.",
63
+ inputSchema: input("Input parameters for retrieving a daily open and close summary.", {
64
+ ticker,
65
+ date: date("The trading date to retrieve."),
66
+ adjusted: s.boolean("Whether prices should be adjusted for splits."),
67
+ }, ["adjusted"]),
68
+ outputSchema: resultOutput("The daily open and close summary returned by Massive."),
69
+ }),
70
+ readAction({
71
+ name: "get_stock_snapshot",
72
+ description: "Get the latest trade, quote, minute, day, and previous-day data for one stock.",
73
+ inputSchema: input("Input parameters for retrieving a stock snapshot.", { ticker }),
74
+ outputSchema: resultOutput("The stock snapshot returned by Massive."),
75
+ }),
76
+ readAction({
77
+ name: "get_unified_snapshot",
78
+ description: "Get current snapshots for an explicit list of Massive tickers across asset classes.",
79
+ inputSchema: input("Input parameters for retrieving unified snapshots.", {
80
+ tickers: tickerArray("The ticker symbols to retrieve."),
81
+ assetType: s.stringEnum("The optional asset type filter.", ["stocks", "options", "fx", "crypto", "indices"]),
82
+ ...paging,
83
+ limit: snapshotLimit,
84
+ }, ["assetType", ...pagingOptional]),
85
+ outputSchema: listOutput("The unified snapshots returned by Massive."),
86
+ }),
87
+ readAction({
88
+ name: "get_stock_movers",
89
+ description: "Get the current top gaining or losing U.S. stocks.",
90
+ inputSchema: input("Input parameters for retrieving stock market movers.", {
91
+ direction: s.stringEnum("Whether to return gainers or losers.", ["gainers", "losers"]),
92
+ }),
93
+ outputSchema: listOutput("The stock market movers returned by Massive."),
94
+ }),
95
+ readAction({
96
+ name: "list_trades",
97
+ description: "List historical trades for a stock or options ticker.",
98
+ inputSchema: input("Input parameters for listing historical trades.", {
99
+ ticker,
100
+ timestamp: text("Filter by an exact date, nanosecond timestamp, or RFC 3339 timestamp."),
101
+ timestampGte: text("Return trades at or after this date or timestamp."),
102
+ timestampLte: text("Return trades at or before this date or timestamp."),
103
+ ...paging,
104
+ }, ["timestamp", "timestampGte", "timestampLte", ...pagingOptional]),
105
+ outputSchema: listOutput("The historical trades returned by Massive."),
106
+ }),
107
+ readAction({
108
+ name: "get_last_stock_trade",
109
+ description: "Get the latest available trade for a stock ticker.",
110
+ inputSchema: input("Input parameters for retrieving the latest stock trade.", { ticker }),
111
+ outputSchema: resultOutput("The latest stock trade returned by Massive."),
112
+ }),
113
+ readAction({
114
+ name: "list_quotes",
115
+ description: "List historical quotes for a stock or options ticker.",
116
+ inputSchema: input("Input parameters for listing historical quotes.", {
117
+ ticker,
118
+ timestamp: text("Filter by an exact date, nanosecond timestamp, or RFC 3339 timestamp."),
119
+ timestampGte: text("Return quotes at or after this date or timestamp."),
120
+ timestampLte: text("Return quotes at or before this date or timestamp."),
121
+ ...paging,
122
+ }, ["timestamp", "timestampGte", "timestampLte", ...pagingOptional]),
123
+ outputSchema: listOutput("The historical quotes returned by Massive."),
124
+ }),
125
+ readAction({
126
+ name: "get_last_stock_quote",
127
+ description: "Get the latest national best bid and offer for a stock ticker.",
128
+ inputSchema: input("Input parameters for retrieving the latest stock quote.", { ticker }),
129
+ outputSchema: resultOutput("The latest stock quote returned by Massive."),
130
+ }),
131
+ readAction({
132
+ name: "list_market_holidays",
133
+ description: "List upcoming market holidays and their trading hours.",
134
+ inputSchema: input("The input payload for listing upcoming market holidays.", {}),
135
+ outputSchema: listOutput("The upcoming market holidays returned by Massive."),
136
+ }),
137
+ readAction({
138
+ name: "list_condition_codes",
139
+ description: "List trade and quote condition codes known by Massive.",
140
+ inputSchema: input("Input parameters for listing condition codes.", {
141
+ assetClass: text("Filter by asset class, such as stocks or options."),
142
+ dataType: s.stringEnum("Filter conditions by market data type.", ["trade", "quote"]),
143
+ id: s.integer("Filter by the Massive condition identifier."),
144
+ sipMapping: text("Filter by a Securities Information Processor mapping."),
145
+ }, ["assetClass", "dataType", "id", "sipMapping"]),
146
+ outputSchema: listOutput("The condition codes returned by Massive."),
147
+ }),
148
+ readAction({
149
+ name: "list_ticker_news",
150
+ description: "List recent financial news and sentiment associated with tickers.",
151
+ inputSchema: input("Input parameters for listing ticker news.", {
152
+ ticker,
153
+ publishedUtcGte: text("Return articles published at or after this RFC 3339 timestamp."),
154
+ publishedUtcLte: text("Return articles published at or before this RFC 3339 timestamp."),
155
+ ...paging,
156
+ }, ["ticker", "publishedUtcGte", "publishedUtcLte", ...pagingOptional]),
157
+ outputSchema: listOutput("The news articles returned by Massive."),
158
+ }),
159
+ readAction({
160
+ name: "list_dividends",
161
+ description: "List current-version stock dividend events and adjustment factors.",
162
+ inputSchema: input("Input parameters for listing stock dividends.", {
163
+ ticker,
164
+ exDividendDate: date("Filter by an exact ex-dividend date."),
165
+ exDividendDateGte: date("Return dividends with an ex-dividend date on or after this date."),
166
+ exDividendDateLte: date("Return dividends with an ex-dividend date on or before this date."),
167
+ ...paging,
168
+ }, ["ticker", "exDividendDate", "exDividendDateGte", "exDividendDateLte", ...pagingOptional]),
169
+ outputSchema: listOutput("The stock dividend events returned by Massive."),
170
+ }),
171
+ readAction({
172
+ name: "list_splits",
173
+ description: "List current-version stock split events and adjustment factors.",
174
+ inputSchema: input("Input parameters for listing stock splits.", {
175
+ ticker,
176
+ executionDate: date("Filter by an exact split execution date."),
177
+ executionDateGte: date("Return splits executed on or after this date."),
178
+ executionDateLte: date("Return splits executed on or before this date."),
179
+ ...paging,
180
+ }, ["ticker", "executionDate", "executionDateGte", "executionDateLte", ...pagingOptional]),
181
+ outputSchema: listOutput("The stock split events returned by Massive."),
182
+ }),
183
+ ...["balance_sheets", "income_statements", "cash_flow_statements", "financial_ratios"].map((name) => readAction({
184
+ name: `list_${name}`,
185
+ description: `List company ${name.split("_").join(" ")} from Massive.`,
186
+ inputSchema: input(`Input parameters for listing company ${name.split("_").join(" ")}.`, {
187
+ tickers: tickerArray("Filter by one or more stock tickers."),
188
+ cik: text("Filter by Central Index Key."),
189
+ timeframe: s.stringEnum("Filter by reporting timeframe.", ["quarterly", "annual", "trailing_twelve_months"]),
190
+ fiscalYear: s.integer("Filter by fiscal year."),
191
+ fiscalQuarter: s.integer("Filter by fiscal quarter.", { minimum: 1, maximum: 4 }),
192
+ periodEnd: date("Filter by an exact reporting period end date."),
193
+ periodEndGte: date("Return periods ending on or after this date."),
194
+ periodEndLte: date("Return periods ending on or before this date."),
195
+ filingDateGte: date("Return statements filed on or after this date."),
196
+ filingDateLte: date("Return statements filed on or before this date."),
197
+ ...paging,
198
+ }, [
199
+ "tickers",
200
+ "cik",
201
+ "timeframe",
202
+ "fiscalYear",
203
+ "fiscalQuarter",
204
+ "periodEnd",
205
+ "periodEndGte",
206
+ "periodEndLte",
207
+ "filingDateGte",
208
+ "filingDateLte",
209
+ ...pagingOptional,
210
+ ]),
211
+ outputSchema: listOutput(`The company ${name.split("_").join(" ")} returned by Massive.`),
212
+ })),
213
+ readAction({
214
+ name: "list_short_interest",
215
+ description: "List reported short interest for U.S. stocks.",
216
+ inputSchema: input("Input parameters for listing short interest.", {
217
+ ticker,
218
+ settlementDate: date("Filter by settlement date."),
219
+ settlementDateGte: date("Return records settled on or after this date."),
220
+ settlementDateLte: date("Return records settled on or before this date."),
221
+ ...paging,
222
+ }, ["ticker", "settlementDate", "settlementDateGte", "settlementDateLte", ...pagingOptional]),
223
+ outputSchema: listOutput("The short-interest records returned by Massive."),
224
+ }),
225
+ readAction({
226
+ name: "list_short_volume",
227
+ description: "List daily short-sale volume for U.S. stocks.",
228
+ inputSchema: input("Input parameters for listing short volume.", { ticker, ...dateRange, ...paging }, [
229
+ "ticker",
230
+ "date",
231
+ "dateGte",
232
+ "dateLte",
233
+ ...pagingOptional,
234
+ ]),
235
+ outputSchema: listOutput("The short-volume records returned by Massive."),
236
+ }),
237
+ readAction({
238
+ name: "list_option_contracts",
239
+ description: "List Massive options contracts with contract-specific filters.",
240
+ inputSchema: input("Input parameters for listing options contracts.", {
241
+ underlyingTicker: ticker,
242
+ contractType: s.stringEnum("Filter by options contract type.", ["call", "put"]),
243
+ expirationDate: date("Filter by an exact expiration date."),
244
+ expirationDateGte: date("Return contracts expiring on or after this date."),
245
+ expirationDateLte: date("Return contracts expiring on or before this date."),
246
+ strikePrice: s.number("Filter by an exact strike price."),
247
+ expired: s.boolean("Whether to include expired contracts."),
248
+ asOf: date("Return contracts valid as of this date."),
249
+ ...paging,
250
+ }, [
251
+ "underlyingTicker",
252
+ "contractType",
253
+ "expirationDate",
254
+ "expirationDateGte",
255
+ "expirationDateLte",
256
+ "strikePrice",
257
+ "expired",
258
+ "asOf",
259
+ ...pagingOptional,
260
+ ]),
261
+ outputSchema: listOutput("The options contracts returned by Massive."),
262
+ }),
263
+ readAction({
264
+ name: "get_option_contract",
265
+ description: "Get reference details for one Massive options contract.",
266
+ inputSchema: input("Input parameters for retrieving an options contract.", {
267
+ optionsTicker: text("The case-sensitive Massive options contract ticker."),
268
+ asOf: date("Return the contract definition valid as of this date."),
269
+ }, ["asOf"]),
270
+ outputSchema: resultOutput("The options contract details returned by Massive."),
271
+ }),
272
+ readAction({
273
+ name: "get_option_chain_snapshot",
274
+ description: "Get an options chain with prices, Greeks, implied volatility, and open interest.",
275
+ inputSchema: input("Input parameters for retrieving an options chain snapshot.", {
276
+ underlyingTicker: ticker,
277
+ contractType: s.stringEnum("Filter by options contract type.", ["call", "put"]),
278
+ expirationDate: date("Filter by an exact expiration date."),
279
+ expirationDateGte: date("Return contracts expiring on or after this date."),
280
+ expirationDateLte: date("Return contracts expiring on or before this date."),
281
+ strikePrice: s.number("Filter by an exact strike price."),
282
+ strikePriceGte: s.number("Return contracts at or above this strike price."),
283
+ strikePriceLte: s.number("Return contracts at or below this strike price."),
284
+ ...paging,
285
+ }, [
286
+ "contractType",
287
+ "expirationDate",
288
+ "expirationDateGte",
289
+ "expirationDateLte",
290
+ "strikePrice",
291
+ "strikePriceGte",
292
+ "strikePriceLte",
293
+ ...pagingOptional,
294
+ ]),
295
+ outputSchema: listOutput("The options chain snapshots returned by Massive."),
296
+ }),
297
+ readAction({
298
+ name: "get_option_contract_snapshot",
299
+ description: "Get prices, Greeks, implied volatility, and open interest for one options contract.",
300
+ inputSchema: input("Input parameters for retrieving an options contract snapshot.", {
301
+ underlyingTicker: ticker,
302
+ optionsTicker: text("The case-sensitive Massive options contract ticker."),
303
+ }),
304
+ outputSchema: resultOutput("The options contract snapshot returned by Massive."),
305
+ }),
306
+ ...["treasury_yields", "inflation", "inflation_expectations", "labor_market", "funding_conditions"].map((name) => readAction({
307
+ name: `list_${name}`,
308
+ description: `List U.S. ${name.split("_").join(" ")} observations from Massive.`,
309
+ inputSchema: input(`Input parameters for listing ${name.split("_").join(" ")} observations.`, { ...dateRange, ...paging }, ["date", "dateGte", "dateLte", ...pagingOptional]),
310
+ outputSchema: listOutput(`The ${name.split("_").join(" ")} observations returned by Massive.`),
311
+ })),
312
+ ...["sma", "ema", "rsi"].map((name) => readAction({
313
+ name: `get_${name}`,
314
+ description: `Get the ${name.toUpperCase()} technical indicator for a Massive ticker.`,
315
+ inputSchema: input(`Input parameters for retrieving the ${name.toUpperCase()} indicator.`, {
316
+ ticker,
317
+ timespan: text("The aggregate timespan used to calculate the indicator."),
318
+ window: s.positiveInteger("The number of aggregate periods in the calculation window."),
319
+ adjusted: s.boolean("Whether the underlying aggregates should be split adjusted."),
320
+ expandUnderlying: s.boolean("Whether to include the underlying aggregate bars used by the indicator."),
321
+ seriesType: s.stringEnum("The aggregate price series used by the indicator.", [
322
+ "open",
323
+ "high",
324
+ "low",
325
+ "close",
326
+ ]),
327
+ timestamp: text("Filter by an exact date or millisecond timestamp."),
328
+ timestampGte: text("Return values at or after this date or timestamp."),
329
+ timestampLte: text("Return values at or before this date or timestamp."),
330
+ ...paging,
331
+ }, [
332
+ "timespan",
333
+ "window",
334
+ "adjusted",
335
+ "expandUnderlying",
336
+ "seriesType",
337
+ "timestamp",
338
+ "timestampGte",
339
+ "timestampLte",
340
+ ...pagingOptional,
341
+ ]),
342
+ outputSchema: pagedResultOutput(`The ${name.toUpperCase()} values returned by Massive.`),
343
+ })),
344
+ readAction({
345
+ name: "get_macd",
346
+ description: "Get the MACD technical indicator for a Massive ticker.",
347
+ inputSchema: input("Input parameters for retrieving the MACD indicator.", {
348
+ ticker,
349
+ timespan: text("The aggregate timespan used to calculate MACD."),
350
+ shortWindow: s.positiveInteger("The short exponential moving-average window."),
351
+ longWindow: s.positiveInteger("The long exponential moving-average window."),
352
+ signalWindow: s.positiveInteger("The signal-line exponential moving-average window."),
353
+ adjusted: s.boolean("Whether the underlying aggregates should be split adjusted."),
354
+ expandUnderlying: s.boolean("Whether to include the underlying aggregate bars used by MACD."),
355
+ seriesType: s.stringEnum("The aggregate price series used by MACD.", ["open", "high", "low", "close"]),
356
+ timestamp: text("Filter by an exact date or millisecond timestamp."),
357
+ timestampGte: text("Return values at or after this date or timestamp."),
358
+ timestampLte: text("Return values at or before this date or timestamp."),
359
+ ...paging,
360
+ }, [
361
+ "timespan",
362
+ "shortWindow",
363
+ "longWindow",
364
+ "signalWindow",
365
+ "adjusted",
366
+ "expandUnderlying",
367
+ "seriesType",
368
+ "timestamp",
369
+ "timestampGte",
370
+ "timestampLte",
371
+ ...pagingOptional,
372
+ ]),
373
+ outputSchema: pagedResultOutput("The MACD values returned by Massive."),
374
+ }),
375
+ ];
@@ -0,0 +1,16 @@
1
+ type RequestMassiveJson = (input: {
2
+ path: string;
3
+ apiKey: string;
4
+ query: Record<string, string | number | boolean | undefined>;
5
+ fetcher: typeof fetch;
6
+ phase: "execute";
7
+ }) => Promise<unknown>;
8
+ export declare const expandedPolygonIoActionNames: ReadonlySet<string>;
9
+ export declare function executeExpandedPolygonIoAction(input: {
10
+ actionName: string;
11
+ input: Record<string, unknown>;
12
+ fetcher: typeof fetch;
13
+ apiKey: string;
14
+ requestJson: RequestMassiveJson;
15
+ }): Promise<unknown>;
16
+ export {};
@@ -0,0 +1,277 @@
1
+ import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, optionalStringArray, } from "../../core/cast.js";
2
+ import { providerInputError, requiredInputString } from "../provider-runtime.js";
3
+ import { expandedPolygonIoActions } from "./expanded-actions.js";
4
+ export const expandedPolygonIoActionNames = new Set(expandedPolygonIoActions.map((action) => action.name));
5
+ export async function executeExpandedPolygonIoAction(input) {
6
+ const request = resolveRequest(input.actionName, input.input);
7
+ const payload = await input.requestJson({
8
+ ...request,
9
+ apiKey: input.apiKey,
10
+ fetcher: input.fetcher,
11
+ phase: "execute",
12
+ });
13
+ if (request.mode === "list") {
14
+ return normalizeList(payload);
15
+ }
16
+ if (request.mode === "pagedResult") {
17
+ return { ...normalizeResult(payload), page: normalizePage(optionalRecord(payload)) };
18
+ }
19
+ return normalizeResult(payload);
20
+ }
21
+ function resolveRequest(actionName, input) {
22
+ const ticker = () => encodeURIComponent(requiredInputString(input.ticker, "ticker"));
23
+ const underlyingTicker = () => encodeURIComponent(requiredInputString(input.underlyingTicker, "underlyingTicker"));
24
+ const optionsTicker = () => encodeURIComponent(requiredInputString(input.optionsTicker, "optionsTicker"));
25
+ const list = (path, query = {}) => ({
26
+ path,
27
+ query,
28
+ mode: "list",
29
+ });
30
+ const result = (path, query = {}) => ({
31
+ path,
32
+ query,
33
+ mode: "result",
34
+ });
35
+ const pagedResult = (path, query = {}) => ({
36
+ path,
37
+ query,
38
+ mode: "pagedResult",
39
+ });
40
+ switch (actionName) {
41
+ case "list_related_tickers":
42
+ return list(`/v1/related-companies/${ticker()}`);
43
+ case "get_daily_open_close":
44
+ return result(`/v1/open-close/${ticker()}/${encodeURIComponent(requiredInputString(input.date, "date"))}`, {
45
+ adjusted: optionalBoolean(input.adjusted),
46
+ });
47
+ case "get_stock_snapshot":
48
+ return result(`/v2/snapshot/locale/us/markets/stocks/tickers/${ticker()}`);
49
+ case "get_unified_snapshot":
50
+ return list("/v3/snapshot", {
51
+ "ticker.any_of": readStringArray(input.tickers)?.join(","),
52
+ type: readText(input.assetType),
53
+ ...pagingQuery(input),
54
+ });
55
+ case "get_stock_movers":
56
+ return list(`/v2/snapshot/locale/us/markets/stocks/${encodeURIComponent(requiredInputString(input.direction, "direction"))}`);
57
+ case "list_trades":
58
+ return list(`/v3/trades/${ticker()}`, timestampQuery(input));
59
+ case "get_last_stock_trade":
60
+ return result(`/v2/last/trade/${ticker()}`);
61
+ case "list_quotes":
62
+ return list(`/v3/quotes/${ticker()}`, timestampQuery(input));
63
+ case "get_last_stock_quote":
64
+ return result(`/v2/last/nbbo/${ticker()}`);
65
+ case "list_market_holidays":
66
+ return list("/v1/marketstatus/upcoming");
67
+ case "list_condition_codes":
68
+ return list("/v3/reference/conditions", compactObject({
69
+ asset_class: readText(input.assetClass),
70
+ data_type: readText(input.dataType),
71
+ id: readIntegerString(input.id),
72
+ sip_mapping: readText(input.sipMapping),
73
+ }));
74
+ case "list_ticker_news":
75
+ return list("/v2/reference/news", compactObject({
76
+ ticker: readText(input.ticker),
77
+ "published_utc.gte": readText(input.publishedUtcGte),
78
+ "published_utc.lte": readText(input.publishedUtcLte),
79
+ ...pagingQuery(input),
80
+ }));
81
+ case "list_dividends":
82
+ return list("/stocks/v1/dividends", compactObject({
83
+ ticker: readText(input.ticker),
84
+ ex_dividend_date: readText(input.exDividendDate),
85
+ "ex_dividend_date.gte": readText(input.exDividendDateGte),
86
+ "ex_dividend_date.lte": readText(input.exDividendDateLte),
87
+ ...pagingQuery(input),
88
+ }));
89
+ case "list_splits":
90
+ return list("/stocks/v1/splits", compactObject({
91
+ ticker: readText(input.ticker),
92
+ execution_date: readText(input.executionDate),
93
+ "execution_date.gte": readText(input.executionDateGte),
94
+ "execution_date.lte": readText(input.executionDateLte),
95
+ ...pagingQuery(input),
96
+ }));
97
+ case "list_balance_sheets":
98
+ return list("/stocks/financials/v1/balance-sheets", financialsQuery(input));
99
+ case "list_income_statements":
100
+ return list("/stocks/financials/v1/income-statements", financialsQuery(input));
101
+ case "list_cash_flow_statements":
102
+ return list("/stocks/financials/v1/cash-flow-statements", financialsQuery(input));
103
+ case "list_financial_ratios":
104
+ return list("/stocks/financials/v1/ratios", financialsQuery(input));
105
+ case "list_short_interest":
106
+ return list("/stocks/v1/short-interest", compactObject({
107
+ ticker: readText(input.ticker),
108
+ settlement_date: readText(input.settlementDate),
109
+ "settlement_date.gte": readText(input.settlementDateGte),
110
+ "settlement_date.lte": readText(input.settlementDateLte),
111
+ ...pagingQuery(input),
112
+ }));
113
+ case "list_short_volume":
114
+ return list("/stocks/v1/short-volume", datedListQuery(input));
115
+ case "list_option_contracts":
116
+ return list("/v3/reference/options/contracts", optionFilters(input));
117
+ case "get_option_contract":
118
+ return result(`/v3/reference/options/contracts/${optionsTicker()}`, {
119
+ as_of: readText(input.asOf),
120
+ });
121
+ case "get_option_chain_snapshot":
122
+ return list(`/v3/snapshot/options/${underlyingTicker()}`, optionFilters(input));
123
+ case "get_option_contract_snapshot":
124
+ return result(`/v3/snapshot/options/${underlyingTicker()}/${optionsTicker()}`);
125
+ case "list_treasury_yields":
126
+ return list("/fed/v1/treasury-yields", datedListQuery(input));
127
+ case "list_inflation":
128
+ return list("/fed/v1/inflation", datedListQuery(input));
129
+ case "list_inflation_expectations":
130
+ return list("/fed/v1/inflation-expectations", datedListQuery(input));
131
+ case "list_labor_market":
132
+ return list("/fed/v1/labor-market", datedListQuery(input));
133
+ case "list_funding_conditions":
134
+ return list("/fed/v1/funding-conditions", datedListQuery(input));
135
+ case "get_sma":
136
+ return pagedResult(`/v1/indicators/sma/${ticker()}`, indicatorQuery(input));
137
+ case "get_ema":
138
+ return pagedResult(`/v1/indicators/ema/${ticker()}`, indicatorQuery(input));
139
+ case "get_rsi":
140
+ return pagedResult(`/v1/indicators/rsi/${ticker()}`, indicatorQuery(input));
141
+ case "get_macd":
142
+ return pagedResult(`/v1/indicators/macd/${ticker()}`, compactObject({
143
+ ...indicatorQuery(input),
144
+ short_window: readIntegerString(input.shortWindow),
145
+ long_window: readIntegerString(input.longWindow),
146
+ signal_window: readIntegerString(input.signalWindow),
147
+ }));
148
+ }
149
+ throw providerInputError(`Unknown polygon_io action: ${actionName}`);
150
+ }
151
+ function pagingQuery(input) {
152
+ return compactObject({
153
+ order: readText(input.order),
154
+ limit: readIntegerString(input.limit),
155
+ sort: readText(input.sort),
156
+ cursor: readText(input.cursor),
157
+ });
158
+ }
159
+ function timestampQuery(input) {
160
+ return compactObject({
161
+ timestamp: readText(input.timestamp),
162
+ "timestamp.gte": readText(input.timestampGte),
163
+ "timestamp.lte": readText(input.timestampLte),
164
+ ...pagingQuery(input),
165
+ });
166
+ }
167
+ function datedListQuery(input) {
168
+ return compactObject({
169
+ ticker: readText(input.ticker),
170
+ date: readText(input.date),
171
+ "date.gte": readText(input.dateGte),
172
+ "date.lte": readText(input.dateLte),
173
+ ...pagingQuery(input),
174
+ });
175
+ }
176
+ function financialsQuery(input) {
177
+ return compactObject({
178
+ tickers: readStringArray(input.tickers)?.join(","),
179
+ cik: readText(input.cik),
180
+ timeframe: readText(input.timeframe),
181
+ fiscal_year: readIntegerString(input.fiscalYear),
182
+ fiscal_quarter: readIntegerString(input.fiscalQuarter),
183
+ period_end: readText(input.periodEnd),
184
+ "period_end.gte": readText(input.periodEndGte),
185
+ "period_end.lte": readText(input.periodEndLte),
186
+ "filing_date.gte": readText(input.filingDateGte),
187
+ "filing_date.lte": readText(input.filingDateLte),
188
+ ...pagingQuery(input),
189
+ });
190
+ }
191
+ function optionFilters(input) {
192
+ return compactObject({
193
+ underlying_ticker: readText(input.underlyingTicker),
194
+ contract_type: readText(input.contractType),
195
+ expiration_date: readText(input.expirationDate),
196
+ "expiration_date.gte": readText(input.expirationDateGte),
197
+ "expiration_date.lte": readText(input.expirationDateLte),
198
+ strike_price: readNumberString(input.strikePrice),
199
+ "strike_price.gte": readNumberString(input.strikePriceGte),
200
+ "strike_price.lte": readNumberString(input.strikePriceLte),
201
+ expired: optionalBoolean(input.expired),
202
+ as_of: readText(input.asOf),
203
+ ...pagingQuery(input),
204
+ });
205
+ }
206
+ function indicatorQuery(input) {
207
+ return compactObject({
208
+ timespan: readText(input.timespan),
209
+ window: readIntegerString(input.window),
210
+ adjusted: optionalBoolean(input.adjusted),
211
+ expand_underlying: optionalBoolean(input.expandUnderlying),
212
+ series_type: readText(input.seriesType),
213
+ timestamp: readText(input.timestamp),
214
+ "timestamp.gte": readText(input.timestampGte),
215
+ "timestamp.lte": readText(input.timestampLte),
216
+ ...pagingQuery(input),
217
+ });
218
+ }
219
+ function normalizeList(payload) {
220
+ const response = optionalRecord(payload);
221
+ const results = Array.isArray(payload)
222
+ ? payload
223
+ : Array.isArray(response?.results)
224
+ ? response.results
225
+ : Array.isArray(response?.tickers)
226
+ ? response.tickers
227
+ : [];
228
+ return {
229
+ meta: normalizeMeta(response),
230
+ results: results
231
+ .map((item) => optionalRecord(item))
232
+ .filter((item) => item !== undefined),
233
+ page: normalizePage(response),
234
+ };
235
+ }
236
+ function normalizeResult(payload) {
237
+ const response = optionalRecord(payload);
238
+ return {
239
+ meta: normalizeMeta(response),
240
+ result: response?.results ?? payload,
241
+ };
242
+ }
243
+ function normalizeMeta(response) {
244
+ return {
245
+ status: optionalString(response?.status) ?? null,
246
+ requestId: optionalString(response?.request_id) ?? null,
247
+ count: optionalInteger(response?.count) ?? null,
248
+ };
249
+ }
250
+ function normalizePage(response) {
251
+ const nextUrl = optionalString(response?.next_url) ?? null;
252
+ return { nextUrl, nextCursor: nextUrl ? readCursor(nextUrl) : null };
253
+ }
254
+ function readCursor(nextUrl) {
255
+ try {
256
+ return new URL(nextUrl).searchParams.get("cursor");
257
+ }
258
+ catch {
259
+ return null;
260
+ }
261
+ }
262
+ function readText(value) {
263
+ return optionalString(value);
264
+ }
265
+ function readIntegerString(value) {
266
+ const number = optionalInteger(value);
267
+ return number === undefined ? undefined : String(number);
268
+ }
269
+ function readNumberString(value) {
270
+ const number = optionalNumber(value);
271
+ return number === undefined ? undefined : String(number);
272
+ }
273
+ function readStringArray(value) {
274
+ return optionalStringArray(value)
275
+ ?.map((item) => item.trim())
276
+ .filter(Boolean);
277
+ }