Skip to main content
Glama
JesusRS1

Stock Trade MCP Server

by JesusRS1

Stock Trade MCP Server

A Model Context Protocol (MCP) server that exposes various Tiingo API endpoints as tools. This server allows programmatic access to financial data including stock prices, news, forex, fundamentals, and corporate actions via the MCP protocol.

Prerequisites

  • Node.js (v18 or later recommended)

  • npm (comes with Node.js)

  • A Tiingo API Key

  • MCP-compatible client or runner (e.g., VSCode extension, CLI)

Related MCP server: AlphaVantage MCP Server

Setup

  1. Clone the repository or ensure you are in the project directory.

  2. Install dependencies:

    npm install
  3. Obtain Your Tiingo API Key: To use this server, you need a Tiingo API token.

    1. Register for a Tiingo account if you don't have one.

    2. Go to your Tiingo Account page and navigate to the API Token section (or directly visit: https://www.tiingo.com/account/api/token).

    3. Copy your API Token. You will need to provide this token to your MCP client to authenticate with the Tiingo API. Note: Programmatic registration or logins are not supported by Tiingo; the API token is the sole method for authentication.

  4. Set Tiingo API Key: This server requires your Tiingo API key. You can typically provide the API key in your MCP client's configuration (see "Running the Server" below for an example).

  5. Build the server:

    npm run build

    This will create a build directory with the compiled JavaScript code.

Running the Server

  • Via MCP runner: Configure your MCP client to run the server using stdio transport. You can provide the TIINGO_API_TOKEN in the env block of the configuration. Example MCP settings entry:

    "mcp-tiingo": {
      "transportType": "stdio",
      "command": "node",
      "args": [
        "/path/to/mcp-tiingo/build/index.js"
      ],
      "env": {
        "TIINGO_API_TOKEN": "YOUR_API_KEY_HERE"
      }
      // ... other optional settings ...
    }

    (Replace /path/to/mcp-tiingo and YOUR_API_KEY_HERE accordingly)

Available Tools

The server exposes the following Tiingo API endpoints as tools via MCP:

get_end_of_day_prices

  • Description: Fetches End-of-Day prices for a given ticker symbol with optional date range and format.

  • Key Inputs: ticker, startDate, endDate, resampleFreq

get_news

  • Description: Fetches news articles from Tiingo with various filtering options.

  • Key Inputs: tickers, tags, sources, startDate, endDate, limit

get_forex_prices

  • Description: Fetches historical intraday Forex prices for a given ticker symbol with optional date range and frequency.

  • Key Inputs: ticker, startDate, endDate, resampleFreq

get_forex_top_of_book

  • Description: Fetches real-time Forex Top-of-Book/Last data for one or more ticker symbols.

  • Key Inputs: ticker or tickers

get_fundamentals_definitions

  • Description: Fetches available fundamental metrics and their definitions.

  • Key Inputs: None

get_fundamentals_statements

  • Description: Fetches historical fundamental statement data (Balance Sheet, Income Statement, Cash Flow, Overview) for a given ticker.

  • Key Inputs: ticker, startDate, endDate, year, quarter

get_fundamentals_daily_metrics

  • Description: Fetches daily fundamental metrics for a given ticker.

  • Key Inputs: ticker, startDate, endDate, columns

get_fundamentals_meta

  • Description: Fetches fundamental meta data for companies.

  • Key Inputs: None

get_dividend_distributions

  • Description: Fetches historical dividend and distribution data for a given ticker.

  • Key Inputs: ticker, startExDate, endExDate

get_dividend_yield

  • Description: Fetches historical dividend yield data for a given ticker.

  • Key Inputs: ticker, startDate, endDate, columns

get_splits

  • Description: Fetches historical split data for a given ticker.

  • Key Inputs: ticker, startExDate, endExDate

Extending

To add more Tiingo API endpoints as tools:

  1. Create a new TypeScript file in src/tools/ defining the tool's name, description, input schema (using Zod), and handler function to call the Tiingo API.

  2. Import and add the tool definition object to the tiingoTools array in src/tools/index.ts.

  3. Rebuild the server (npm run build).

Available Tools

11 tools
get_dividend_distributionsB

Fetches historical dividend and distribution data for a given ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol of the asset
endExDateNoEnd ex-date in YYYY-MM-DD format (optional)
startExDateNoStart ex-date in YYYY-MM-DD format (optional)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only says 'fetches historical data' but does not mention data freshness, error handling, rate limits, or any side effects. This is minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no fluff. It is concise but could be slightly more informative without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description should provide more context about return values, pagination, or required approvals. It only mentions 'historical dividend and distribution data', which is vague for a tool with 3 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all properties have descriptions). The description adds no extra meaning beyond the schema; it only summarizes that it fetches historical data. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches historical dividend and distribution data, which is a specific verb and resource. It distinguishes from siblings like get_dividend_yield or get_splits, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There are siblings like get_dividend_yield or get_end_of_day_prices, but the description does not provide context for selecting this tool over others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dividend_yieldB

