Skip to main content
Glama
Gratia2533

pipe-stock-analysis

by Gratia2533

Pipe Stock Analysis

Self-hostable, read-only financial-market MCP (Model Context Protocol, a standard for AI clients to invoke external tools) server for Taiwan-listed securities and global stocks. It retrieves market data and computes reproducible indicators; it does not make investment decisions or place trades.

繁體中文

Why this repository exists

Run your own instance. This project does not route other people to the maintainer's server, bundle API credentials, require OpenConnector, or require a hosted account.

  • The public default calls FinMind and Finnhub directly with credentials from your local .env.

  • FinMind is optional and supports anonymous access with lower limits. Finnhub-backed tools require your own API key.

  • Advanced deployments can select the OpenConnector adapter so this process holds only a narrow runtime token.

  • .env, OAuth state, private keys, SQLite databases, and generated credentials are ignored by Git.

Related MCP server: etfedge-mcp

Three-step self-hosting

# 1. Clone
git clone https://github.com/Gratia2533/pipe-stock-analysis.git && cd pipe-stock-analysis

# 2. Create local configuration; optionally add FINMIND_TOKEN / FINNHUB_API_KEY
cp .env.example .env

# 3. Start with the default Direct adapter on a standard Docker bridge network
docker compose up -d --build

To enter a Finnhub API key without exposing it in shell history, use the interactive helper and choose whether to restart the services:

./scripts/set-finnhub-key.sh

Verify both local services:

curl http://127.0.0.1:8010/healthz
curl http://127.0.0.1:8011/healthz
  • Internal MCP without OAuth: http://127.0.0.1:8010/mcp

  • OAuth-protected MCP: http://127.0.0.1:8011/mcp

Both endpoints are published only on 127.0.0.1. Keep port 8010 private; expose only port 8011 through a public HTTPS reverse proxy or tunnel.

Data backends

Direct (default)

DATA_BACKEND=direct
FINMIND_TOKEN=
FINNHUB_API_KEY=

The service starts without either optional credential, so TWSE, TPEx, MOPS, news, and deterministic analytics remain available. FinMind uses anonymous limits when its token is empty. A Finnhub tool reports a configuration error only when called without FINNHUB_API_KEY.

OpenConnector (advanced, Linux/WSL)

Use this mode when a dedicated OpenConnector already exposes the curated FinMind and Finnhub Actions. The advanced Compose injects only its runtime token; upstream credentials remain in OpenConnector's encrypted credential store. For fail-closed separation, FINMIND_TOKEN and FINNHUB_API_KEY must be unset in this mode.

DATA_BACKEND=openconnector
OPEN_CONNECTOR_BASE_URL=http://127.0.0.1:8001
OPEN_CONNECTOR_RUNTIME_TOKEN=your-local-runtime-token

Because a bridged container cannot reach a connector bound to host loopback, the advanced Compose file intentionally uses Linux/WSL host networking while both services remain bound to 127.0.0.1:

docker compose -f compose.openconnector.yaml up -d --build

Direct and OpenConnector modes use the same MCP tools and analytics code. OpenConnector is an adapter, not a separate branch or repository.

Tools

  • Historical prices with FinMind → TWSE fallback

  • Latest TWSE / TPEx official close quotes

  • TWSE market and sector indices, ETF rankings, listing/IPO pipeline, and trading calendar

  • Valuation, monthly revenue, institutional flows, financial reports, margin trading

  • MOPS material announcements and recent news

  • Deterministic technical, fundamental, financial-health, institutional-flow, and margin summaries

  • Finnhub global symbol search, quotes, candles, company profiles, financial metrics, reported statements, and company news

Local development

Requires Python 3.11+ and uv.

cp .env.example .env
uv sync --dev
set -a; source .env; set +a
MCP_TRANSPORT=streamable-http MCP_HOST=127.0.0.1 uv run finance-mcp

For stdio clients on the same host:

MCP_TRANSPORT=stdio uv run finance-mcp

Hermes configuration

For a local HTTP deployment:

hermes mcp add pipe-stock-analysis --url http://127.0.0.1:8010/mcp
hermes mcp test pipe-stock-analysis

