#
tokens: 31429/50000 2/35 files (page 2/4)
lines: on (toggle) GitHub
raw markdown copy reset
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
│       ├── 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 | 
```
Page 2/4FirstPrevNextLast