Fetches historical dividend yield data for a given ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol of the asset
columnsNoComma-separated list of columns/metrics to return (optional)
endDateNoEnd date in YYYY-MM-DD format (optional)
startDateNoStart date in YYYY-MM-DD format (optional)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states it 'fetches historical data', implying a read-only operation, but does not confirm idempotency, rate limits, or potential data volume. The description is too minimal to provide adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently communicates the tool's purpose without redundancy. It could be slightly more detailed (e.g., mentioning optional date range), but it remains front-loaded and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool (historical yield fetch) and full schema coverage, the description is minimally adequate. However, it lacks context on return format, differences from sibling tools, and behavioral constraints, leaving some gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all four parameters with descriptions (100% coverage), so the baseline is 3. The description does not add any additional meaning beyond the schema—it only reiterates the tool's main action.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Fetches', the resource 'historical dividend yield data', and the scope 'for a given ticker'. It distinguishes the tool from siblings like get_dividend_distributions, which likely returns actual dividend payments rather than yield.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives (e.g., get_dividend_distributions for actual distributions, or get_fundamentals_daily_metrics for other metrics). No explicit context or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_end_of_day_pricesB

Fetches End-of-Day prices for a given ticker symbol with optional date range and format.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol of the asset
endDateNoEnd date in YYYY-MM-DD format (optional)
startDateNoStart date in YYYY-MM-DD format (optional)
resampleFreqNoResample frequency (e.g., daily, monthly)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states 'Fetches', implying read-only but lacks details on data freshness, error handling, authentication, or what happens with invalid tickers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no redundant information; front-loaded key action and parameters efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple fetch tool with good schema coverage, but lacks output specification (e.g., returns array of price objects) and could be more complete given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters with descriptions. The description adds 'optional date range and format' but 'format' maps loosely to resampleFreq; marginal value added beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches end-of-day prices for a ticker with optional date range and resample frequency. It distinguishes from sibling tools like get_dividend_yield or get_forex_prices, though 'format' is vague and not directly a parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus siblings like get_dividend_distributions or get_splits. No scenarios, prerequisites, or exclusion criteria are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forex_pricesB

Fetches historical intraday Forex prices for a given ticker symbol with optional date range and frequency.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesForex ticker symbol (e.g., EURUSD)
endDateNoEnd date in YYYY-MM-DD format (optional)
startDateNoStart date in YYYY-MM-DD format (optional)
resampleFreqNoResample frequency (e.g., 5min, 1day)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states the tool fetches data, without mentioning rate limits, data sources, error handling, or default behavior if parameters are omitted. For a read tool, it lacks details on what 'historical intraday' entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is front-loaded and efficiently communicates the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does not explain what the returned data looks like (e.g., OHLC, bid/ask, timestamps). It also doesn't clarify the relationship with siblings like get_end_of_day_prices. This lack of return structure information makes it incomplete for a 4-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents all parameters. The description adds overall context ('historical intraday') but does not provide additional meaning for individual parameters beyond what the schema states. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches historical intraday Forex prices for a given ticker with optional date range and frequency. This specific verb and resource distinguish it from sibling tools like get_forex_top_of_book (current top-of-book) and get_end_of_day_prices (end-of-day, not intraday).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for historical intraday forex data but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. It lacks context like 'use this when you need intraday price history'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forex_top_of_bookC