For stdio, point your MCP client to uv run finance-mcp from this repository. Configure the command and its environment in your own local client configuration; never commit tokens into this repository.

Analysis skill

The reusable cross-market Hermes analysis workflow is included at skills/stock-analysis/SKILL.md. Install it directly from the raw GitHub URL:

hermes skills install https://raw.githubusercontent.com/Gratia2533/pipe-stock-analysis/main/skills/stock-analysis/SKILL.md

OAuth deployment

Compose starts a separate OAuth-protected instance on port 8011 while leaving the port 8010 instance available for trusted local clients. Set FINANCE_OAUTH_ISSUER_URL, FINANCE_OAUTH_RESOURCE_URL, FINANCE_OAUTH_USERNAME, and FINANCE_OAUTH_PASSWORD for the public deployment. OAuth runtime data is stored in a persistent private volume and excluded by .gitignore.

The issuer and resource URLs must use the same public HTTPS hostname that forwards to 127.0.0.1:8011. The default OAuth deployment is a single server process; keep it single-process because private_key_jwt assertion replay protection uses a process-local JTI cache. A multi-worker deployment would require a shared replay cache.

Verification

uv run ruff check .
uv run pytest -q

Scope and disclaimer

  • Read-only data and deterministic calculations only.

  • No orders, broker accounts, portfolio access, or personalized investment recommendations.

  • Data availability, latency, and accuracy depend on upstream providers. Verify material information independently.

  • This is software, not investment advice.

References and inspiration

  • FinMind: upstream open-source project behind the optional FinMind market-data integration. This repository does not vendor FinMind code or credentials.

  • Finnhub: optional upstream provider for global-stock data. Endpoint availability depends on the user's Finnhub plan.

  • TradingAgents: conceptual reference for role-based research workflows. This server deliberately keeps data retrieval and deterministic calculations separate from agent orchestration and investment decisions.

License

MIT

Available Tools

15 tools
analyze_taiwan_stock_financial_healthC

Summarize reported profitability, balance-sheet strength and cash generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_idYes
lookback_yearsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It only states the tool summarizes data, but does not mention that it is read-only, requires authentication, or is non-destructive. The agent cannot infer safety or performance traits.

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 sentence, which is concise but overly brief given the lack of supplementary information. It fits in length but sacrifices clarity on parameters and usage.

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?

Despite having an output schema, the description does not specify what the summary includes or how the lookback_years parameter affects results. Given the presence of similar sibling tools, more context is needed for the agent to choose correctly.

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

Parameters1/5

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

Schema coverage is 0%, meaning no descriptions for the two parameters. The tool description does not explain what stock_id (e.g., format) or lookback_years (e.g., how it affects the analysis) mean, leaving the agent without critical usage details.

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 summarizes profitability, balance-sheet strength, and cash generation, specifying the verb and resource. It distinguishes from siblings like get_taiwan_stock_financial_reports (raw data) and analyze_taiwan_stock_fundamental (broader analysis), though it could be more explicit.

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 its siblings, such as when a quick summary is preferred over detailed reports. The description lacks any conditions or exclusions.

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

analyze_taiwan_stock_fundamentalC

Summarize valuation and monthly-revenue growth without investment recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_idYes
revenue_lookback_monthsNo
valuation_lookback_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states that the tool summarizes without recommendations, which is minimal. It does not disclose whether it is read-only, requires special permissions, or has any side effects. For a tool with no annotations, more transparency is needed.

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 sentence, which is concise but lacks structure. It front-loads the purpose but omits any additional context. It is not verbose, but it could be improved by adding brief parameter explanation without being lengthy.

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 3 parameters and an output schema, the description is incomplete. It does not explain what the summary contains, how lookback periods affect results, or how to interpret the output. Even with an output schema, the description should provide high-level context about the analysis.

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

Parameters1/5

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

Schema description coverage is 0%, and the tool description does not explain any parameter semantics. It mentions 'valuation and monthly-revenue growth' but does not clarify how revenue_lookback_months or valuation_lookback_days affect the output. The default values are present but undeclared in meaning.

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 summarizes valuation and monthly-revenue growth without investment recommendations, which is a specific verb+resource pair. It distinguishes from sibling tools like analyze_taiwan_stock_technical or get_taiwan_stock_valuation by focusing on a combined summary without recommendations.

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 lacks explicit guidance on when to use this tool versus alternatives. It does not state prerequisites, exclude conditions, or mention sibling tools. For example, it does not clarify whether this should be used instead of get_taiwan_stock_valuation or analyze_taiwan_stock_financial_health.

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

