This is page 2 of 4. Use http://codebase.md/calvernaz/alphavantage?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .bumpversion.cfg
├── .github
│ ├── FUNDING.yml
│ └── workflows
│ └── publish.yml
├── .gitignore
├── .python-version
├── CONTRIBUTING.md
├── deploy
│ └── aws-stateless-mcp-lambda
│ ├── .aws-sam
│ │ └── build.toml
│ ├── deploy.sh
│ ├── lambda_function.py
│ ├── README.md
│ ├── requirements.txt
│ └── template.yaml
├── DEVELOPMENT.md
├── Dockerfile
├── LICENSE
├── pyproject.toml
├── pytest.ini
├── README.md
├── scripts
│ └── publish.py
├── smithery.yaml
├── src
│ ├── alphavantage_mcp_client
│ │ └── client.py
│ └── alphavantage_mcp_server
│ ├── __init__.py
│ ├── __main__.py
│ ├── api.py
│ ├── oauth.py
│ ├── prompts.py
│ ├── response_utils.py
│ ├── server.py
│ ├── telemetry_bootstrap.py
│ ├── telemetry_instrument.py
│ └── tools.py
├── tests
│ ├── test_api.py
│ ├── test_http_mcp_client.py
│ ├── test_http_transport.py
│ ├── test_integration.py
│ ├── test_stdio_transport.py
│ └── test_telemetry.py
└── uv.lock
```
# Files
--------------------------------------------------------------------------------
/src/alphavantage_mcp_server/prompts.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | AlphaVantage MCP Server Prompts Definition
3 |
4 | This module contains the prompt definitions and schemas for the AlphaVantage MCP server.
5 | """
6 |
7 | import mcp.types as types
8 | from mcp.types import Prompt
9 |
10 | from .tools import AlphavantageTools
11 |
12 |
13 | def prompts_definitions() -> list[Prompt]:
14 | return [
15 | types.Prompt(
16 | name=AlphavantageTools.STOCK_QUOTE.value,
17 | description="Fetch the latest price and volume information for a ticker of your choice",
18 | arguments=[
19 | types.PromptArgument(
20 | name="symbol",
21 | description="Stock symbol",
22 | required=True,
23 | ),
24 | types.PromptArgument(
25 | name="datatype",
26 | description="Data type (json or csv). Default is json",
27 | required=False,
28 | ),
29 | ],
30 | ),
31 | types.Prompt(
32 | name=AlphavantageTools.TIME_SERIES_INTRADAY.value,
33 | description="Fetch current and 20+ years of historical intraday OHLCV time series of the equity specified",
34 | arguments=[
35 | types.PromptArgument(
36 | name="symbol", description="Stock symbol", required=True
37 | ),
38 | types.PromptArgument(
39 | name="interval", description="Interval", required=True
40 | ),
41 | ],
42 | ),
43 | types.Prompt(
44 | name=AlphavantageTools.TIME_SERIES_DAILY.value,
45 | description="Fetch a time series daily",
46 | arguments=[
47 | types.PromptArgument(
48 | name="symbol", description="Stock symbol", required=True
49 | )
50 | ],
51 | ),
52 | types.Prompt(
53 | name=AlphavantageTools.TIME_SERIES_DAILY_ADJUSTED.value,
54 | description="Fetch a time series daily adjusted",
55 | arguments=[
56 | types.PromptArgument(
57 | name="symbol", description="Stock symbol", required=True
58 | ),
59 | types.PromptArgument(
60 | name="outputsize",
61 | description="Output size (compact or full)",
62 | required=False,
63 | ),
64 | types.PromptArgument(
65 | name="datatype",
66 | description="Data type (json or csv). Default is json",
67 | required=False,
68 | ),
69 | ],
70 | ),
71 | types.Prompt(
72 | name=AlphavantageTools.TIME_SERIES_WEEKLY.value,
73 | description="Fetch a time series weekly",
74 | arguments=[
75 | types.PromptArgument(
76 | name="symbol", description="Stock symbol", required=True
77 | )
78 | ],
79 | ),
80 | types.Prompt(
81 | name=AlphavantageTools.TIME_SERIES_WEEKLY_ADJUSTED.value,
82 | description="Fetch a time series weekly adjusted",
83 | arguments=[
84 | types.PromptArgument(
85 | name="symbol", description="Stock symbol", required=True
86 | )
87 | ],
88 | ),
89 | types.Prompt(
90 | name=AlphavantageTools.TIME_SERIES_MONTHLY.value,
91 | description="Fetch a time series monthly",
92 | arguments=[
93 | types.PromptArgument(
94 | name="symbol", description="Stock symbol", required=True
95 | )
96 | ],
97 | ),
98 | types.Prompt(
99 | name=AlphavantageTools.TIME_SERIES_MONTHLY_ADJUSTED.value,
100 | description="Fetch a time series monthly adjusted",
101 | arguments=[
102 | types.PromptArgument(
103 | name="symbol", description="Stock symbol", required=True
104 | )
105 | ],
106 | ),
107 | types.Prompt(
108 | name=AlphavantageTools.REALTIME_BULK_QUOTES.value,
109 | description="Fetch real time bulk quotes",
110 | arguments=[
111 | types.PromptArgument(
112 | name="symbols", description="Stock symbols", required=True
113 | )
114 | ],
115 | ),
116 | types.Prompt(
117 | name=AlphavantageTools.SYMBOL_SEARCH.value,
118 | description="Search endpoint",
119 | arguments=[
120 | types.PromptArgument(
121 | name="keywords", description="Keywords", required=True
122 | )
123 | ],
124 | ),
125 | types.Prompt(
126 | name=AlphavantageTools.MARKET_STATUS.value,
127 | description="Fetch market status",
128 | arguments=[],
129 | ),
130 | types.Prompt(
131 | name=AlphavantageTools.REALTIME_OPTIONS.value,
132 | description="Fetch realtime options",
133 | arguments=[
134 | types.PromptArgument(
135 | name="symbol", description="Stock symbol", required=True
136 | )
137 | ],
138 | ),
139 | types.Prompt(
140 | name=AlphavantageTools.HISTORICAL_OPTIONS.value,
141 | description="Fetch the full historical options chain for a specific symbol on a specific date, covering 15+ years of history",
142 | arguments=[
143 | types.PromptArgument(
144 | name="symbol", description="Stock symbol", required=True
145 | ),
146 | types.PromptArgument(
147 | name="date",
148 | description="Trading session date (YYYY-MM-DD). or example, date=2017-11-15",
149 | required=True,
150 | ),
151 | types.PromptArgument(
152 | name="datatype",
153 | description="Data type (json or csv). Default is json",
154 | required=True,
155 | ),
156 | ],
157 | ),
158 | types.Prompt(
159 | name=AlphavantageTools.NEWS_SENTIMENT.value,
160 | description="Fetch news sentiment",
161 | arguments=[
162 | types.PromptArgument(
163 | name="tickers", description="Stock tickers", required=False
164 | ),
165 | types.PromptArgument(
166 | name="options",
167 | description="The news topics of your choice",
168 | required=False,
169 | ),
170 | types.PromptArgument(
171 | name="time_from",
172 | description="The time range of the news articles you are targeting, time_from=20220410T0130.",
173 | required=False,
174 | ),
175 | types.PromptArgument(
176 | name="time_to",
177 | description="The time range of the news articles you are targeting. time_to=20230410T0130",
178 | required=False,
179 | ),
180 | types.PromptArgument(
181 | name="sort",
182 | description="Sort by (latest or oldest). Default sort=LATEST",
183 | required=False,
184 | ),
185 | types.PromptArgument(
186 | name="limit",
187 | description="Limit the number of news articles returned. Default=50",
188 | required=False,
189 | ),
190 | ],
191 | ),
192 | types.Prompt(
193 | name=AlphavantageTools.TOP_GAINERS_LOSERS.value,
194 | description="Fetch top gainers and losers",
195 | arguments=[],
196 | ),
197 | types.Prompt(
198 | name=AlphavantageTools.INSIDER_TRANSACTIONS.value,
199 | description="Fetch insider transactions",
200 | arguments=[
201 | types.PromptArgument(
202 | name="symbol", description="Stock symbol", required=True
203 | )
204 | ],
205 | ),
206 | types.Prompt(
207 | name=AlphavantageTools.ANALYTICS_FIXED_WINDOW.value,
208 | description="Fetch analytics fixed window",
209 | arguments=[
210 | types.PromptArgument(
211 | name="symbols", description="Stock symbols", required=True
212 | )
213 | ],
214 | ),
215 | types.Prompt(
216 | name=AlphavantageTools.ANALYTICS_SLIDING_WINDOW.value,
217 | description="Fetch analytics sliding window",
218 | arguments=[
219 | types.PromptArgument(
220 | name="symbols", description="Stock symbols", required=True
221 | )
222 | ],
223 | ),
224 | types.Prompt(
225 | name=AlphavantageTools.COMPANY_OVERVIEW.value,
226 | description="Fetch the company information, financial ratios, and other key metrics for the equity specified",
227 | arguments=[
228 | types.PromptArgument(
229 | name="symbol", description="Stock symbol", required=True
230 | )
231 | ],
232 | ),
233 | types.Prompt(
234 | name=AlphavantageTools.ETF_PROFILE.value,
235 | description="Fetch ETF profile",
236 | arguments=[
237 | types.PromptArgument(
238 | name="symbol", description="Stock symbol", required=True
239 | )
240 | ],
241 | ),
242 | types.Prompt(
243 | name=AlphavantageTools.COMPANY_DIVIDENDS.value,
244 | description="Fetch company dividends",
245 | arguments=[
246 | types.PromptArgument(
247 | name="symbol", description="Stock symbol", required=True
248 | )
249 | ],
250 | ),
251 | types.Prompt(
252 | name=AlphavantageTools.COMPANY_SPLITS.value,
253 | description="Fetch company splits",
254 | arguments=[
255 | types.PromptArgument(
256 | name="symbol", description="Stock symbol", required=True
257 | )
258 | ],
259 | ),
260 | types.Prompt(
261 | name=AlphavantageTools.INCOME_STATEMENT.value,
262 | description="Fetch company income statement",
263 | arguments=[
264 | types.PromptArgument(
265 | name="symbol", description="Stock symbol", required=True
266 | )
267 | ],
268 | ),
269 | types.Prompt(
270 | name=AlphavantageTools.BALANCE_SHEET.value,
271 | description="Fetch company balance sheet",
272 | arguments=[
273 | types.PromptArgument(
274 | name="symbol", description="Stock symbol", required=True
275 | )
276 | ],
277 | ),
278 | types.Prompt(
279 | name=AlphavantageTools.CASH_FLOW.value,
280 | description="Fetch company cash flow",
281 | arguments=[
282 | types.PromptArgument(
283 | name="symbol", description="Stock symbol", required=True
284 | )
285 | ],
286 | ),
287 | types.Prompt(
288 | name=AlphavantageTools.LISTING_STATUS.value,
289 | description="Fetch listing status",
290 | arguments=[],
291 | ),
292 | types.Prompt(
293 | name=AlphavantageTools.COMPANY_EARNINGS.value,
294 | description="This API returns the annual and quarterly earnings (EPS) for the company of interest.",
295 | arguments=[
296 | types.PromptArgument(
297 | name="symbol", description="Stock symbol", required=True
298 | )
299 | ],
300 | ),
301 | types.Prompt(
302 | name=AlphavantageTools.EARNINGS_CALENDAR.value,
303 | description="Fetch company earnings calendar",
304 | arguments=[],
305 | ),
306 | types.Prompt(
307 | name=AlphavantageTools.EARNINGS_CALL_TRANSCRIPT.value,
308 | description="Fetch earnings call transcript",
309 | arguments=[
310 | types.PromptArgument(
311 | name="symbol", description="Stock symbol", required=True
312 | ),
313 | types.PromptArgument(
314 | name="quarter",
315 | description="Fiscal quarket in the format YYYYQM",
316 | required=True,
317 | ),
318 | ],
319 | ),
320 | types.Prompt(
321 | name=AlphavantageTools.IPO_CALENDAR.value,
322 | description="Fetch IPO calendar",
323 | arguments=[],
324 | ),
325 | types.Prompt(
326 | name=AlphavantageTools.EXCHANGE_RATE.value,
327 | description="Fetch exchange rate",
328 | arguments=[
329 | types.PromptArgument(
330 | name="from_currency",
331 | description="The currency you would like to get the exchange rate for.",
332 | required=True,
333 | ),
334 | types.PromptArgument(
335 | name="to_currency",
336 | description="The destination currency for the exchange rate",
337 | required=True,
338 | ),
339 | ],
340 | ),
341 | types.Prompt(
342 | name=AlphavantageTools.FX_INTRADAY.value,
343 | description="Fetch FX intraday",
344 | arguments=[
345 | types.PromptArgument(
346 | name="from_symbol", description="From symbol", required=True
347 | )
348 | ],
349 | ),
350 | types.Prompt(
351 | name=AlphavantageTools.FX_DAILY.value,
352 | description="Fetch FX daily",
353 | arguments=[
354 | types.PromptArgument(
355 | name="from_symbol", description="From symbol", required=True
356 | )
357 | ],
358 | ),
359 | types.Prompt(
360 | name=AlphavantageTools.FX_WEEKLY.value,
361 | description="Fetch FX weekly",
362 | arguments=[
363 | types.PromptArgument(
364 | name="from_symbol", description="From symbol", required=True
365 | )
366 | ],
367 | ),
368 | types.Prompt(
369 | name=AlphavantageTools.FX_MONTHLY.value,
370 | description="Fetch FX monthly",
371 | arguments=[
372 | types.PromptArgument(
373 | name="from_symbol", description="From symbol", required=True
374 | )
375 | ],
376 | ),
377 | types.Prompt(
378 | name=AlphavantageTools.CRYPTO_INTRADAY.value,
379 | description="Fetch intraday time series (timestamp, open, high, low, close, volume) of the cryptocurrency specified",
380 | arguments=[
381 | types.PromptArgument(
382 | name="symbol",
383 | description="The digital/crypto currency",
384 | required=True,
385 | ),
386 | types.PromptArgument(
387 | name="market",
388 | description="The exchange market of your choice",
389 | required=True,
390 | ),
391 | types.PromptArgument(
392 | name="interval",
393 | description="Time interval between two consecutive data points in the time series. "
394 | "The following values are supported: 1min, 5min, 15min, 30min, 60min",
395 | required=True,
396 | ),
397 | types.PromptArgument(
398 | name="datatype",
399 | description="Data type (json or csv). Default is json",
400 | required=False,
401 | ),
402 | types.PromptArgument(
403 | name="outputsize",
404 | description="Output size (compact or full)",
405 | required=False,
406 | ),
407 | ],
408 | ),
409 | types.Prompt(
410 | name=AlphavantageTools.DIGITAL_CURRENCY_DAILY.value,
411 | description="Fetch digital currency daily",
412 | arguments=[
413 | types.PromptArgument(
414 | name="symbol", description="Digital currency symbol", required=True
415 | )
416 | ],
417 | ),
418 | types.Prompt(
419 | name=AlphavantageTools.DIGITAL_CURRENCY_WEEKLY.value,
420 | description="Fetch digital currency weekly",
421 | arguments=[
422 | types.PromptArgument(
423 | name="symbol", description="Digital currency symbol", required=True
424 | )
425 | ],
426 | ),
427 | types.Prompt(
428 | name=AlphavantageTools.DIGITAL_CURRENCY_MONTHLY.value,
429 | description="Fetch digital currency monthly",
430 | arguments=[
431 | types.PromptArgument(
432 | name="symbol", description="Digital currency symbol", required=True
433 | )
434 | ],
435 | ),
436 | types.Prompt(
437 | name=AlphavantageTools.WTI_CRUDE_OIL.value,
438 | description="Fetch WTI crude oil",
439 | arguments=[],
440 | ),
441 | types.Prompt(
442 | name=AlphavantageTools.BRENT_CRUDE_OIL.value,
443 | description="Fetch Brent crude oil",
444 | arguments=[],
445 | ),
446 | types.Prompt(
447 | name=AlphavantageTools.NATURAL_GAS.value,
448 | description="Fetch natural gas",
449 | arguments=[],
450 | ),
451 | types.Prompt(
452 | name=AlphavantageTools.COPPER.value,
453 | description="Fetch copper",
454 | arguments=[],
455 | ),
456 | types.Prompt(
457 | name=AlphavantageTools.ALUMINUM.value,
458 | description="Fetch aluminum",
459 | arguments=[],
460 | ),
461 | types.Prompt(
462 | name=AlphavantageTools.WHEAT.value, description="Fetch wheat", arguments=[]
463 | ),
464 | types.Prompt(
465 | name=AlphavantageTools.CORN.value, description="Fetch corn", arguments=[]
466 | ),
467 | types.Prompt(
468 | name=AlphavantageTools.COTTON.value,
469 | description="Fetch cotton",
470 | arguments=[],
471 | ),
472 | types.Prompt(
473 | name=AlphavantageTools.SUGAR.value, description="Fetch sugar", arguments=[]
474 | ),
475 | types.Prompt(
476 | name=AlphavantageTools.COFFEE.value,
477 | description="Fetch coffee",
478 | arguments=[],
479 | ),
480 | types.Prompt(
481 | name=AlphavantageTools.ALL_COMMODITIES.value,
482 | description="Fetch all commodities",
483 | arguments=[],
484 | ),
485 | types.Prompt(
486 | name=AlphavantageTools.REAL_GDP.value,
487 | description="Fetch real GDP",
488 | arguments=[],
489 | ),
490 | types.Prompt(
491 | name=AlphavantageTools.REAL_GDP_PER_CAPITA.value,
492 | description="Fetch real GDP per capita",
493 | arguments=[],
494 | ),
495 | types.Prompt(
496 | name=AlphavantageTools.TREASURY_YIELD.value,
497 | description="Fetch treasury yield",
498 | arguments=[],
499 | ),
500 | types.Prompt(
501 | name=AlphavantageTools.FEDERAL_FUNDS_RATE.value,
502 | description="Fetch federal funds rate",
503 | arguments=[],
504 | ),
505 | types.Prompt(
506 | name=AlphavantageTools.CPI.value,
507 | description="Fetch consumer price index",
508 | arguments=[],
509 | ),
510 | types.Prompt(
511 | name=AlphavantageTools.INFLATION.value,
512 | description="Fetch inflation",
513 | arguments=[],
514 | ),
515 | types.Prompt(
516 | name=AlphavantageTools.RETAIL_SALES.value,
517 | description="Fetch retail sales",
518 | arguments=[],
519 | ),
520 | types.Prompt(
521 | name=AlphavantageTools.DURABLES.value,
522 | description="Fetch durables",
523 | arguments=[],
524 | ),
525 | types.Prompt(
526 | name=AlphavantageTools.UNEMPLOYMENT.value,
527 | description="Fetch unemployment",
528 | arguments=[],
529 | ),
530 | types.Prompt(
531 | name=AlphavantageTools.NONFARM_PAYROLL.value,
532 | description="Fetch nonfarm payroll",
533 | arguments=[],
534 | ),
535 | types.Prompt(
536 | name=AlphavantageTools.SMA.value,
537 | description="Fetch the simple moving average (SMA) values",
538 | arguments=[
539 | types.PromptArgument(
540 | name="symbol", description="Stock symbol", required=True
541 | ),
542 | types.PromptArgument(
543 | name="interval",
544 | description="Time interval between two consecutive data points in the time series. "
545 | "The following values are supported: 1min, 5min, 15min, 30min, 60min, daily, weekly, monthly",
546 | required=True,
547 | ),
548 | types.PromptArgument(
549 | name="month",
550 | description="ONLY applicable to intraday intervals (1min, 5min, 15min, 30min, and 60min) for the equity markets. For example, month=2009-01",
551 | required=False,
552 | ),
553 | types.PromptArgument(
554 | name="time_period",
555 | description="Number of data points used to calculate each moving average value. E.g, time_period=60",
556 | required=True,
557 | ),
558 | types.PromptArgument(
559 | name="series_type",
560 | description="The desired price type in the time series. Four types are supported: close, open, high, low",
561 | required=True,
562 | ),
563 | types.PromptArgument(
564 | name="datatype",
565 | description="Data type (json or csv). Default is json",
566 | required=False,
567 | ),
568 | types.PromptArgument(
569 | name="max_data_points",
570 | description="Maximum number of data points to fetch. Default is 100",
571 | required=False,
572 | ),
573 | ],
574 | ),
575 | types.Prompt(
576 | name=AlphavantageTools.EMA.value,
577 | description="Fetch the exponential moving average (EMA) values",
578 | arguments=[
579 | types.PromptArgument(
580 | name="symbol", description="Stock symbol", required=True
581 | ),
582 | types.PromptArgument(
583 | name="interval",
584 | description="Time interval between two consecutive data points in the time series. "
585 | "The following values are supported: 1min, 5min, 15min, 30min, 60min, daily, weekly, monthly",
586 | required=True,
587 | ),
588 | types.PromptArgument(
589 | name="month",
590 | description="ONLY applicable to intraday intervals (1min, 5min, 15min, 30min, and 60min) for the equity markets. For example, month=2009-01",
591 | required=False,
592 | ),
593 | types.PromptArgument(
594 | name="time_period",
595 | description="Number of data points used to calculate each moving average value. E.g, time_period=60",
596 | required=True,
597 | ),
598 | types.PromptArgument(
599 | name="series_type",
600 | description="The desired price type in the time series. Four types are supported: close, open, high, low",
601 | required=True,
602 | ),
603 | types.PromptArgument(
604 | name="datatype",
605 | description="Data type (json or csv). Default is json",
606 | required=False,
607 | ),
608 | ],
609 | ),
610 | types.Prompt(
611 | name=AlphavantageTools.WMA.value,
612 | description="Fetch weighted moving average",
613 | arguments=[
614 | types.PromptArgument(
615 | name="symbol", description="Stock symbol", required=True
616 | ),
617 | types.PromptArgument(
618 | name="interval", description="Interval", required=True
619 | ),
620 | types.PromptArgument(
621 | name="time_period", description="Time period", required=True
622 | ),
623 | types.PromptArgument(
624 | name="series_type", description="Series type", required=True
625 | ),
626 | ],
627 | ),
628 | types.Prompt(
629 | name=AlphavantageTools.DEMA.value,
630 | description="Fetch double exponential moving average",
631 | arguments=[
632 | types.PromptArgument(
633 | name="symbol", description="Stock symbol", required=True
634 | ),
635 | types.PromptArgument(
636 | name="interval", description="Interval", required=True
637 | ),
638 | types.PromptArgument(
639 | name="time_period", description="Time period", required=True
640 | ),
641 | types.PromptArgument(
642 | name="series_type", description="Series type", required=True
643 | ),
644 | ],
645 | ),
646 | types.Prompt(
647 | name=AlphavantageTools.TRIMA.value,
648 | description="Fetch triangular moving average",
649 | arguments=[
650 | types.PromptArgument(
651 | name="symbol", description="Stock symbol", required=True
652 | ),
653 | types.PromptArgument(
654 | name="interval", description="Interval", required=True
655 | ),
656 | types.PromptArgument(
657 | name="time_period", description="Time period", required=True
658 | ),
659 | types.PromptArgument(
660 | name="series_type", description="Series type", required=True
661 | ),
662 | ],
663 | ),
664 | types.Prompt(
665 | name=AlphavantageTools.KAMA.value,
666 | description="Fetch Kaufman adaptive moving average",
667 | arguments=[
668 | types.PromptArgument(
669 | name="symbol", description="Stock symbol", required=True
670 | ),
671 | types.PromptArgument(
672 | name="interval", description="Interval", required=True
673 | ),
674 | types.PromptArgument(
675 | name="time_period", description="Time period", required=True
676 | ),
677 | types.PromptArgument(
678 | name="series_type", description="Series type", required=True
679 | ),
680 | ],
681 | ),
682 | types.Prompt(
683 | name=AlphavantageTools.MAMA.value,
684 | description="Fetch MESA adaptive moving average",
685 | arguments=[
686 | types.PromptArgument(
687 | name="symbol", description="Stock symbol", required=True
688 | ),
689 | types.PromptArgument(
690 | name="interval", description="Interval", required=True
691 | ),
692 | types.PromptArgument(
693 | name="series_type", description="Series type", required=True
694 | ),
695 | types.PromptArgument(
696 | name="fastlimit", description="Fast limit", required=True
697 | ),
698 | types.PromptArgument(
699 | name="slowlimit", description="Slow limit", required=True
700 | ),
701 | ],
702 | ),
703 | types.Prompt(
704 | name=AlphavantageTools.T3.value,
705 | description="Fetch triple exponential moving average",
706 | arguments=[
707 | types.PromptArgument(
708 | name="symbol", description="Stock symbol", required=True
709 | ),
710 | types.PromptArgument(
711 | name="interval", description="Interval", required=True
712 | ),
713 | types.PromptArgument(
714 | name="time_period", description="Time period", required=True
715 | ),
716 | types.PromptArgument(
717 | name="series_type", description="Series type", required=True
718 | ),
719 | ],
720 | ),
721 | types.Prompt(
722 | name=AlphavantageTools.MACD.value,
723 | description="Fetch moving average convergence divergence",
724 | arguments=[
725 | types.PromptArgument(
726 | name="symbol", description="Stock symbol", required=True
727 | ),
728 | types.PromptArgument(
729 | name="interval", description="Interval", required=True
730 | ),
731 | types.PromptArgument(
732 | name="series_type", description="Series type", required=True
733 | ),
734 | ],
735 | ),
736 | types.Prompt(
737 | name=AlphavantageTools.MACDEXT.value,
738 | description="Fetch moving average convergence divergence extended",
739 | arguments=[
740 | types.PromptArgument(
741 | name="symbol", description="Stock symbol", required=True
742 | ),
743 | types.PromptArgument(
744 | name="interval", description="Interval", required=True
745 | ),
746 | types.PromptArgument(
747 | name="series_type", description="Series type", required=True
748 | ),
749 | ],
750 | ),
751 | types.Prompt(
752 | name=AlphavantageTools.STOCH.value,
753 | description="Fetch stochastic oscillator",
754 | arguments=[
755 | types.PromptArgument(
756 | name="symbol", description="Stock symbol", required=True
757 | ),
758 | types.PromptArgument(
759 | name="interval", description="Interval", required=True
760 | ),
761 | ],
762 | ),
763 | types.Prompt(
764 | name=AlphavantageTools.STOCHF.value,
765 | description="Fetch stochastic oscillator fast",
766 | arguments=[
767 | types.PromptArgument(
768 | name="symbol", description="Stock symbol", required=True
769 | ),
770 | types.PromptArgument(
771 | name="interval", description="Interval", required=True
772 | ),
773 | ],
774 | ),
775 | types.Prompt(
776 | name=AlphavantageTools.RSI.value,
777 | description="Fetch relative strength index",
778 | arguments=[
779 | types.PromptArgument(
780 | name="symbol", description="Stock symbol", required=True
781 | ),
782 | types.PromptArgument(
783 | name="interval", description="Interval", required=True
784 | ),
785 | types.PromptArgument(
786 | name="time_period", description="Time period", required=True
787 | ),
788 | types.PromptArgument(
789 | name="series_type", description="Series type", required=True
790 | ),
791 | ],
792 | ),
793 | types.Prompt(
794 | name=AlphavantageTools.STOCHRSI.value,
795 | description="Fetch stochastic relative strength index",
796 | arguments=[
797 | types.PromptArgument(
798 | name="symbol", description="Stock symbol", required=True
799 | ),
800 | types.PromptArgument(
801 | name="interval", description="Interval", required=True
802 | ),
803 | types.PromptArgument(
804 | name="time_period", description="Time period", required=True
805 | ),
806 | types.PromptArgument(
807 | name="series_type", description="Series type", required=True
808 | ),
809 | ],
810 | ),
811 | types.Prompt(
812 | name=AlphavantageTools.WILLR.value,
813 | description="Fetch Williams' percent range",
814 | arguments=[
815 | types.PromptArgument(
816 | name="symbol", description="Stock symbol", required=True
817 | ),
818 | types.PromptArgument(
819 | name="interval", description="Interval", required=True
820 | ),
821 | types.PromptArgument(
822 | name="time_period", description="Time period", required=True
823 | ),
824 | ],
825 | ),
826 | types.Prompt(
827 | name=AlphavantageTools.ADX.value,
828 | description="Fetch average directional movement index",
829 | arguments=[
830 | types.PromptArgument(
831 | name="symbol", description="Stock symbol", required=True
832 | ),
833 | types.PromptArgument(
834 | name="interval", description="Interval", required=True
835 | ),
836 | types.PromptArgument(
837 | name="time_period", description="Time period", required=True
838 | ),
839 | ],
840 | ),
841 | types.Prompt(
842 | name=AlphavantageTools.ADXR.value,
843 | description="Fetch average directional movement index rating",
844 | arguments=[
845 | types.PromptArgument(
846 | name="symbol", description="Stock symbol", required=True
847 | ),
848 | types.PromptArgument(
849 | name="interval", description="Interval", required=True
850 | ),
851 | types.PromptArgument(
852 | name="time_period", description="Time period", required=True
853 | ),
854 | ],
855 | ),
856 | types.Prompt(
857 | name=AlphavantageTools.APO.value,
858 | description="Fetch absolute price oscillator",
859 | arguments=[
860 | types.PromptArgument(
861 | name="symbol", description="Stock symbol", required=True
862 | ),
863 | types.PromptArgument(
864 | name="interval", description="Interval", required=True
865 | ),
866 | types.PromptArgument(
867 | name="series_type", description="Series type", required=True
868 | ),
869 | types.PromptArgument(
870 | name="fastperiod", description="Fast period", required=True
871 | ),
872 | types.PromptArgument(
873 | name="slowperiod", description="Slow period", required=True
874 | ),
875 | ],
876 | ),
877 | types.Prompt(
878 | name=AlphavantageTools.PPO.value,
879 | description="Fetch percentage price oscillator",
880 | arguments=[
881 | types.PromptArgument(
882 | name="symbol", description="Stock symbol", required=True
883 | ),
884 | types.PromptArgument(
885 | name="interval", description="Interval", required=True
886 | ),
887 | types.PromptArgument(
888 | name="series_type", description="Series type", required=True
889 | ),
890 | types.PromptArgument(
891 | name="fastperiod", description="Fast period", required=True
892 | ),
893 | types.PromptArgument(
894 | name="slowperiod", description="Slow period", required=True
895 | ),
896 | ],
897 | ),
898 | types.Prompt(
899 | name=AlphavantageTools.MOM.value,
900 | description="Fetch momentum",
901 | arguments=[
902 | types.PromptArgument(
903 | name="symbol", description="Stock symbol", required=True
904 | ),
905 | types.PromptArgument(
906 | name="interval", description="Interval", required=True
907 | ),
908 | types.PromptArgument(
909 | name="time_period", description="Time period", required=True
910 | ),
911 | types.PromptArgument(
912 | name="series_type", description="Series type", required=True
913 | ),
914 | ],
915 | ),
916 | types.Prompt(
917 | name=AlphavantageTools.BOP.value,
918 | description="Fetch balance of power",
919 | arguments=[
920 | types.PromptArgument(
921 | name="symbol", description="Stock symbol", required=True
922 | ),
923 | types.PromptArgument(
924 | name="interval", description="Interval", required=True
925 | ),
926 | ],
927 | ),
928 | types.Prompt(
929 | name=AlphavantageTools.CCI.value,
930 | description="Fetch commodity channel index",
931 | arguments=[
932 | types.PromptArgument(
933 | name="symbol", description="Stock symbol", required=True
934 | ),
935 | types.PromptArgument(
936 | name="interval", description="Interval", required=True
937 | ),
938 | types.PromptArgument(
939 | name="time_period", description="Time period", required=True
940 | ),
941 | ],
942 | ),
943 | types.Prompt(
944 | name=AlphavantageTools.CMO.value,
945 | description="Fetch Chande momentum oscillator",
946 | arguments=[
947 | types.PromptArgument(
948 | name="symbol", description="Stock symbol", required=True
949 | ),
950 | types.PromptArgument(
951 | name="interval", description="Interval", required=True
952 | ),
953 | types.PromptArgument(
954 | name="time_period", description="Time period", required=True
955 | ),
956 | ],
957 | ),
958 | types.Prompt(
959 | name=AlphavantageTools.ROC.value,
960 | description="Fetch rate of change",
961 | arguments=[
962 | types.PromptArgument(
963 | name="symbol", description="Stock symbol", required=True
964 | ),
965 | types.PromptArgument(
966 | name="interval", description="Interval", required=True
967 | ),
968 | types.PromptArgument(
969 | name="time_period", description="Time period", required=True
970 | ),
971 | types.PromptArgument(
972 | name="series_type",
973 | description="The desired price type in the time series. Four types are supported: close, open, high, low",
974 | required=True,
975 | ),
976 | ],
977 | ),
978 | types.Prompt(
979 | name=AlphavantageTools.ROCR.value,
980 | description="Fetch rate of change ratio",
981 | arguments=[
982 | types.PromptArgument(
983 | name="symbol", description="Stock symbol", required=True
984 | ),
985 | types.PromptArgument(
986 | name="interval", description="Interval", required=True
987 | ),
988 | types.PromptArgument(
989 | name="time_period", description="Time period", required=True
990 | ),
991 | ],
992 | ),
993 | types.Prompt(
994 | name=AlphavantageTools.AROON.value,
995 | description="Fetch Aroon",
996 | arguments=[
997 | types.PromptArgument(
998 | name="symbol", description="Stock symbol", required=True
999 | ),
1000 | types.PromptArgument(
1001 | name="interval", description="Interval", required=True
1002 | ),
1003 | types.PromptArgument(
1004 | name="time_period", description="Time period", required=True
1005 | ),
1006 | ],
1007 | ),
1008 | types.Prompt(
1009 | name=AlphavantageTools.AROONOSC.value,
1010 | description="Fetch aroon oscillator",
1011 | arguments=[
1012 | types.PromptArgument(
1013 | name="symbol", description="Stock symbol", required=True
1014 | ),
1015 | types.PromptArgument(
1016 | name="interval", description="Interval", required=True
1017 | ),
1018 | types.PromptArgument(
1019 | name="time_period", description="Time period", required=True
1020 | ),
1021 | ],
1022 | ),
1023 | types.Prompt(
1024 | name=AlphavantageTools.MFI.value,
1025 | description="Fetch money flow index",
1026 | arguments=[
1027 | types.PromptArgument(
1028 | name="symbol", description="Stock symbol", required=True
1029 | ),
1030 | types.PromptArgument(
1031 | name="interval", description="Interval", required=True
1032 | ),
1033 | types.PromptArgument(
1034 | name="time_period", description="Time period", required=True
1035 | ),
1036 | ],
1037 | ),
1038 | types.Prompt(
1039 | name=AlphavantageTools.TRIX.value,
1040 | description="Fetch triple exponential average",
1041 | arguments=[
1042 | types.PromptArgument(
1043 | name="symbol", description="Stock symbol", required=True
1044 | ),
1045 | types.PromptArgument(
1046 | name="interval", description="Interval", required=True
1047 | ),
1048 | types.PromptArgument(
1049 | name="time_period", description="Time period", required=True
1050 | ),
1051 | types.PromptArgument(
1052 | name="series_type",
1053 | description="The desired price type in the time series. Four types are supported: close, open, high, low",
1054 | required=True,
1055 | ),
1056 | ],
1057 | ),
1058 | types.Prompt(
1059 | name=AlphavantageTools.ULTOSC.value,
1060 | description="Fetch ultimate oscillator",
1061 | arguments=[
1062 | types.PromptArgument(
1063 | name="symbol", description="Stock symbol", required=True
1064 | ),
1065 | types.PromptArgument(
1066 | name="interval", description="Interval", required=True
1067 | ),
1068 | types.PromptArgument(
1069 | name="timeperiod1", description="Time period 1", required=True
1070 | ),
1071 | types.PromptArgument(
1072 | name="timeperiod2", description="Time period 2", required=True
1073 | ),
1074 | types.PromptArgument(
1075 | name="timeperiod3", description="Time period 3", required=True
1076 | ),
1077 | ],
1078 | ),
1079 | types.Prompt(
1080 | name=AlphavantageTools.DX.value,
1081 | description="Fetch directional movement index",
1082 | arguments=[
1083 | types.PromptArgument(
1084 | name="symbol", description="Stock symbol", required=True
1085 | ),
1086 | types.PromptArgument(
1087 | name="interval", description="Interval", required=True
1088 | ),
1089 | types.PromptArgument(
1090 | name="time_period", description="Time period", required=True
1091 | ),
1092 | ],
1093 | ),
1094 | types.Prompt(
1095 | name=AlphavantageTools.MINUS_DI.value,
1096 | description="Fetch minus directional indicator",
1097 | arguments=[
1098 | types.PromptArgument(
1099 | name="symbol", description="Stock symbol", required=True
1100 | ),
1101 | types.PromptArgument(
1102 | name="interval", description="Interval", required=True
1103 | ),
1104 | types.PromptArgument(
1105 | name="time_period", description="Time period", required=True
1106 | ),
1107 | ],
1108 | ),
1109 | types.Prompt(
1110 | name=AlphavantageTools.PLUS_DI.value,
1111 | description="Fetch plus directional indicator",
1112 | arguments=[
1113 | types.PromptArgument(
1114 | name="symbol", description="Stock symbol", required=True
1115 | ),
1116 | types.PromptArgument(
1117 | name="interval", description="Interval", required=True
1118 | ),
1119 | types.PromptArgument(
1120 | name="time_period", description="Time period", required=True
1121 | ),
1122 | ],
1123 | ),
1124 | types.Prompt(
1125 | name=AlphavantageTools.MINUS_DM.value,
1126 | description="Fetch minus directional movement",
1127 | arguments=[
1128 | types.PromptArgument(
1129 | name="symbol", description="Stock symbol", required=True
1130 | ),
1131 | types.PromptArgument(
1132 | name="interval", description="Interval", required=True
1133 | ),
1134 | types.PromptArgument(
1135 | name="time_period", description="Time period", required=True
1136 | ),
1137 | ],
1138 | ),
1139 | types.Prompt(
1140 | name=AlphavantageTools.PLUS_DM.value,
1141 | description="Fetch plus directional movement",
1142 | arguments=[
1143 | types.PromptArgument(
1144 | name="symbol", description="Stock symbol", required=True
1145 | ),
1146 | types.PromptArgument(
1147 | name="interval", description="Interval", required=True
1148 | ),
1149 | types.PromptArgument(
1150 | name="time_period", description="Time period", required=True
1151 | ),
1152 | ],
1153 | ),
1154 | types.Prompt(
1155 | name=AlphavantageTools.BBANDS.value,
1156 | description="Fetch Bollinger bands",
1157 | arguments=[
1158 | types.PromptArgument(
1159 | name="symbol", description="Stock symbol", required=True
1160 | ),
1161 | types.PromptArgument(
1162 | name="interval", description="Interval", required=True
1163 | ),
1164 | types.PromptArgument(
1165 | name="time_period", description="Time period", required=True
1166 | ),
1167 | types.PromptArgument(
1168 | name="series_type", description="Series type", required=True
1169 | ),
1170 | types.PromptArgument(
1171 | name="nbdevup", description="Nbdevup", required=True
1172 | ),
1173 | types.PromptArgument(
1174 | name="nbdevdn", description="Nbdevdn", required=True
1175 | ),
1176 | ],
1177 | ),
1178 | types.Prompt(
1179 | name=AlphavantageTools.MIDPOINT.value,
1180 | description="Fetch midpoint",
1181 | arguments=[
1182 | types.PromptArgument(
1183 | name="symbol", description="Stock symbol", required=True
1184 | ),
1185 | types.PromptArgument(
1186 | name="interval", description="Interval", required=True
1187 | ),
1188 | types.PromptArgument(
1189 | name="time_period", description="Time period", required=True
1190 | ),
1191 | types.PromptArgument(
1192 | name="series_type", description="Series type", required=True
1193 | ),
1194 | ],
1195 | ),
1196 | types.Prompt(
1197 | name=AlphavantageTools.MIDPRICE.value,
1198 | description="Fetch midprice",
1199 | arguments=[
1200 | types.PromptArgument(
1201 | name="symbol", description="Stock symbol", required=True
1202 | ),
1203 | types.PromptArgument(
1204 | name="interval", description="Interval", required=True
1205 | ),
1206 | types.PromptArgument(
1207 | name="time_period", description="Time period", required=True
1208 | ),
1209 | ],
1210 | ),
1211 | types.Prompt(
1212 | name=AlphavantageTools.SAR.value,
1213 | description="Fetch parabolic SAR",
1214 | arguments=[
1215 | types.PromptArgument(
1216 | name="symbol", description="Stock symbol", required=True
1217 | ),
1218 | types.PromptArgument(
1219 | name="interval", description="Interval", required=True
1220 | ),
1221 | ],
1222 | ),
1223 | types.Prompt(
1224 | name=AlphavantageTools.TRANGE.value,
1225 | description="Fetch true range",
1226 | arguments=[
1227 | types.PromptArgument(
1228 | name="symbol", description="Stock symbol", required=True
1229 | ),
1230 | types.PromptArgument(
1231 | name="interval", description="Interval", required=True
1232 | ),
1233 | ],
1234 | ),
1235 | types.Prompt(
1236 | name=AlphavantageTools.ATR.value,
1237 | description="Fetch average true range",
1238 | arguments=[
1239 | types.PromptArgument(
1240 | name="symbol", description="Stock symbol", required=True
1241 | ),
1242 | types.PromptArgument(
1243 | name="interval", description="Interval", required=True
1244 | ),
1245 | types.PromptArgument(
1246 | name="time_period", description="Time period", required=True
1247 | ),
1248 | ],
1249 | ),
1250 | types.Prompt(
1251 | name=AlphavantageTools.NATR.value,
1252 | description="Fetch normalized average true range",
1253 | arguments=[
1254 | types.PromptArgument(
1255 | name="symbol", description="Stock symbol", required=True
1256 | ),
1257 | types.PromptArgument(
1258 | name="interval", description="Interval", required=True
1259 | ),
1260 | types.PromptArgument(
1261 | name="time_period", description="Time period", required=True
1262 | ),
1263 | ],
1264 | ),
1265 | types.Prompt(
1266 | name=AlphavantageTools.AD.value,
1267 | description="Fetch Chaikin A/D line",
1268 | arguments=[
1269 | types.PromptArgument(
1270 | name="symbol", description="Stock symbol", required=True
1271 | ),
1272 | types.PromptArgument(
1273 | name="interval", description="Interval", required=True
1274 | ),
1275 | ],
1276 | ),
1277 | types.Prompt(
1278 | name=AlphavantageTools.ADOSC.value,
1279 | description="Fetch Chaikin A/D oscillator",
1280 | arguments=[
1281 | types.PromptArgument(
1282 | name="symbol", description="Stock symbol", required=True
1283 | ),
1284 | types.PromptArgument(
1285 | name="interval", description="Interval", required=True
1286 | ),
1287 | types.PromptArgument(
1288 | name="fastperiod", description="Fast period", required=True
1289 | ),
1290 | types.PromptArgument(
1291 | name="slowperiod", description="Slow period", required=True
1292 | ),
1293 | ],
1294 | ),
1295 | types.Prompt(
1296 | name=AlphavantageTools.OBV.value,
1297 | description="Fetch on balance volume",
1298 | arguments=[
1299 | types.PromptArgument(
1300 | name="symbol", description="Stock symbol", required=True
1301 | ),
1302 | types.PromptArgument(
1303 | name="interval", description="Interval", required=True
1304 | ),
1305 | ],
1306 | ),
1307 | types.Prompt(
1308 | name=AlphavantageTools.HT_TRENDLINE.value,
1309 | description="Fetch Hilbert transform - trendline",
1310 | arguments=[
1311 | types.PromptArgument(
1312 | name="symbol", description="Stock symbol", required=True
1313 | ),
1314 | types.PromptArgument(
1315 | name="interval", description="Interval", required=True
1316 | ),
1317 | types.PromptArgument(
1318 | name="series_type", description="Series type", required=True
1319 | ),
1320 | ],
1321 | ),
1322 | types.Prompt(
1323 | name=AlphavantageTools.HT_SINE.value,
1324 | description="Fetch Hilbert transform - sine wave",
1325 | arguments=[
1326 | types.PromptArgument(
1327 | name="symbol", description="Stock symbol", required=True
1328 | ),
1329 | types.PromptArgument(
1330 | name="interval", description="Interval", required=True
1331 | ),
1332 | types.PromptArgument(
1333 | name="series_type", description="Series type", required=True
1334 | ),
1335 | ],
1336 | ),
1337 | types.Prompt(
1338 | name=AlphavantageTools.HT_TRENDMODE.value,
1339 | description="Fetch Hilbert transform - trend mode",
1340 | arguments=[
1341 | types.PromptArgument(
1342 | name="symbol", description="Stock symbol", required=True
1343 | ),
1344 | types.PromptArgument(
1345 | name="interval", description="Interval", required=True
1346 | ),
1347 | ],
1348 | ),
1349 | types.Prompt(
1350 | name=AlphavantageTools.HT_DCPERIOD.value,
1351 | description="Fetch Hilbert transform - dominant cycle period",
1352 | arguments=[
1353 | types.PromptArgument(
1354 | name="symbol", description="Stock symbol", required=True
1355 | ),
1356 | types.PromptArgument(
1357 | name="interval", description="Interval", required=True
1358 | ),
1359 | ],
1360 | ),
1361 | types.Prompt(
1362 | name=AlphavantageTools.HT_DCPHASE.value,
1363 | description="Fetch Hilbert transform - dominant cycle phase",
1364 | arguments=[
1365 | types.PromptArgument(
1366 | name="symbol", description="Stock symbol", required=True
1367 | ),
1368 | types.PromptArgument(
1369 | name="interval", description="Interval", required=True
1370 | ),
1371 | ],
1372 | ),
1373 | types.Prompt(
1374 | name=AlphavantageTools.HT_PHASOR.value,
1375 | description="Fetch Hilbert transform - phasor components",
1376 | arguments=[
1377 | types.PromptArgument(
1378 | name="symbol", description="Stock symbol", required=True
1379 | ),
1380 | types.PromptArgument(
1381 | name="interval", description="Interval", required=True
1382 | ),
1383 | ],
1384 | ),
1385 | ]
1386 |
```
--------------------------------------------------------------------------------
/src/alphavantage_mcp_server/tools.py:
--------------------------------------------------------------------------------
```python
1 | """
2 | AlphaVantage MCP Server Tools Definition
3 |
4 | This module contains the tool definitions and schemas for the AlphaVantage MCP server.
5 | """
6 |
7 | import mcp.types as types
8 | from enum import Enum
9 |
10 |
11 | class AlphavantageTools(str, Enum):
12 | """Enumeration of all available AlphaVantage tools."""
13 |
14 | TIME_SERIES_INTRADAY = "time_series_intraday"
15 | TIME_SERIES_DAILY = "time_series_daily"
16 | TIME_SERIES_DAILY_ADJUSTED = "time_series_daily_adjusted"
17 | TIME_SERIES_WEEKLY = "time_series_weekly"
18 | TIME_SERIES_WEEKLY_ADJUSTED = "time_series_weekly_adjusted"
19 | TIME_SERIES_MONTHLY = "time_series_monthly"
20 | TIME_SERIES_MONTHLY_ADJUSTED = "time_series_monthly_adjusted"
21 | STOCK_QUOTE = "stock_quote"
22 | REALTIME_BULK_QUOTES = "realtime_bulk_quotes"
23 | SYMBOL_SEARCH = "symbol_search"
24 | MARKET_STATUS = "market_status"
25 | REALTIME_OPTIONS = "realtime_options"
26 | HISTORICAL_OPTIONS = "historical_options"
27 | NEWS_SENTIMENT = "news_sentiment"
28 | TOP_GAINERS_LOSERS = "top_gainers_losers"
29 | INSIDER_TRANSACTIONS = "insider_transactions"
30 | ANALYTICS_FIXED_WINDOW = "analytics_fixed_window"
31 | ANALYTICS_SLIDING_WINDOW = "analytics_sliding_window"
32 | COMPANY_OVERVIEW = "company_overview"
33 | ETF_PROFILE = "etf_profile"
34 | COMPANY_DIVIDENDS = "company_dividends"
35 | COMPANY_SPLITS = "company_dividends"
36 | INCOME_STATEMENT = "income_statement"
37 | BALANCE_SHEET = "balance_sheet"
38 | CASH_FLOW = "cash_flow"
39 | COMPANY_EARNINGS = "company_earnings"
40 | LISTING_STATUS = "listing_status"
41 | EARNINGS_CALENDAR = "earnings_calendar"
42 | EARNINGS_CALL_TRANSCRIPT = "earnings_call_transcript"
43 | IPO_CALENDAR = "ipo_calendar"
44 | EXCHANGE_RATE = "exchange_rate"
45 | FX_INTRADAY = "fx_intraday"
46 | FX_DAILY = "fx_daily"
47 | FX_WEEKLY = "fx_weekly"
48 | FX_MONTHLY = "fx_monthly"
49 | CRYPTO_INTRADAY = "crypto_intraday"
50 | DIGITAL_CURRENCY_DAILY = "digital_currency_daily"
51 | DIGITAL_CURRENCY_WEEKLY = "digital_currency_weekly"
52 | DIGITAL_CURRENCY_MONTHLY = "digital_currency_monthly"
53 | WTI_CRUDE_OIL = "wti_crude_oil"
54 | BRENT_CRUDE_OIL = "brent_crude_oil"
55 | NATURAL_GAS = "natural_gas"
56 | COPPER = "copper"
57 | ALUMINUM = "aluminum"
58 | WHEAT = "wheat"
59 | CORN = "corn"
60 | COTTON = "cotton"
61 | SUGAR = "sugar"
62 | COFFEE = "coffee"
63 | ALL_COMMODITIES = "all_commodities"
64 | REAL_GDP = "real_gdp"
65 | REAL_GDP_PER_CAPITA = "real_gdp_per_capita"
66 | TREASURY_YIELD = "treasury_yield"
67 | FEDERAL_FUNDS_RATE = "federal_funds_rate"
68 | CPI = "cpi"
69 | INFLATION = "inflation"
70 | RETAIL_SALES = "retail_sales"
71 | DURABLES = "durables"
72 | UNEMPLOYMENT = "unemployment"
73 | NONFARM_PAYROLL = "nonfarm_payroll"
74 | SMA = "sma"
75 | EMA = "ema"
76 | WMA = "wma"
77 | DEMA = "dema"
78 | TEMA = "tema"
79 | TRIMA = "trima"
80 | KAMA = "kama"
81 | MAMA = "mama"
82 | VWAP = "vwap"
83 | T3 = "t3"
84 | MACD = "macd"
85 | MACDEXT = "macdext"
86 | STOCH = "stoch"
87 | STOCHF = "stochf"
88 | RSI = "rsi"
89 | STOCHRSI = "stochrsi"
90 | WILLR = "willr"
91 | ADX = "adx"
92 | ADXR = "adxr"
93 | APO = "apo"
94 | PPO = "ppo"
95 | MOM = "mom"
96 | BOP = "bop"
97 | CCI = "cci"
98 | CMO = "cmo"
99 | ROC = "roc"
100 | ROCR = "rocr"
101 | AROON = "aroon"
102 | AROONOSC = "aroonosc"
103 | MFI = "mfi"
104 | TRIX = "trix"
105 | ULTOSC = "ultosc"
106 | DX = "dx"
107 | MINUS_DI = "minus_di"
108 | PLUS_DI = "plus_di"
109 | MINUS_DM = "minus_dm"
110 | PLUS_DM = "plus_dm"
111 | BBANDS = "bbands"
112 | MIDPOINT = "midpoint"
113 | MIDPRICE = "midprice"
114 | SAR = "sar"
115 | TRANGE = "trange"
116 | ATR = "atr"
117 | NATR = "natr"
118 | AD = "ad"
119 | ADOSC = "adosc"
120 | OBV = "obv"
121 | HT_TRENDLINE = "ht_trendline"
122 | HT_SINE = "ht_sine"
123 | HT_TRENDMODE = "ht_trendmode"
124 | HT_DCPERIOD = "ht_dcperiod"
125 | HT_DCPHASE = "ht_dcphase"
126 | HT_PHASOR = "ht_phasor"
127 |
128 |
129 | def tools_definitions():
130 | return [
131 | types.Tool(
132 | name=AlphavantageTools.STOCK_QUOTE.value,
133 | description="Fetch a stock quote",
134 | inputSchema={
135 | "type": "object",
136 | "properties": {
137 | "symbol": {"type": "string"},
138 | "datatype": {"type": "string"},
139 | },
140 | "required": ["symbol"],
141 | },
142 | ),
143 | types.Tool(
144 | name=AlphavantageTools.TIME_SERIES_INTRADAY.value,
145 | description="Fetch a time series intraday",
146 | inputSchema={
147 | "type": "object",
148 | "properties": {
149 | "symbol": {"type": "string"},
150 | "interval": {"type": "string"},
151 | "adjusted": {"type": "boolean"},
152 | "outputsize": {"type": "string"},
153 | "datatype": {"type": "string"},
154 | "monthly": {"type": "string"},
155 | },
156 | "required": ["symbol", "interval"],
157 | },
158 | ),
159 | types.Tool(
160 | name=AlphavantageTools.TIME_SERIES_DAILY.value,
161 | description="Fetch a time series daily",
162 | inputSchema={
163 | "type": "object",
164 | "properties": {
165 | "symbol": {"type": "string"},
166 | "outputsize": {"type": "string"},
167 | "datatype": {"type": "string"},
168 | },
169 | "required": ["symbol"],
170 | },
171 | ),
172 | types.Tool(
173 | name=AlphavantageTools.TIME_SERIES_DAILY_ADJUSTED.value,
174 | description="Fetch a time series daily adjusted",
175 | inputSchema={
176 | "type": "object",
177 | "properties": {
178 | "symbol": {"type": "string"},
179 | "outputsize": {"type": "string"},
180 | "datatype": {"type": "string"},
181 | },
182 | "required": ["symbol"],
183 | },
184 | ),
185 | types.Tool(
186 | name=AlphavantageTools.TIME_SERIES_WEEKLY.value,
187 | description="Fetch a time series weekly",
188 | inputSchema={
189 | "type": "object",
190 | "properties": {
191 | "symbol": {"type": "string"},
192 | "datatype": {"type": "string"},
193 | },
194 | "required": ["symbol"],
195 | },
196 | ),
197 | types.Tool(
198 | name=AlphavantageTools.TIME_SERIES_WEEKLY_ADJUSTED.value,
199 | description="Fetch a time series weekly adjusted",
200 | inputSchema={
201 | "type": "object",
202 | "properties": {
203 | "symbol": {"type": "string"},
204 | "datatype": {"type": "string"},
205 | },
206 | "required": ["symbol"],
207 | },
208 | ),
209 | types.Tool(
210 | name=AlphavantageTools.TIME_SERIES_MONTHLY.value,
211 | description="Fetch a time series monthly",
212 | inputSchema={
213 | "type": "object",
214 | "properties": {
215 | "symbol": {"type": "string"},
216 | "datatype": {"type": "string"},
217 | },
218 | "required": ["symbol"],
219 | },
220 | ),
221 | types.Tool(
222 | name=AlphavantageTools.TIME_SERIES_MONTHLY_ADJUSTED.value,
223 | description="Fetch a time series monthly adjusted",
224 | inputSchema={
225 | "type": "object",
226 | "properties": {
227 | "symbol": {"type": "string"},
228 | "datatype": {"type": "string"},
229 | },
230 | "required": ["symbol"],
231 | },
232 | ),
233 | types.Tool(
234 | name=AlphavantageTools.REALTIME_BULK_QUOTES.value,
235 | description="Fetch real time bulk quotes",
236 | inputSchema={
237 | "type": "object",
238 | "properties": {
239 | "symbols": {"type": "array"},
240 | },
241 | "required": ["symbols"],
242 | },
243 | ),
244 | types.Tool(
245 | name=AlphavantageTools.SYMBOL_SEARCH.value,
246 | description="Search endpoint",
247 | inputSchema={
248 | "type": "object",
249 | "properties": {
250 | "keywords": {"type": "string"},
251 | "datatype": {"type": "string"},
252 | },
253 | "required": ["keywords"],
254 | },
255 | ),
256 | types.Tool(
257 | name=AlphavantageTools.MARKET_STATUS.value,
258 | description="Fetch market status",
259 | inputSchema={"type": "object", "properties": {}, "required": []},
260 | ),
261 | types.Tool(
262 | name=AlphavantageTools.REALTIME_OPTIONS.value,
263 | description="Fetch realtime options",
264 | inputSchema={
265 | "type": "object",
266 | "properties": {
267 | "symbol": {"type": "string"},
268 | "datatype": {"type": "string"},
269 | "contract": {"type": "string"},
270 | },
271 | "required": ["symbol"],
272 | },
273 | ),
274 | types.Tool(
275 | name=AlphavantageTools.HISTORICAL_OPTIONS.value,
276 | description="Fetch historical options",
277 | inputSchema={
278 | "type": "object",
279 | "properties": {
280 | "symbol": {"type": "string"},
281 | "datatype": {"type": "string"},
282 | "contract": {"type": "string"},
283 | },
284 | "required": ["symbol"],
285 | },
286 | ),
287 | types.Tool(
288 | name=AlphavantageTools.NEWS_SENTIMENT.value,
289 | description="Fetch news sentiment",
290 | inputSchema={
291 | "type": "object",
292 | "properties": {
293 | "tickers": {"type": "array"},
294 | "topics": {"type": "string"},
295 | "time_from": {"type": "string"},
296 | "time_to": {"type": "string"},
297 | "sort": {"type": "string"},
298 | "limit": {"type": "number"},
299 | "datatype": {"type": "string"},
300 | },
301 | "required": ["tickers"],
302 | },
303 | ),
304 | types.Tool(
305 | name=AlphavantageTools.TOP_GAINERS_LOSERS.value,
306 | description="Fetch top gainers and losers",
307 | inputSchema={"type": "object", "properties": {}, "required": []},
308 | ),
309 | types.Tool(
310 | name=AlphavantageTools.INSIDER_TRANSACTIONS.value,
311 | description="Fetch insider transactions",
312 | inputSchema={
313 | "type": "object",
314 | "properties": {
315 | "symbol": {"type": "string"},
316 | },
317 | "required": ["symbol"],
318 | },
319 | ),
320 | types.Tool(
321 | name=AlphavantageTools.ANALYTICS_FIXED_WINDOW.value,
322 | description="Fetch analytics fixed window",
323 | inputSchema={
324 | "type": "object",
325 | "properties": {
326 | "symbols": {"type": "array"},
327 | "interval": {"type": "string"},
328 | "series_range": {"type": "string"},
329 | "ohlc": {"type": "string"},
330 | "calculations": {"type": "array"},
331 | },
332 | "required": ["symbols", "series_range", "interval", "calculations"],
333 | },
334 | ),
335 | types.Tool(
336 | name=AlphavantageTools.ANALYTICS_SLIDING_WINDOW.value,
337 | description="Fetch analytics sliding window",
338 | inputSchema={
339 | "type": "object",
340 | "properties": {
341 | "symbols": {"type": "array"},
342 | "interval": {"type": "string"},
343 | "series_range": {"type": "string"},
344 | "ohlc": {"type": "string"},
345 | "window_size": {"type": "number"},
346 | "calculations": {"type": "array"},
347 | },
348 | "required": [
349 | "symbols",
350 | "series_range",
351 | "interval",
352 | "calculations",
353 | "window_size",
354 | ],
355 | },
356 | ),
357 | types.Tool(
358 | name=AlphavantageTools.COMPANY_OVERVIEW.value,
359 | description="Fetch company overview",
360 | inputSchema={
361 | "type": "object",
362 | "properties": {
363 | "symbol": {"type": "string"},
364 | },
365 | "required": ["symbol"],
366 | },
367 | ),
368 | types.Tool(
369 | name=AlphavantageTools.ETF_PROFILE.value,
370 | description="Fetch ETF profile",
371 | inputSchema={
372 | "type": "object",
373 | "properties": {
374 | "symbol": {"type": "string"},
375 | },
376 | "required": ["symbol"],
377 | },
378 | ),
379 | types.Tool(
380 | name=AlphavantageTools.COMPANY_DIVIDENDS.value,
381 | description="Fetch company dividends",
382 | inputSchema={
383 | "type": "object",
384 | "properties": {
385 | "symbol": {"type": "string"},
386 | },
387 | "required": ["symbol"],
388 | },
389 | ),
390 | types.Tool(
391 | name=AlphavantageTools.COMPANY_SPLITS.value,
392 | description="Fetch company splits",
393 | inputSchema={
394 | "type": "object",
395 | "properties": {
396 | "symbol": {"type": "string"},
397 | },
398 | "required": ["symbol"],
399 | },
400 | ),
401 | types.Tool(
402 | name=AlphavantageTools.INCOME_STATEMENT.value,
403 | description="Fetch company income statement",
404 | inputSchema={
405 | "type": "object",
406 | "properties": {
407 | "symbol": {"type": "string"},
408 | },
409 | "required": ["symbol"],
410 | },
411 | ),
412 | types.Tool(
413 | name=AlphavantageTools.BALANCE_SHEET.value,
414 | description="Fetch company balance sheet",
415 | inputSchema={
416 | "type": "object",
417 | "properties": {
418 | "symbol": {"type": "string"},
419 | },
420 | "required": ["symbol"],
421 | },
422 | ),
423 | types.Tool(
424 | name=AlphavantageTools.CASH_FLOW.value,
425 | description="Fetch company cash flow",
426 | inputSchema={
427 | "type": "object",
428 | "properties": {
429 | "symbol": {"type": "string"},
430 | },
431 | "required": ["symbol"],
432 | },
433 | ),
434 | types.Tool(
435 | name=AlphavantageTools.COMPANY_EARNINGS.value,
436 | description="Fetch company earnings",
437 | inputSchema={
438 | "type": "object",
439 | "properties": {"symbol": {"type": "string"}},
440 | "required": ["symbol"],
441 | },
442 | ),
443 | types.Tool(
444 | name=AlphavantageTools.EARNINGS_CALL_TRANSCRIPT.value,
445 | description="Fetch the earnings call transcript for a given company in a specific quarter",
446 | inputSchema={
447 | "type": "object",
448 | "properties": {
449 | "symbol": {"type": "string"},
450 | "quarter": {"type": "string"},
451 | },
452 | "required": ["symbol", "quarter"],
453 | },
454 | ),
455 | types.Tool(
456 | name=AlphavantageTools.LISTING_STATUS.value,
457 | description="Fetch listing status",
458 | inputSchema={
459 | "type": "object",
460 | "properties": {
461 | "symbol": {"type": "string"},
462 | "date": {"type": "string"},
463 | "state": {"type": "string"},
464 | },
465 | "required": [],
466 | },
467 | ),
468 | types.Tool(
469 | name=AlphavantageTools.EARNINGS_CALENDAR.value,
470 | description="Fetch company earnings calendar",
471 | inputSchema={
472 | "type": "object",
473 | "properties": {
474 | "symbol": {"type": "string"},
475 | "horizon": {"type": "string"},
476 | },
477 | "required": [],
478 | },
479 | ),
480 | types.Tool(
481 | name=AlphavantageTools.IPO_CALENDAR.value,
482 | description="Fetch IPO calendar",
483 | inputSchema={"type": "object", "properties": {}, "required": []},
484 | ),
485 | types.Tool(
486 | name=AlphavantageTools.EXCHANGE_RATE.value,
487 | description="Fetch exchange rate",
488 | inputSchema={
489 | "type": "object",
490 | "properties": {
491 | "from_currency": {"type": "string"},
492 | "to_currency": {"type": "string"},
493 | },
494 | "required": ["from_currency", "to_currency"],
495 | },
496 | ),
497 | types.Tool(
498 | name=AlphavantageTools.FX_INTRADAY.value,
499 | description="Fetch FX intraday",
500 | inputSchema={
501 | "type": "object",
502 | "properties": {
503 | "from_symbol": {"type": "string"},
504 | "to_symbol": {"type": "string"},
505 | "interval": {"type": "string"},
506 | "outputsize": {"type": "string"},
507 | "datatype": {"type": "string"},
508 | },
509 | "required": ["from_symbol", "to_symbol", "interval"],
510 | },
511 | ),
512 | types.Tool(
513 | name=AlphavantageTools.FX_DAILY.value,
514 | description="Fetch FX daily",
515 | inputSchema={
516 | "type": "object",
517 | "properties": {
518 | "from_symbol": {"type": "string"},
519 | "to_symbol": {"type": "string"},
520 | "datatype": {"type": "string"},
521 | "outputsize": {"type": "string"},
522 | },
523 | "required": ["from_symbol", "to_symbol"],
524 | },
525 | ),
526 | types.Tool(
527 | name=AlphavantageTools.FX_WEEKLY.value,
528 | description="Fetch FX weekly",
529 | inputSchema={
530 | "type": "object",
531 | "properties": {
532 | "from_symbol": {"type": "string"},
533 | "to_symbol": {"type": "string"},
534 | "datatype": {"type": "string"},
535 | },
536 | "required": ["from_symbol", "to_symbol"],
537 | },
538 | ),
539 | types.Tool(
540 | name=AlphavantageTools.FX_MONTHLY.value,
541 | description="Fetch FX monthly",
542 | inputSchema={
543 | "type": "object",
544 | "properties": {
545 | "from_symbol": {"type": "string"},
546 | "to_symbol": {"type": "string"},
547 | "datatype": {"type": "string"},
548 | },
549 | "required": ["from_symbol", "to_symbol"],
550 | },
551 | ),
552 | types.Tool(
553 | name=AlphavantageTools.CRYPTO_INTRADAY.value,
554 | description="Fetch crypto intraday",
555 | inputSchema={
556 | "type": "object",
557 | "properties": {
558 | "symbol": {"type": "string"},
559 | "market": {"type": "string"},
560 | "interval": {"type": "string"},
561 | "outputsize": {"type": "string"},
562 | "datatype": {"type": "string"},
563 | },
564 | "required": ["symbol", "market", "interval"],
565 | },
566 | ),
567 | types.Tool(
568 | name=AlphavantageTools.DIGITAL_CURRENCY_DAILY.value,
569 | description="Fetch digital currency daily",
570 | inputSchema={
571 | "type": "object",
572 | "properties": {
573 | "symbol": {"type": "string"},
574 | "market": {"type": "string"},
575 | },
576 | "required": ["symbol", "market"],
577 | },
578 | ),
579 | types.Tool(
580 | name=AlphavantageTools.DIGITAL_CURRENCY_WEEKLY.value,
581 | description="Fetch digital currency weekly",
582 | inputSchema={
583 | "type": "object",
584 | "properties": {
585 | "symbol": {"type": "string"},
586 | "market": {"type": "string"},
587 | },
588 | "required": ["symbol", "market"],
589 | },
590 | ),
591 | types.Tool(
592 | name=AlphavantageTools.DIGITAL_CURRENCY_MONTHLY.value,
593 | description="Fetch digital currency monthly",
594 | inputSchema={
595 | "type": "object",
596 | "properties": {
597 | "symbol": {"type": "string"},
598 | "market": {"type": "string"},
599 | },
600 | "required": ["symbol", "market"],
601 | },
602 | ),
603 | types.Tool(
604 | name=AlphavantageTools.WTI_CRUDE_OIL.value,
605 | description="Fetch WTI crude oil",
606 | inputSchema={
607 | "type": "object",
608 | "properties": {
609 | "interval": {"type": "string"},
610 | "datatype": {"type": "string"},
611 | },
612 | "required": [],
613 | },
614 | ),
615 | types.Tool(
616 | name=AlphavantageTools.BRENT_CRUDE_OIL.value,
617 | description="Fetch Brent crude oil",
618 | inputSchema={
619 | "type": "object",
620 | "properties": {
621 | "interval": {"type": "string"},
622 | "datatype": {"type": "string"},
623 | },
624 | "required": [],
625 | },
626 | ),
627 | types.Tool(
628 | name=AlphavantageTools.NATURAL_GAS.value,
629 | description="Fetch natural gas",
630 | inputSchema={
631 | "type": "object",
632 | "properties": {
633 | "interval": {"type": "string"},
634 | "datatype": {"type": "string"},
635 | },
636 | "required": [],
637 | },
638 | ),
639 | types.Tool(
640 | name=AlphavantageTools.COPPER.value,
641 | description="Fetch copper",
642 | inputSchema={
643 | "type": "object",
644 | "properties": {
645 | "interval": {"type": "string"},
646 | "datatype": {"type": "string"},
647 | },
648 | "required": [],
649 | },
650 | ),
651 | types.Tool(
652 | name=AlphavantageTools.ALUMINUM.value,
653 | description="Fetch aluminum",
654 | inputSchema={
655 | "type": "object",
656 | "properties": {
657 | "interval": {"type": "string"},
658 | "datatype": {"type": "string"},
659 | },
660 | "required": [],
661 | },
662 | ),
663 | types.Tool(
664 | name=AlphavantageTools.WHEAT.value,
665 | description="Fetch wheat",
666 | inputSchema={
667 | "type": "object",
668 | "properties": {
669 | "interval": {"type": "string"},
670 | "datatype": {"type": "string"},
671 | },
672 | "required": [],
673 | },
674 | ),
675 | types.Tool(
676 | name=AlphavantageTools.CORN.value,
677 | description="Fetch corn",
678 | inputSchema={
679 | "type": "object",
680 | "properties": {
681 | "interval": {"type": "string"},
682 | "datatype": {"type": "string"},
683 | },
684 | "required": [],
685 | },
686 | ),
687 | types.Tool(
688 | name=AlphavantageTools.COTTON.value,
689 | description="Fetch cotton",
690 | inputSchema={
691 | "type": "object",
692 | "properties": {
693 | "interval": {"type": "string"},
694 | "datatype": {"type": "string"},
695 | },
696 | "required": [],
697 | },
698 | ),
699 | types.Tool(
700 | name=AlphavantageTools.SUGAR.value,
701 | description="Fetch sugar",
702 | inputSchema={
703 | "type": "object",
704 | "properties": {
705 | "interval": {"type": "string"},
706 | "datatype": {"type": "string"},
707 | },
708 | "required": [],
709 | },
710 | ),
711 | types.Tool(
712 | name=AlphavantageTools.COFFEE.value,
713 | description="Fetch coffee",
714 | inputSchema={
715 | "type": "object",
716 | "properties": {
717 | "interval": {"type": "string"},
718 | "datatype": {"type": "string"},
719 | },
720 | "required": [],
721 | },
722 | ),
723 | types.Tool(
724 | name=AlphavantageTools.ALL_COMMODITIES.value,
725 | description="Fetch all commodities",
726 | inputSchema={
727 | "type": "object",
728 | "properties": {
729 | "interval": {"type": "string"},
730 | "datatype": {"type": "string"},
731 | },
732 | "required": [],
733 | },
734 | ),
735 | types.Tool(
736 | name=AlphavantageTools.REAL_GDP.value,
737 | description="Fetch real GDP",
738 | inputSchema={
739 | "type": "object",
740 | "properties": {
741 | "interval": {"type": "string"},
742 | "datatype": {"type": "string"},
743 | },
744 | "required": [],
745 | },
746 | ),
747 | types.Tool(
748 | name=AlphavantageTools.REAL_GDP_PER_CAPITA.value,
749 | description="Fetch real GDP per capita",
750 | inputSchema={
751 | "type": "object",
752 | "properties": {
753 | "datatype": {"type": "string"},
754 | },
755 | "required": [],
756 | },
757 | ),
758 | types.Tool(
759 | name=AlphavantageTools.TREASURY_YIELD.value,
760 | description="Fetch treasury yield",
761 | inputSchema={
762 | "type": "object",
763 | "properties": {
764 | "interval": {"type": "string"},
765 | "maturity": {"type": "string"},
766 | "datatype": {"type": "string"},
767 | },
768 | "required": [],
769 | },
770 | ),
771 | types.Tool(
772 | name=AlphavantageTools.FEDERAL_FUNDS_RATE.value,
773 | description="Fetch federal funds rate",
774 | inputSchema={
775 | "type": "object",
776 | "properties": {
777 | "interval": {"type": "string"},
778 | "datatype": {"type": "string"},
779 | },
780 | "required": [],
781 | },
782 | ),
783 | types.Tool(
784 | name=AlphavantageTools.CPI.value,
785 | description="Fetch consumer price index",
786 | inputSchema={
787 | "type": "object",
788 | "properties": {
789 | "interval": {"type": "string"},
790 | "datatype": {"type": "string"},
791 | },
792 | "required": [],
793 | },
794 | ),
795 | types.Tool(
796 | name=AlphavantageTools.INFLATION.value,
797 | description="Fetch inflation",
798 | inputSchema={
799 | "type": "object",
800 | "properties": {
801 | "datatype": {"type": "string"},
802 | },
803 | "required": [],
804 | },
805 | ),
806 | types.Tool(
807 | name=AlphavantageTools.RETAIL_SALES.value,
808 | description="Fetch retail sales",
809 | inputSchema={
810 | "type": "object",
811 | "properties": {
812 | "datatype": {"type": "string"},
813 | },
814 | "required": [],
815 | },
816 | ),
817 | types.Tool(
818 | name=AlphavantageTools.DURABLES.value,
819 | description="Fetch durables",
820 | inputSchema={
821 | "type": "object",
822 | "properties": {
823 | "datatype": {"type": "string"},
824 | },
825 | "required": [],
826 | },
827 | ),
828 | types.Tool(
829 | name=AlphavantageTools.UNEMPLOYMENT.value,
830 | description="Fetch unemployment",
831 | inputSchema={
832 | "type": "object",
833 | "properties": {
834 | "datatype": {"type": "string"},
835 | },
836 | "required": [],
837 | },
838 | ),
839 | types.Tool(
840 | name=AlphavantageTools.NONFARM_PAYROLL.value,
841 | description="Fetch nonfarm payroll",
842 | inputSchema={
843 | "type": "object",
844 | "properties": {
845 | "datatype": {"type": "string"},
846 | },
847 | "required": [],
848 | },
849 | ),
850 | types.Tool(
851 | name=AlphavantageTools.SMA.value,
852 | description="Fetch simple moving average",
853 | inputSchema={
854 | "type": "object",
855 | "properties": {
856 | "symbol": {"type": "string"},
857 | "interval": {"type": "string"},
858 | "month": {"type": "string"},
859 | "time_period": {"type": "number"},
860 | "series_type": {"type": "string"},
861 | "datatype": {"type": "string"},
862 | "max_data_points": {
863 | "type": "number",
864 | "description": "Maximum number of data points to return (default: 100)",
865 | "default": 100,
866 | },
867 | },
868 | "required": ["symbol", "interval", "time_period", "series_type"],
869 | },
870 | ),
871 | types.Tool(
872 | name=AlphavantageTools.EMA.value,
873 | description="Fetch exponential moving average",
874 | inputSchema={
875 | "type": "object",
876 | "properties": {
877 | "symbol": {"type": "string"},
878 | "interval": {"type": "string"},
879 | "month": {"type": "string"},
880 | "time_period": {"type": "number"},
881 | "series_type": {"type": "string"},
882 | "datatype": {"type": "string"},
883 | },
884 | "required": ["symbol", "interval", "time_period", "series_type"],
885 | },
886 | ),
887 | types.Tool(
888 | name=AlphavantageTools.WMA.value,
889 | description="Fetch weighted moving average",
890 | inputSchema={
891 | "type": "object",
892 | "properties": {
893 | "symbol": {"type": "string"},
894 | "interval": {"type": "string"},
895 | "month": {"type": "string"},
896 | "time_period": {"type": "number"},
897 | "series_type": {"type": "string"},
898 | "datatype": {"type": "string"},
899 | },
900 | "required": ["symbol", "interval", "time_period", "series_type"],
901 | },
902 | ),
903 | types.Tool(
904 | name=AlphavantageTools.DEMA.value,
905 | description="Fetch double exponential moving average",
906 | inputSchema={
907 | "type": "object",
908 | "properties": {
909 | "symbol": {"type": "string"},
910 | "interval": {"type": "string"},
911 | "month": {"type": "string"},
912 | "time_period": {"type": "number"},
913 | "series_type": {"type": "string"},
914 | "datatype": {"type": "string"},
915 | },
916 | "required": ["symbol", "interval", "time_period", "series_type"],
917 | },
918 | ),
919 | types.Tool(
920 | name=AlphavantageTools.TRIMA.value,
921 | description="Fetch triangular moving average",
922 | inputSchema={
923 | "type": "object",
924 | "properties": {
925 | "symbol": {"type": "string"},
926 | "interval": {"type": "string"},
927 | "month": {"type": "string"},
928 | "time_period": {"type": "number"},
929 | "series_type": {"type": "string"},
930 | "datatype": {"type": "string"},
931 | },
932 | "required": ["symbol", "interval", "time_period", "series_type"],
933 | },
934 | ),
935 | types.Tool(
936 | name=AlphavantageTools.KAMA.value,
937 | description="Fetch Kaufman adaptive moving average",
938 | inputSchema={
939 | "type": "object",
940 | "properties": {
941 | "symbol": {"type": "string"},
942 | "interval": {"type": "string"},
943 | "month": {"type": "string"},
944 | "time_period": {"type": "number"},
945 | "series_type": {"type": "string"},
946 | "datatype": {"type": "string"},
947 | },
948 | },
949 | ),
950 | types.Tool(
951 | name=AlphavantageTools.MAMA.value,
952 | description="Fetch MESA adaptive moving average",
953 | inputSchema={
954 | "type": "object",
955 | "properties": {
956 | "symbol": {"type": "string"},
957 | "interval": {"type": "string"},
958 | "month": {"type": "string"},
959 | "series_type": {"type": "string"},
960 | "fastlimit": {"type": "number"},
961 | "slowlimit": {"type": "number"},
962 | "datatype": {"type": "string"},
963 | },
964 | "required": [
965 | "symbol",
966 | "interval",
967 | "series_type",
968 | "fastlimit",
969 | "slowlimit",
970 | ],
971 | },
972 | ),
973 | types.Tool(
974 | name=AlphavantageTools.VWAP.value,
975 | description="Fetch volume weighted average price",
976 | inputSchema={
977 | "type": "object",
978 | "properties": {
979 | "symbol": {"type": "string"},
980 | "interval": {"type": "string"},
981 | "month": {"type": "string"},
982 | "datatype": {"type": "string"},
983 | },
984 | "required": ["symbol", "interval"],
985 | },
986 | ),
987 | types.Tool(
988 | name=AlphavantageTools.T3.value,
989 | description="Fetch triple exponential moving average",
990 | inputSchema={
991 | "type": "object",
992 | "properties": {
993 | "symbol": {"type": "string"},
994 | "interval": {"type": "string"},
995 | "month": {"type": "string"},
996 | "time_period": {"type": "number"},
997 | "series_type": {"type": "string"},
998 | "datatype": {"type": "string"},
999 | },
1000 | "required": ["symbol", "interval", "time_period", "series_type"],
1001 | },
1002 | ),
1003 | types.Tool(
1004 | name=AlphavantageTools.MACD.value,
1005 | description="Fetch moving average convergence divergence",
1006 | inputSchema={
1007 | "type": "object",
1008 | "properties": {
1009 | "symbol": {"type": "string"},
1010 | "interval": {"type": "string"},
1011 | "month": {"type": "string"},
1012 | "series_type": {"type": "string"},
1013 | "fastperiod": {"type": "number"},
1014 | "slowperiod": {"type": "number"},
1015 | "signalperiod": {"type": "number"},
1016 | "datatype": {"type": "string"},
1017 | },
1018 | "required": ["symbol", "interval", "series_type"],
1019 | },
1020 | ),
1021 | types.Tool(
1022 | name=AlphavantageTools.MACDEXT.value,
1023 | description="Fetch moving average convergence divergence next",
1024 | inputSchema={
1025 | "type": "object",
1026 | "properties": {
1027 | "symbol": {"type": "string"},
1028 | "interval": {"type": "string"},
1029 | "month": {"type": "string"},
1030 | "series_type": {"type": "string"},
1031 | "fastperiod": {"type": "number"},
1032 | "slowperiod": {"type": "number"},
1033 | "signalperiod": {"type": "number"},
1034 | "fastmatype": {"type": "number"},
1035 | "slowmatype": {"type": "number"},
1036 | "signalmatype": {"type": "number"},
1037 | "datatype": {"type": "string"},
1038 | },
1039 | "required": ["symbol", "interval", "series_type"],
1040 | },
1041 | ),
1042 | types.Tool(
1043 | name=AlphavantageTools.STOCH.value,
1044 | description="Fetch stochastic oscillator",
1045 | inputSchema={
1046 | "type": "object",
1047 | "properties": {
1048 | "symbol": {"type": "string"},
1049 | "interval": {"type": "string"},
1050 | "month": {"type": "string"},
1051 | "fastkperiod": {"type": "number"},
1052 | "slowkperiod": {"type": "number"},
1053 | "slowdperiod": {"type": "number"},
1054 | "slowkmatype": {"type": "string"},
1055 | "slowdmatype": {"type": "string"},
1056 | "datatype": {"type": "string"},
1057 | },
1058 | "required": ["symbol", "interval"],
1059 | },
1060 | ),
1061 | types.Tool(
1062 | name=AlphavantageTools.STOCHF.value,
1063 | description="Fetch stochastic oscillator fast",
1064 | inputSchema={
1065 | "type": "object",
1066 | "properties": {
1067 | "symbol": {"type": "string"},
1068 | "interval": {"type": "string"},
1069 | "month": {"type": "string"},
1070 | "fastkperiod": {"type": "number"},
1071 | "fastdperiod": {"type": "number"},
1072 | "fastdmatype": {"type": "string"},
1073 | "datatype": {"type": "string"},
1074 | },
1075 | "required": ["symbol", "interval"],
1076 | },
1077 | ),
1078 | types.Tool(
1079 | name=AlphavantageTools.RSI.value,
1080 | description="Fetch relative strength index",
1081 | inputSchema={
1082 | "type": "object",
1083 | "properties": {
1084 | "symbol": {"type": "string"},
1085 | "interval": {"type": "string"},
1086 | "month": {"type": "string"},
1087 | "time_period": {"type": "number"},
1088 | "series_type": {"type": "string"},
1089 | "datatype": {"type": "string"},
1090 | },
1091 | "required": ["symbol", "interval", "time_period", "series_type"],
1092 | },
1093 | ),
1094 | types.Tool(
1095 | name=AlphavantageTools.STOCHRSI.value,
1096 | description="Fetch stochastic relative strength index",
1097 | inputSchema={
1098 | "type": "object",
1099 | "properties": {
1100 | "symbol": {"type": "string"},
1101 | "interval": {"type": "string"},
1102 | "month": {"type": "string"},
1103 | "time_period": {"type": "number"},
1104 | "series_type": {"type": "string"},
1105 | "fastkperiod": {"type": "number"},
1106 | "fastdperiod": {"type": "number"},
1107 | "fastdmatype": {"type": "string"},
1108 | "datatype": {"type": "string"},
1109 | },
1110 | "required": ["symbol", "interval", "time_period", "series_type"],
1111 | },
1112 | ),
1113 | types.Tool(
1114 | name=AlphavantageTools.WILLR.value,
1115 | description="Fetch williams percent range",
1116 | inputSchema={
1117 | "type": "object",
1118 | "properties": {
1119 | "symbol": {"type": "string"},
1120 | "interval": {"type": "string"},
1121 | "month": {"type": "string"},
1122 | "time_period": {"type": "number"},
1123 | "datatype": {"type": "string"},
1124 | },
1125 | "required": ["symbol", "interval", "time_period"],
1126 | },
1127 | ),
1128 | types.Tool(
1129 | name=AlphavantageTools.ADX.value,
1130 | description="Fetch average directional movement index",
1131 | inputSchema={
1132 | "type": "object",
1133 | "properties": {
1134 | "symbol": {"type": "string"},
1135 | "interval": {"type": "string"},
1136 | "month": {"type": "string"},
1137 | "time_period": {"type": "number"},
1138 | "datatype": {"type": "string"},
1139 | },
1140 | "required": ["symbol", "interval", "time_period"],
1141 | },
1142 | ),
1143 | types.Tool(
1144 | name=AlphavantageTools.ADXR.value,
1145 | description="Fetch average directional movement index rating",
1146 | inputSchema={
1147 | "type": "object",
1148 | "properties": {
1149 | "symbol": {"type": "string"},
1150 | "interval": {"type": "string"},
1151 | "month": {"type": "string"},
1152 | "time_period": {"type": "number"},
1153 | "datatype": {"type": "string"},
1154 | },
1155 | "required": ["symbol", "interval", "time_period"],
1156 | },
1157 | ),
1158 | types.Tool(
1159 | name=AlphavantageTools.APO.value,
1160 | description="Fetch absolute price oscillator",
1161 | inputSchema={
1162 | "type": "object",
1163 | "properties": {
1164 | "symbol": {"type": "string"},
1165 | "interval": {"type": "string"},
1166 | "month": {"type": "string"},
1167 | "series_type": {"type": "string"},
1168 | "fastperiod": {"type": "number"},
1169 | "slowperiod": {"type": "number"},
1170 | "matype": {"type": "string"},
1171 | "datatype": {"type": "string"},
1172 | },
1173 | "required": [
1174 | "symbol",
1175 | "interval",
1176 | "series_type",
1177 | "fastperiod",
1178 | "slowperiod",
1179 | ],
1180 | },
1181 | ),
1182 | types.Tool(
1183 | name=AlphavantageTools.PPO.value,
1184 | description="Fetch percentage price oscillator",
1185 | inputSchema={
1186 | "type": "object",
1187 | "properties": {
1188 | "symbol": {"type": "string"},
1189 | "interval": {"type": "string"},
1190 | "month": {"type": "string"},
1191 | "series_type": {"type": "string"},
1192 | "fastperiod": {"type": "number"},
1193 | "slowperiod": {"type": "number"},
1194 | "matype": {"type": "string"},
1195 | "datatype": {"type": "string"},
1196 | },
1197 | "required": [
1198 | "symbol",
1199 | "interval",
1200 | "series_type",
1201 | "fastperiod",
1202 | "slowperiod",
1203 | ],
1204 | },
1205 | ),
1206 | types.Tool(
1207 | name=AlphavantageTools.MOM.value,
1208 | description="Fetch momentum",
1209 | inputSchema={
1210 | "type": "object",
1211 | "properties": {
1212 | "symbol": {"type": "string"},
1213 | "interval": {"type": "string"},
1214 | "month": {"type": "string"},
1215 | "time_period": {"type": "number"},
1216 | "series_type": {"type": "string"},
1217 | "datatype": {"type": "string"},
1218 | },
1219 | "required": ["symbol", "interval", "time_period", "series_type"],
1220 | },
1221 | ),
1222 | types.Tool(
1223 | name=AlphavantageTools.BOP.value,
1224 | description="Fetch balance of power",
1225 | inputSchema={
1226 | "type": "object",
1227 | "properties": {
1228 | "symbol": {"type": "string"},
1229 | "interval": {"type": "string"},
1230 | "month": {"type": "string"},
1231 | "datatype": {"type": "string"},
1232 | },
1233 | "required": ["symbol", "interval"],
1234 | },
1235 | ),
1236 | types.Tool(
1237 | name=AlphavantageTools.CCI.value,
1238 | description="Fetch commodity channel index",
1239 | inputSchema={
1240 | "type": "object",
1241 | "properties": {
1242 | "symbol": {"type": "string"},
1243 | "interval": {"type": "string"},
1244 | "month": {"type": "string"},
1245 | "time_period": {"type": "number"},
1246 | "datatype": {"type": "string"},
1247 | },
1248 | "required": ["symbol", "interval", "time_period"],
1249 | },
1250 | ),
1251 | types.Tool(
1252 | name=AlphavantageTools.CMO.value,
1253 | description="Fetch chande momentum oscillator",
1254 | inputSchema={
1255 | "type": "object",
1256 | "properties": {
1257 | "symbol": {"type": "string"},
1258 | "interval": {"type": "string"},
1259 | "month": {"type": "string"},
1260 | "time_period": {"type": "number"},
1261 | "datatype": {"type": "string"},
1262 | },
1263 | "required": ["symbol", "interval", "time_period"],
1264 | },
1265 | ),
1266 | types.Tool(
1267 | name=AlphavantageTools.ROC.value,
1268 | description="Fetch rate of change",
1269 | inputSchema={
1270 | "type": "object",
1271 | "properties": {
1272 | "symbol": {"type": "string"},
1273 | "interval": {"type": "string"},
1274 | "month": {"type": "string"},
1275 | "time_period": {"type": "number"},
1276 | "series_type": {"type": "string"},
1277 | "datatype": {"type": "string"},
1278 | },
1279 | "required": ["symbol", "interval", "time_period", "series_type"],
1280 | },
1281 | ),
1282 | types.Tool(
1283 | name=AlphavantageTools.ROCR.value,
1284 | description="Fetch rate of change ratio",
1285 | inputSchema={
1286 | "type": "object",
1287 | "properties": {
1288 | "symbol": {"type": "string"},
1289 | "interval": {"type": "string"},
1290 | "month": {"type": "string"},
1291 | "time_period": {"type": "number"},
1292 | "series_type": {"type": "string"},
1293 | "datatype": {"type": "string"},
1294 | },
1295 | "required": ["symbol", "interval", "time_period", "series_type"],
1296 | },
1297 | ),
1298 | types.Tool(
1299 | name=AlphavantageTools.AROON.value,
1300 | description="Fetch aroon",
1301 | inputSchema={
1302 | "type": "object",
1303 | "properties": {
1304 | "symbol": {"type": "string"},
1305 | "interval": {"type": "string"},
1306 | "month": {"type": "string"},
1307 | "time_period": {"type": "number"},
1308 | "datatype": {"type": "string"},
1309 | },
1310 | "required": ["symbol", "interval", "time_period"],
1311 | },
1312 | ),
1313 | types.Tool(
1314 | name=AlphavantageTools.AROONOSC.value,
1315 | description="Fetch aroon oscillator",
1316 | inputSchema={
1317 | "type": "object",
1318 | "properties": {
1319 | "symbol": {"type": "string"},
1320 | "interval": {"type": "string"},
1321 | "month": {"type": "string"},
1322 | "time_period": {"type": "number"},
1323 | "datatype": {"type": "string"},
1324 | },
1325 | "required": ["symbol", "interval", "time_period"],
1326 | },
1327 | ),
1328 | types.Tool(
1329 | name=AlphavantageTools.MFI.value,
1330 | description="Fetch money flow index",
1331 | inputSchema={
1332 | "type": "object",
1333 | "properties": {
1334 | "symbol": {"type": "string"},
1335 | "interval": {"type": "string"},
1336 | "month": {"type": "string"},
1337 | "time_period": {"type": "number"},
1338 | "datatype": {"type": "string"},
1339 | },
1340 | "required": ["symbol", "interval", "time_period"],
1341 | },
1342 | ),
1343 | types.Tool(
1344 | name=AlphavantageTools.TRIX.value,
1345 | description="Fetch triple exponential average",
1346 | inputSchema={
1347 | "type": "object",
1348 | "properties": {
1349 | "symbol": {"type": "string"},
1350 | "interval": {"type": "string"},
1351 | "month": {"type": "string"},
1352 | "time_period": {"type": "number"},
1353 | "series_type": {"type": "string"},
1354 | "datatype": {"type": "string"},
1355 | },
1356 | "required": ["symbol", "interval", "time_period", "series_type"],
1357 | },
1358 | ),
1359 | types.Tool(
1360 | name=AlphavantageTools.ULTOSC.value,
1361 | description="Fetch ultimate oscillator",
1362 | inputSchema={
1363 | "type": "object",
1364 | "properties": {
1365 | "symbol": {"type": "string"},
1366 | "interval": {"type": "string"},
1367 | "month": {"type": "string"},
1368 | "timeperiod1": {"type": "number"},
1369 | "timeperiod2": {"type": "number"},
1370 | "timeperiod3": {"type": "number"},
1371 | "datatype": {"type": "string"},
1372 | },
1373 | "required": [
1374 | "symbol",
1375 | "interval",
1376 | "timeperiod1",
1377 | "timeperiod2",
1378 | "timeperiod3",
1379 | ],
1380 | },
1381 | ),
1382 | types.Tool(
1383 | name=AlphavantageTools.DX.value,
1384 | description="Fetch directional movement index",
1385 | inputSchema={
1386 | "type": "object",
1387 | "properties": {
1388 | "symbol": {"type": "string"},
1389 | "interval": {"type": "string"},
1390 | "month": {"type": "string"},
1391 | "time_period": {"type": "number"},
1392 | "datatype": {"type": "string"},
1393 | },
1394 | "required": ["symbol", "interval", "time_period"],
1395 | },
1396 | ),
1397 | types.Tool(
1398 | name=AlphavantageTools.MINUS_DI.value,
1399 | description="Fetch minus directional indicator",
1400 | inputSchema={
1401 | "type": "object",
1402 | "properties": {
1403 | "symbol": {"type": "string"},
1404 | "interval": {"type": "string"},
1405 | "month": {"type": "string"},
1406 | "time_period": {"type": "number"},
1407 | "datatype": {"type": "string"},
1408 | },
1409 | "required": ["symbol", "interval", "time_period"],
1410 | },
1411 | ),
1412 | types.Tool(
1413 | name=AlphavantageTools.PLUS_DI.value,
1414 | description="Fetch plus directional indicator",
1415 | inputSchema={
1416 | "type": "object",
1417 | "properties": {
1418 | "symbol": {"type": "string"},
1419 | "interval": {"type": "string"},
1420 | "month": {"type": "string"},
1421 | "time_period": {"type": "number"},
1422 | "datatype": {"type": "string"},
1423 | },
1424 | "required": ["symbol", "interval", "time_period"],
1425 | },
1426 | ),
1427 | types.Tool(
1428 | name=AlphavantageTools.MINUS_DM.value,
1429 | description="Fetch minus directional movement",
1430 | inputSchema={
1431 | "type": "object",
1432 | "properties": {
1433 | "symbol": {"type": "string"},
1434 | "interval": {"type": "string"},
1435 | "month": {"type": "string"},
1436 | "time_period": {"type": "number"},
1437 | "datatype": {"type": "string"},
1438 | },
1439 | "required": ["symbol", "interval", "time_period"],
1440 | },
1441 | ),
1442 | types.Tool(
1443 | name=AlphavantageTools.PLUS_DM.value,
1444 | description="Fetch plus directional movement",
1445 | inputSchema={
1446 | "type": "object",
1447 | "properties": {
1448 | "symbol": {"type": "string"},
1449 | "interval": {"type": "string"},
1450 | "month": {"type": "string"},
1451 | "time_period": {"type": "number"},
1452 | "datatype": {"type": "string"},
1453 | },
1454 | "required": ["symbol", "interval", "time_period"],
1455 | },
1456 | ),
1457 | types.Tool(
1458 | name=AlphavantageTools.BBANDS.value,
1459 | description="Fetch bollinger bands",
1460 | inputSchema={
1461 | "type": "object",
1462 | "properties": {
1463 | "symbol": {"type": "string"},
1464 | "interval": {"type": "string"},
1465 | "month": {"type": "string"},
1466 | "time_period": {"type": "number"},
1467 | "series_type": {"type": "string"},
1468 | "nbdevup": {"type": "number"},
1469 | "nbdevdn": {"type": "number"},
1470 | "datatype": {"type": "string"},
1471 | },
1472 | "required": [
1473 | "symbol",
1474 | "interval",
1475 | "time_period",
1476 | "series_type",
1477 | "nbdevup",
1478 | "nbdevdn",
1479 | ],
1480 | },
1481 | ),
1482 | types.Tool(
1483 | name=AlphavantageTools.MIDPOINT.value,
1484 | description="Fetch midpoint",
1485 | inputSchema={
1486 | "type": "object",
1487 | "properties": {
1488 | "symbol": {"type": "string"},
1489 | "interval": {"type": "string"},
1490 | "month": {"type": "string"},
1491 | "time_period": {"type": "number"},
1492 | "series_type": {"type": "string"},
1493 | "datatype": {"type": "string"},
1494 | },
1495 | "required": ["symbol", "interval", "time_period", "series_type"],
1496 | },
1497 | ),
1498 | types.Tool(
1499 | name=AlphavantageTools.MIDPRICE.value,
1500 | description="Fetch midprice",
1501 | inputSchema={
1502 | "type": "object",
1503 | "properties": {
1504 | "symbol": {"type": "string"},
1505 | "interval": {"type": "string"},
1506 | "month": {"type": "string"},
1507 | "time_period": {"type": "number"},
1508 | "datatype": {"type": "string"},
1509 | },
1510 | "required": ["symbol", "interval", "time_period"],
1511 | },
1512 | ),
1513 | types.Tool(
1514 | name=AlphavantageTools.SAR.value,
1515 | description="Fetch parabolic sar",
1516 | inputSchema={
1517 | "type": "object",
1518 | "properties": {
1519 | "symbol": {"type": "string"},
1520 | "interval": {"type": "string"},
1521 | "month": {"type": "string"},
1522 | "acceleration": {"type": "number"},
1523 | "maximum": {"type": "number"},
1524 | "datatype": {"type": "string"},
1525 | },
1526 | "required": ["symbol", "interval"],
1527 | },
1528 | ),
1529 | types.Tool(
1530 | name=AlphavantageTools.TRANGE.value,
1531 | description="Fetch true range",
1532 | inputSchema={
1533 | "type": "object",
1534 | "properties": {
1535 | "symbol": {"type": "string"},
1536 | "interval": {"type": "string"},
1537 | "month": {"type": "string"},
1538 | "datatype": {"type": "string"},
1539 | },
1540 | "required": ["symbol", "interval"],
1541 | },
1542 | ),
1543 | types.Tool(
1544 | name=AlphavantageTools.ATR.value,
1545 | description="Fetch average true range",
1546 | inputSchema={
1547 | "type": "object",
1548 | "properties": {
1549 | "symbol": {"type": "string"},
1550 | "interval": {"type": "string"},
1551 | "month": {"type": "string"},
1552 | "time_period": {"type": "number"},
1553 | "datatype": {"type": "string"},
1554 | },
1555 | "required": ["symbol", "interval", "time_period"],
1556 | },
1557 | ),
1558 | types.Tool(
1559 | name=AlphavantageTools.NATR.value,
1560 | description="Fetch normalized average true range",
1561 | inputSchema={
1562 | "type": "object",
1563 | "properties": {
1564 | "symbol": {"type": "string"},
1565 | "interval": {"type": "string"},
1566 | "month": {"type": "string"},
1567 | "time_period": {"type": "number"},
1568 | "datatype": {"type": "string"},
1569 | },
1570 | "required": ["symbol", "interval", "time_period"],
1571 | },
1572 | ),
1573 | types.Tool(
1574 | name=AlphavantageTools.AD.value,
1575 | description="Fetch accumulation/distribution line",
1576 | inputSchema={
1577 | "type": "object",
1578 | "properties": {
1579 | "symbol": {"type": "string"},
1580 | "interval": {"type": "string"},
1581 | "month": {"type": "string"},
1582 | "datatype": {"type": "string"},
1583 | },
1584 | "required": ["symbol", "interval"],
1585 | },
1586 | ),
1587 | types.Tool(
1588 | name=AlphavantageTools.ADOSC.value,
1589 | description="Fetch accumulation/distribution oscillator",
1590 | inputSchema={
1591 | "type": "object",
1592 | "properties": {
1593 | "symbol": {"type": "string"},
1594 | "interval": {"type": "string"},
1595 | "month": {"type": "string"},
1596 | "fastperiod": {"type": "number"},
1597 | "slowperiod": {"type": "number"},
1598 | "datatype": {"type": "string"},
1599 | },
1600 | "required": ["symbol", "interval", "fastperiod", "slowperiod"],
1601 | },
1602 | ),
1603 | types.Tool(
1604 | name=AlphavantageTools.OBV.value,
1605 | description="Fetch on balance volume",
1606 | inputSchema={
1607 | "type": "object",
1608 | "properties": {
1609 | "symbol": {"type": "string"},
1610 | "interval": {"type": "string"},
1611 | "month": {"type": "string"},
1612 | "datatype": {"type": "string"},
1613 | },
1614 | "required": ["symbol", "interval"],
1615 | },
1616 | ),
1617 | types.Tool(
1618 | name=AlphavantageTools.HT_TRENDLINE.value,
1619 | description="Fetch hilbert transform - trendline",
1620 | inputSchema={
1621 | "type": "object",
1622 | "properties": {
1623 | "symbol": {"type": "string"},
1624 | "interval": {"type": "string"},
1625 | "month": {"type": "string"},
1626 | "series_type": {"type": "string"},
1627 | "datatype": {"type": "string"},
1628 | },
1629 | "required": ["symbol", "interval", "series_type"],
1630 | },
1631 | ),
1632 | types.Tool(
1633 | name=AlphavantageTools.HT_SINE.value,
1634 | description="Fetch hilbert transform - sine wave",
1635 | inputSchema={
1636 | "type": "object",
1637 | "properties": {
1638 | "symbol": {"type": "string"},
1639 | "interval": {"type": "string"},
1640 | "month": {"type": "string"},
1641 | "series_type": {"type": "string"},
1642 | "datatype": {"type": "string"},
1643 | },
1644 | "required": ["symbol", "interval", "series_type"],
1645 | },
1646 | ),
1647 | types.Tool(
1648 | name=AlphavantageTools.HT_TRENDMODE.value,
1649 | description="Fetch hilbert transform - trend mode",
1650 | inputSchema={
1651 | "type": "object",
1652 | "properties": {
1653 | "symbol": {"type": "string"},
1654 | "interval": {"type": "string"},
1655 | "month": {"type": "string"},
1656 | "datatype": {"type": "string"},
1657 | },
1658 | "required": ["symbol", "interval"],
1659 | },
1660 | ),
1661 | types.Tool(
1662 | name=AlphavantageTools.HT_DCPERIOD.value,
1663 | description="Fetch hilbert transform - dominant cycle period",
1664 | inputSchema={
1665 | "type": "object",
1666 | "properties": {
1667 | "symbol": {"type": "string"},
1668 | "interval": {"type": "string"},
1669 | "month": {"type": "string"},
1670 | "series_type": {"type": "string"},
1671 | "datatype": {"type": "string"},
1672 | },
1673 | "required": ["symbol", "interval"],
1674 | },
1675 | ),
1676 | types.Tool(
1677 | name=AlphavantageTools.HT_DCPHASE.value,
1678 | description="Fetch hilbert transform - dominant cycle phase",
1679 | inputSchema={
1680 | "type": "object",
1681 | "properties": {
1682 | "symbol": {"type": "string"},
1683 | "interval": {"type": "string"},
1684 | "month": {"type": "string"},
1685 | "datatype": {"type": "string"},
1686 | },
1687 | "required": ["symbol", "interval"],
1688 | },
1689 | ),
1690 | types.Tool(
1691 | name=AlphavantageTools.HT_PHASOR.value,
1692 | description="Fetch hilbert transform - phasor components",
1693 | inputSchema={
1694 | "type": "object",
1695 | "properties": {
1696 | "symbol": {"type": "string"},
1697 | "interval": {"type": "string"},
1698 | "month": {"type": "string"},
1699 | "datatype": {"type": "string"},
1700 | },
1701 | "required": ["symbol", "interval"],
1702 | },
1703 | ),
1704 | ]
1705 |
```