Fetches real-time Forex Top-of-Book/Last data for one or more ticker symbols.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerNoForex ticker symbol (e.g., EURUSD)
tickersNoComma-separated Forex ticker symbols (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states the tool fetches real-time data, but does not disclose behavioral traits such as data freshness, refresh rate, error handling, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded with key information. No superfluous words. Could benefit from slight expansion, but currently efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool with two parameters and no output schema, but lacks details on return format, error conditions, or real-time nature beyond a single word.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds minimal value beyond schema, only implying support for single or multiple tickers via 'one or more ticker symbols'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it fetches real-time Forex Top-of-Book/Last data for one or more ticker symbols, using specific verb 'fetches' and resource 'real-time Forex Top-of-Book/Last data'. However, it does not explicitly distinguish from sibling tools like get_forex_prices or get_end_of_day_prices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_forex_prices for historical data). No mention of prerequisites, limitations, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundamentals_daily_metricsB

Fetches daily fundamental metrics for a given ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol of the asset
columnsNoComma-separated list of columns/metrics to return (optional)
endDateNoEnd date in YYYY-MM-DD format (optional)
startDateNoStart date in YYYY-MM-DD format (optional)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must convey behavioral traits. 'Fetches' implies a read-only operation, which is sufficient for a non-destructive tool. However, it does not disclose any rate limits, data latency, or output characteristics, leaving some ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is concise and front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is too minimal for an agent to fully understand the tool's behavior. It does not explain the return format, possible data sources, or limitations, making it incomplete for a tool with 4 parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters have descriptions in the schema. The tool description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches daily fundamental metrics for a given ticker. It uses a specific verb and resource, which distinguishes it from sibling tools like get_fundamentals_statements (which likely fetches periodic statements). However, it does not explicitly highlight the differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as get_fundamentals_statements or get_end_of_day_prices. The description lacks context about appropriate use cases or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundamentals_definitionsA

Fetches available fundamental metrics and their definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states it 'fetches' definitions, which is safe and idempotent, but does not disclose any rate limits, authentication needs, or return format. For a zero-parameter tool, the behavioral expectations are minimal, so a 3 is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded and concise, fitting the purpose without elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, no output schema, and no annotations, the description is minimal but covers the essential purpose. However, it lacks any context about the scope of 'available fundamental metrics' or how the definitions are structured, which could leave an agent uncertain about the output's nature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, and the schema coverage is 100% (trivially). Per rubric, 0 parameters gets a baseline of 4. The description adds no parameter info, but none is needed since there are no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Fetches available fundamental metrics and their definitions' clearly states the action (fetches) and the resource (fundamental metrics and definitions). It distinguishes this tool from siblings like 'get_fundamentals_statements' or 'get_dividend_yield' which fetch specific data, making it clear this is a reference/definitions tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, typical use cases, or exclude any scenarios. Without this, an agent might misuse it by expecting real-time data instead of definitions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundamentals_metaC

Fetches fundamental meta data for companies.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully convey behavioral traits. It only implies a read operation ('Fetches'), but omits details like authentication requirements, data scope, or potential latency. The description is minimally informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no extraneous words. However, it is under-specified and could include more context without becoming verbose, balancing conciseness with informativeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and parameters, the description should provide fuller context about what 'fundamental meta data' means and how it relates to sibling tools. It does not, leaving the agent uncertain about the tool's purpose and output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage (none). The description adds no parameter-specific meaning, but since there are none, the description is the sole source of intent. It is adequate but does not enrich beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Fetches fundamental meta data for companies,' which is a verb+resource but vague. It does not specify what 'meta data' includes, leaving ambiguity. It distinguishes from siblings like get_fundamentals_statements or get_fundamentals_definitions only implicitly, lacking specificity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the many related sibling tools (e.g., get_fundamentals_definitions, get_fundamentals_daily_metrics). There are no usage conditions or alternatives mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_fundamentals_statementsA