analyze_taiwan_stock_institutional_flowsC

Aggregate institutional investor buy, sell and net volumes by investor type.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_idYes
lookback_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states it aggregates volumes but does not disclose any behavioral traits like data freshness, limitations, or whether it modifies data. Lacks detail on scope or side effects.

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 efficient and front-loaded. 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.

Completeness2/5

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

Given the tool has an output schema and 2 parameters, the description is minimal. It does not explain the output structure, data source, or typical use cases. For a tool with no annotations and low schema coverage, the description should provide more context.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the parameters 'stock_id' (format needed) or 'lookback_days' (meaning and valid range). The only hint is 'by investor type', but it does not map to 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?

Description clearly states the verb 'Aggregate' and the resource 'institutional investor buy, sell and net volumes' grouped by investor type. It distinguishes itself from sibling 'get_taiwan_stock_institutional_flows' which likely provides raw data, indicating a higher-level analysis.

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 explicit guidance on when to use this tool versus alternatives such as 'get_taiwan_stock_institutional_flows' or other analysis tools. The description implies aggregation but does not specify context or exclude other tools.

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

analyze_taiwan_stock_margin_tradingC

Summarize changes in margin-purchase and short-sale balances.

ParametersJSON Schema
NameRequiredDescriptionDefault
stock_idYes
lookback_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only says 'summarize changes' without detailing the aggregation method, time aspects, or any side effects, leaving significant behavioral ambiguity.

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 concise at one sentence, but it lacks crucial information that would make it earn its place; it is too sparse to be highly effective.

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 that the tool is analytical and has an output schema, the description fails to explain what the summary includes or how it relates to the sibling data retrieval tools, leaving the agent underinformed.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain either parameter (stock_id, lookback_days). The agent must infer their meaning from the schema alone, which is insufficient.

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 'summarize changes' and the resource 'margin-purchase and short-sale balances,' distinguishing it from the sibling 'get_taiwan_stock_margin_trading' which likely provides raw data.

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 that this tool is for summarizing changes rather than retrieving raw data, but it does not explicitly state when to use it versus alternatives like 'get_taiwan_stock_margin_trading'.

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

analyze_taiwan_stock_technicalC

Calculate deterministic trend, momentum, return and volatility metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoauto
stock_idYes
lookback_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the tool 'calculates' metrics, implying a read-only operation, but does not confirm idempotency, side effects, or authorization needs. Missing details about any destructive behavior or rate limits.

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 very concise at one sentence, but this brevity sacrifices informativeness. It could be restructured to front-load critical purpose and parameter context without excessive 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?

Given the tool has three parameters and zero annotations, the description is incomplete. It does not cover parameter semantics, usage context, or output details, despite the presence of an output schema.

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

Parameters1/5

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

The schema has 0% description coverage, yet the description fails to explain any of the three parameters (source, stock_id, lookback_days). The description adds no meaning beyond parameter names and types, leaving the agent without understanding their roles.

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 calculates deterministic trend, momentum, return, and volatility metrics. This distinct functionality differentiates it from sibling tools like analyze_taiwan_stock_financial_health or analyze_taiwan_stock_fundamental.

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 such as analyze_taiwan_stock_fundamental or get_taiwan_stock_prices. No context is given about prerequisites or typical use cases.

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

get_taiwan_stock_financial_reportsC

