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 | ```