Fetches historical fundamental statement data (Balance Sheet, Income Statement, Cash Flow, Overview) for a given ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiscal year (optional)
tickerYesTicker symbol of the asset
endDateNoEnd date in YYYY-MM-DD format (optional)
quarterNoFiscal quarter (1-4, 0 for annual, optional)
startDateNoStart date in YYYY-MM-DD format (optional)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions 'historical' and statement types but does not disclose behavioral traits such as rate limits, authentication needs, error handling, or response format. Partial coverage but insufficient for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence that front-loads the verb and resource. No wasted words, but could benefit from additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, no output schema, and no annotations, the description is relatively complete in stating the data fetched. However, it does not explain parameter usage patterns (e.g., date vs year/quarter) or output structure. Missing output schema means description should provide more guidance on what is returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond listing the statement types. Baseline of 3 is appropriate as description provides marginal additional value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Fetches', resource 'historical fundamental statement data', and specifies the types (Balance Sheet, Income Statement, Cash Flow, Overview). It distinguishes from sibling tools like get_fundamentals_daily_metrics which focus on daily metrics rather than statements.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage for fundamental statements but does not explicitly state when to use or avoid it. No mention of alternatives like get_fundamentals_meta or get_fundamentals_definitions for metadata or definitions. Lacks context on when to choose this over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_newsC

Fetches news articles from Tiingo with various filtering options.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoComma-separated tags (optional)
limitNoMaximum number of articles to return (optional)
sortByNoSort by publishedDate or crawlDate (optional)
topicsNoComma-separated topics (optional)
endDateNoEnd date in YYYY-MM-DD format (optional)
sourcesNoComma-separated news sources (optional)
tickersNoComma-separated ticker symbols (optional)
countriesNoComma-separated country codes (optional)
sortOrderNoSort order (asc or desc, optional)
startDateNoStart date in YYYY-MM-DD format (optional)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose behavioral traits such as rate limits, data freshness, pagination behavior (beyond 'limit' parameter), or authentication needs. The phrase 'various filtering options' is vague and insufficient for understanding the tool's side effects or constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently communicates the core purpose. It is front-loaded and contains no redundant information. However, it could be slightly more structured to improve scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 10 optional parameters and no output schema, the description is too minimal. It does not explain default behavior, what happens when no filters are applied, or the expected output format. A more complete description is needed for a tool with this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with clear descriptions for all 10 parameters. The description adds no further meaning beyond 'various filtering options,' which is generic. Baseline 3 is appropriate since the schema already does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches news articles from Tiingo with filtering options, making the purpose evident. While it distinguishes from sibling tools like price or dividend tools, it does not explicitly differentiate among similar news retrieval tools if any exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives or when not to use it. The description lacks context about prerequisites or typical use cases, leaving the agent to infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_splitsA

Fetches historical split data for a given ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesTicker symbol of the asset
endExDateNoEnd ex-date in YYYY-MM-DD format (optional)
startExDateNoStart ex-date in YYYY-MM-DD format (optional)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears full responsibility. It declares a read operation but does not disclose potential rate limits, data freshness, or output format. Basic transparency is present but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no extraneous words. It efficiently conveys the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a simple input schema, the description is somewhat adequate but omits details about the return structure (e.g., date, ratio). It could be more complete for a tool that returns data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with descriptions for all three parameters. The description adds no extra meaning beyond 'fetches historical split data', so it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches historical split data for a given ticker, using a specific verb and resource. It distinguishes itself from sibling tools that cover dividends, prices, forex, and fundamentals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_dividend_distributions or get_end_of_day_prices. There is no mention of prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct type of financial data (dividends, yield, end-of-day prices, forex, fundamentals, news, splits) with clear boundaries. Even the fundamental tools are differentiated by purpose (daily metrics, definitions, meta, statements).

Naming Consistency5/5

All tools follow the consistent pattern 'get_<data_type>' using snake_case. The naming is predictable and uniform across the entire tool set.

Tool Count4/5

With 11 tools, the count is appropriate for a financial data server. It covers multiple asset classes and data types without being excessive, though some users might expect a few more data retrieval endpoints.

Completeness4/5

The server covers a broad range of stock-related data (dividends, prices, fundamentals, news, splits) but lacks intraday or real-time stock prices (only forex has real-time data). It is mostly complete for historical and fundamental data.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    This is an MCP server that provides access to the Alpha Vantage API, allowing stock data retrieval to be used as context to LLMs.
    2
    24
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that integrates with the AlphaVantage financial data API, providing access to stock market data, technical indicators, and fundamental financial information.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that wraps the Tiingo financial data API, enabling access to stocks, forex, crypto, news, fundamentals, and corporate actions through natural language.
    17
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JesusRS1/stock-trade-finance-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server