Get income statement, balance sheet and cash-flow rows for a Taiwan company.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It only states the basic read operation and types of data returned, but fails to disclose behaviors like date range handling, pagination, error conditions, or output schema details (though an output schema exists).

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 sentence of 12 words, which is concise but lacks structure. It doesn't use bullet points or sections to present information clearly, though it avoids unnecessary verbosity.

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 complexity of financial reports, the description is insufficient. It omits details on parameter usage, return format, and how to interpret results. The existence of an output schema helps, but the description should provide more operational context.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate. However, it provides no information about parameter formats (e.g., date format) or semantics beyond the property names. The agent is left guessing about valid date formats and the effect of end_date.

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 verb 'Get' and the three specific financial reports (income statement, balance sheet, cash-flow rows) for a Taiwan company. It differentiates from sibling tools that focus on analyses or other financial metrics like valuation or revenue, but does not explicitly contrast with them.

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 its siblings, such as analyze_taiwan_stock_financial_health or analyze_taiwan_stock_fundamental. There is no mention of prerequisites, data frequency, or typical use cases.

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

get_taiwan_stock_institutional_flowsC

Get institutional investor buy and sell volumes for a Taiwan stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description must disclose behavioral traits. It merely states the basic function without mentioning any constraints, side effects, data format, or pagination. The output schema exists but is not described here.

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?

Single sentence is concise, but at the expense of necessary detail. Could be restructured to include parameter hints or usage context without becoming verbose.

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 three parameters, zero schema descriptions, and no annotations, the description is insufficient for an agent to correctly invoke the tool. It omits critical context like date range semantics and expected input formats.

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

Parameters1/5

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

Schema description coverage is 0%, so the description should explain parameter meaning. It does not mention stock_id format, date format, or the role of start_date/end_date. The parameters are completely unexplained.

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 verb 'Get' and resource 'institutional investor buy and sell volumes for a Taiwan stock', making purpose obvious. However, it does not explicitly distinguish from the sibling tool 'analyze_taiwan_stock_institutional_flows', which may have overlapping functionality.

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. No mention of prerequisites, exclusions, or typical use cases. Agent must rely only on the tool name and siblings to infer context.

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

get_taiwan_stock_margin_tradingB

Get margin-purchase and short-sale balances for a Taiwan stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description should carry the full burden of behavioral disclosure. However, it only states what data is retrieved and does not mention any behavioral traits such as authentication needs, rate limits, data freshness, or whether the operation is read-only.

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 that efficiently conveys the tool's purpose with no extraneous words, making it highly concise and front-loaded.

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?

While the description captures the core purpose and an output schema exists, it lacks details on parameter formats, typical usage, or response structure. Given the simplicity of the tool, this might be minimally adequate but not complete.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the schema provides no descriptions for the three parameters. The tool description does not add any parameter-level context beyond what the parameter names imply (e.g., no format for dates).

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 uses the specific verb 'Get' and identifies the resource as 'margin-purchase and short-sale balances for a Taiwan stock', which is precise and clearly distinguishes this tool from its sibling tools like 'analyze_taiwan_stock_margin_trading'.

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 is straightforward and implies usage when margin balances are needed, but it does not explicitly state when to use this tool versus the analysis sibling, nor does it provide any context about prerequisites or limitations.

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

get_taiwan_stock_material_announcementsC

Get current MOPS announcements; announcement_date is the release date, not event date.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
marketNoauto
stock_idYes
include_detailsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only notes that announcement_date is the release date, not the event date. It does not disclose authentication needs, rate limits, what constitutes 'current', error handling, or potential side effects. For a tool with no annotations, this is insufficient.

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 very short (one sentence), but it is well-structured and free of fluff. However, it sacrifices essential information for brevity. It could be expanded to include more context without losing conciseness.

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 4 parameters, no annotations, and an output schema (though not described), the tool is not fully specified. The description does not explain what qualifies as a 'material announcement', how 'current' is defined in terms of time range, or whether pagination or filtering beyond the parameters is supported. The output schema exists but is not referenced, leaving the return format ambiguous.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description only explains the meaning of 'announcement_date' (which is not a parameter but a field in output). It provides no explanation for parameters like 'limit', 'market', 'stock_id', or 'include_details'. The defaults are not explained, nor are the enum values for 'market' clarified. The description adds minimal semantic value beyond the schema defaults.

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 'Get current MOPS announcements', which is a specific verb and resource (material announcements from Taiwan's MOPS). It adds a clarification about the meaning of announcement_date, helping disambiguate from event date. While it doesn't explicitly differentiate from siblings, the tool name and description imply it covers material announcements, distinct from other sibling tools like news or financial reports.

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, filters, or context for usage. The only usage hint is the date clarification, but no explicit when-to-use or when-not-to-use advice.

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

get_taiwan_stock_monthly_revenueC

Get historical monthly revenue for a Taiwan company.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the tool 'gets' data, implying a read operation, but provides no details on rate limits, data source freshness, date range handling, or whether results are cumulative. This is insufficiently transparent.

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

Conciseness2/5

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

While the description is a single sentence, it is too terse and omits critical information. True conciseness would include essential details without verbosity; here, the brevity results in under-specification.

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 3 parameters, no parameter descriptions, no annotations, and an output schema that is not detailed in the input, the description is incomplete. It fails to clarify input formats, date range behavior, or other contextual nuances needed for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no explanation for any parameter. It does not describe the expected format or constraints for stock_id, start_date, or end_date, leaving the agent to rely solely on parameter names.

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 action 'Get' and the resource 'historical monthly revenue' for a Taiwan company. It is specific and distinct from sibling tools that focus on other financial data like financial reports, margin trading, or 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 is provided on when to use this tool versus alternatives. There is no mention of typical use cases, prerequisites, or situations where another tool would be more appropriate.

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

get_taiwan_stock_newsB

Get up to 10 Taiwan-stock news items from Google News RSS with Yahoo fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNoauto
stock_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It reveals the fallback behavior and item limit, but omits details on error handling, rate limits, or behavior when sources fail.

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, front-loaded sentence with no wasted words, efficiently conveying the core action.

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 0% schema parameter coverage and no annotations, the description is too sparse. It does not explain the fallback logic, source options, or how to interpret results, though an output schema exists.

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

Parameters2/5

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

Schema coverage is 0%, so description should compensate. The description only hints at the 'limit' parameter ('up to 10'), but adds no meaning for 'stock_id' or 'source' beyond the schema.

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 action ('Get'), the resource ('Taiwan-stock news items'), and the source ('Google News RSS with Yahoo fallback'), effectively distinguishing it from sibling tools focused on financial analysis or other data.

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 retrieving news items, but does not explicitly state when to use this tool versus siblings, nor does it provide exclusions or alternatives.

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

get_taiwan_stock_official_quoteA

Get the latest official TWSE or TPEx close quote for a Taiwan security.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoauto
stock_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states it gets the latest official close quote but does not mention any behavioral traits like data freshness, authentication, or potential side effects. The presence of an output schema mitigates some return value uncertainty.

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 that conveys the core purpose without any extraneous information. It is well-structured and 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?

Given the tool's low complexity (2 parameters, output schema present), the description is somewhat complete but lacks context on what differentiates this from sibling tools like 'get_taiwan_stock_prices' and does not clarify the meaning of 'official' or market 'auto' behavior.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the property descriptions are empty. The tool description adds little beyond the schema: it mentions TWSE/TPEx (relating to 'market') and 'Taiwan security' (relating to 'stock_id') but does not explain the 'auto' default for market or provide any parameter-specific guidance.

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's purpose: 'Get the latest official TWSE or TPEx close quote for a Taiwan security.' It uses a specific verb-resource combination and distinguishes itself from siblings like 'get_taiwan_stock_prices' by emphasizing 'official close quote'.

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 obtaining official closing quotes but does not explicitly state when to use this tool versus alternatives, such as for intraday or historical quotes. No guidance on when not to use it.

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

get_taiwan_stock_pricesB

Get Taiwan stock prices with optional FinMind-to-TWSE fallback.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoauto
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Mentions fallback behavior ('FinMind-to-TWSE'), but doesn't elaborate on implications (e.g., latency, data differences). No annotations to provide safety/read hints.

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 packs essential purpose and unique feature. No wasted words.

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 4 parameters and no param documentation, the description leaves significant gaps (e.g., required parameters, data format). Output schema exists but description doesn't clarify return values or usage.

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

Parameters1/5

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

Schema coverage is 0% with no param descriptions. The tool description does not explain any parameter, such as source enum values or date formats. Fails to compensate for missing schema docs.

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 'Get Taiwan stock prices', specifying the resource and action. The fallback mechanism adds precise scope. This distinguishes it from sibling analysis tools.

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_taiwan_stock_official_quote or analysis tools. Lacks context for differentiation.

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

get_taiwan_stock_valuationC

Get historical PER, PBR and dividend-yield data for a Taiwan stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
stock_idYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It only states the tool gets historical data, but omits behavioral traits such as authentication requirements, rate limits, or whether the data is a snapshot or time series. This is insufficient for a mutation-free tool.

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 with 10 words, making it very concise. However, conciseness is achieved at the cost of missing important details. It is appropriately front-loaded but could be slightly expanded for clarity.

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 complexity (3 parameters, historical data request) and existence of sibling tools, the description is too short. It does not explain the output format, date handling, or any constraints, leaving the agent with insufficient information to correctly invoke the tool.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the description does not explain parameters. While stock_id is implied, start_date and end_date are not described regarding format or defaults. The description adds minimal value over the schema's property names.

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's function: retrieving historical PER, PBR, and dividend-yield data for a Taiwan stock. It uses a specific verb and resource, and distinguishes itself from sibling tools that focus on financial reports, revenue, or analysis.

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 like analyze_taiwan_stock_fundamental or get_taiwan_stock_financial_reports. No context on prerequisites or scenarios is given.

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

healthA

Return the Finance MCP service status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided; description only states 'service status' without disclosing behavioral aspects like authentication requirements, rate limits, or what the status payload includes.

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, front-loaded sentence with no extraneous information.

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

Completeness4/5

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

Given the tool's simplicity, zero parameters, and existence of an output schema, the description is nearly complete, though it omits specifics about the status format.

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?

Zero parameters with 100% schema coverage; no additional meaning needed beyond the schema.

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 verb 'Return' and resource 'Finance MCP service status', distinguishing it from data-specific sibling tools like analyze_taiwan_stock_* and get_taiwan_stock_*.

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?

Implied usage as a health check, but no explicit guidance on when to use (e.g., before other calls) or alternatives.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 15 tool updatesv0.1.0
    • First observedanalyze_taiwan_stock_financial_health
    • First observedanalyze_taiwan_stock_fundamental
    • First observedanalyze_taiwan_stock_institutional_flows
    • First observedanalyze_taiwan_stock_margin_trading
    • First observedanalyze_taiwan_stock_technical
    • First observedget_taiwan_stock_financial_reports
    • First observedget_taiwan_stock_institutional_flows
    • First observedget_taiwan_stock_margin_trading
    • First observedget_taiwan_stock_material_announcements
    • First observedget_taiwan_stock_monthly_revenue
    • First observedget_taiwan_stock_news
    • First observedget_taiwan_stock_official_quote
    • First observedget_taiwan_stock_prices
    • First observedget_taiwan_stock_valuation
    • First observedhealth

TDQS

B3.4/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct aspect of Taiwan stock analysis (financials, fundamentals, institutional flows, margin trading, technical, prices, etc.), with no overlapping purposes or ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_stock_aspect pattern, using either 'analyze' or 'get' as verbs, and 'taiwan_stock' as the noun prefix, with 'health' as a notable but clear exception.

Tool Count5/5

15 tools is well-scoped for a comprehensive stock analysis server, covering financial reporting, valuation, sentiment, technical analysis, and market data without being excessive.

Completeness5/5

The tool set covers the full lifecycle of stock analysis: raw data (prices, quotes, reports), derived metrics (valuation, financial health), and aggregate analyses (fundamental, institutional flows, technical, margin trading), with no obvious gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues

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
    C
    quality
    D
    maintenance
    Provides comprehensive Taiwan stock market data and analysis through MCP tools. Enables querying real-time stock prices, historical data, company information, technical analysis, and market overviews for TWSE and TPEx listed companies.
    8
    15
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server for Taiwan active ETF research database, providing tools to list ETFs, track buy/sell deltas, view stock history and PnL, and find consensus buys across ETFs.
    5
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An open-source MCP server that aggregates Taiwan public data sources (data.gov.tw, TWSE, MOEA, CWA, etc.) and exposes them through the Model Context Protocol, enabling AI agents to query Taiwan data with a single configuration line.
    1
    Apache 2.0

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/Gratia2533/pipe-stock-analysis'

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