Skip to main content
Glama

Fundamental Analysis Workflow

load_fundamental_workflow
Read-onlyIdempotent

Load fundamental workflow for valuation, cash flow, margins, balance sheet. REQUIRES get_database_schema then get_query_patterns to be called first (in that order). Call BEFORE writing SQL when the user asks about company valuation, "is X a good buy", financial health, debt levels, profitability ratios, revenue trends, earnings quality, or any deep-dive company analysis. Can be combined with other workflow tools.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • removedInput schema / properties / _content
      Removed value: -{
      -  "default": "## Fundamental Analysis Workflow\n\n### Persona\nYou are a senior equity research analyst. Your analysis should be\nstructured, evidence-based, and balanced. Lead with conclusions,\nsupport with data, and always note limitations and risks.\n\n### Workflow (follow in order)\n1. **Identify**: Look up symbol via general_info. Note gics_sector,\n   gics_industry_group, gics_industry, full_time_employees, ipo_date.\n2. **Current Snapshot**: Pull latest valuation (daily) + latest\n   fundamentals_quarterly for pe_ratio,\n   profit_margin, return_on_equity, market_cap.\n3. **Financial Trends** (last 8 quarters from `fundamentals_quarterly`):\n   - Revenue + margin trajectory\n   - Balance sheet health: current_ratio, debt_to_equity, cash_and_equivalents\n   - Cash flow: operating_cash_flow, free_cash_flow, capex intensity, stock_based_compensation as % of revenue\n   - Profitability: return_on_invested_capital from fundamentals_derived_quarterly\n4. **Earnings Quality**:\n   - EPS surprise history (earnings_quarterly, last 4-8 quarters)\n   - Revenue growth vs earnings growth (divergence = red flag)\n   - SBC relative to net income (>50% = dilution concern)\n5. **Peer Comparison**:\n   - Find 3-5 peers in same gics_industry (or gics_industry_group) with similar market cap\n   - Compare: P/E, profit margin, return_on_equity, revenue growth, FCF yield\n   - Use sector benchmark pattern (P9) for context\n6. **Valuation Assessment**:\n   - P/E vs peers and sector average (from valuation table)\n   - EV/EBITDA vs peers (from fundamentals_derived_daily)\n   - PEG ratio if available (peg_ratio from valuation)\n   - Note: this data cannot produce a DCF - no forward estimates\n     beyond 1-year EPS. Be honest about this limitation.\n\n### Output Format\nStructure your response as:\n- **Summary** (2-3 sentences: bull case, bear case, overall lean)\n- **Key Metrics** (inline markdown table)\n- **Financial Trends** (what direction are revenues, margins, cash flow heading)\n- **Peer Context** (where does this company sit vs competitors)\n- **Risks & Limitations** (data gaps, staleness, what you can't assess)\n\n### Advanced Query Patterns\n\n#### F1: Quarterly financial trend with YoY and QoQ growth\n```sql\nWITH quarterly AS (\n  SELECT symbol, date, revenue, gross_profit, net_income, operating_income, research_and_development, ebitda,\n    LAG(revenue, 1) OVER (PARTITION BY symbol ORDER BY date) AS prev_q_rev,\n    LAG(revenue, 4) OVER (PARTITION BY symbol ORDER BY date) AS yoy_rev\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n    AND revenue IS NOT NULL\n)\nSELECT date, revenue, gross_profit, net_income,\n  ROUND(gross_profit / NULLIF(revenue, 0) * 100, 1) AS gross_margin_pct,\n  ROUND(net_income / NULLIF(revenue, 0) * 100, 1) AS net_margin_pct,\n  ROUND(research_and_development / NULLIF(revenue, 0) * 100, 1) AS rd_pct,\n  ROUND((revenue - prev_q_rev) / NULLIF(prev_q_rev, 0) * 100, 1) AS qoq_pct,\n  ROUND((revenue - yoy_rev) / NULLIF(yoy_rev, 0) * 100, 1) AS yoy_pct\nFROM quarterly WHERE prev_q_rev IS NOT NULL\nORDER BY date DESC LIMIT 12\n```\n\n#### F2: Cash flow quality assessment\n```sql\nWITH q AS (\n  SELECT symbol, date,\n    operating_cash_flow, capex, free_cash_flow, stock_based_compensation, ABS(dividends_paid) AS dividends,\n    net_income, revenue,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT date, operating_cash_flow, free_cash_flow, capex, stock_based_compensation, dividends, net_income,\n  ROUND(operating_cash_flow / NULLIF(net_income, 0), 2) AS cf_to_earnings_ratio,\n  ROUND(stock_based_compensation / NULLIF(revenue, 0) * 100, 1) AS sbc_pct_of_revenue,\n  ROUND(ABS(capex) / NULLIF(operating_cash_flow, 0) * 100, 1) AS capex_intensity_pct\nFROM q WHERE rn <= 8\nORDER BY date DESC LIMIT 8\n```\n\n#### F3: Peer comparison (same GICS industry, similar size)\n```sql\nWITH target AS (\n  SELECT g.gics_industry, v.market_cap\n  FROM shibui.general_info g\n  INNER JOIN (SELECT symbol, market_cap, ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn FROM shibui.valuation WHERE date >= CURRENT_DATE - INTERVAL '7 days') v ON g.symbol = v.symbol AND v.rn = 1\n  WHERE g.symbol = 'AAPL.NASDAQ'\n),\nlatest_q AS (\n  SELECT symbol, return_on_equity, profit_margin, revenue_growth_yoy,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE date >= CURRENT_DATE - INTERVAL '6 months'\n),\nlatest_val AS (\n  SELECT symbol, market_cap, pe_ratio,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.valuation WHERE date >= CURRENT_DATE - INTERVAL '7 days'\n),\nlatest_dd AS (\n  SELECT symbol, ev_ebitda, dividend_yield,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_derived_daily WHERE date >= CURRENT_DATE - INTERVAL '7 days'\n)\nSELECT g.symbol, g.name, g.gics_industry,\n  ROUND(v.market_cap / 1e9, 1) AS market_cap_bln,\n  ROUND(v.pe_ratio, 2) AS pe,\n  ROUND(f.profit_margin * 100, 1) AS margin_pct,\n  ROUND(f.return_on_equity * 100, 1) AS roe_pct,\n  ROUND(f.revenue_growth_yoy * 100, 1) AS rev_growth_pct,\n  ROUND(dd.ev_ebitda, 2) AS ev_ebitda\nFROM shibui.general_info g\nINNER JOIN latest_val v ON g.symbol = v.symbol AND v.rn = 1\nINNER JOIN latest_q f ON g.symbol = f.symbol AND f.rn = 1\nLEFT JOIN latest_dd dd ON g.symbol = dd.symbol AND dd.rn = 1\nCROSS JOIN target t\nWHERE g.gics_industry = t.gics_industry\n  AND g.type = 'Common Stock'\n  AND v.market_cap > t.market_cap * 0.1\nORDER BY v.market_cap DESC LIMIT 15\n```\n\n#### F4: Balance sheet health over time\n```sql\nWITH bs AS (\n  SELECT symbol, date,\n    current_assets, current_liabilities, current_ratio,\n    total_assets, total_liabilities, equity, debt,\n    cash_and_equivalents, debt_to_equity,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT date,\n  ROUND(current_ratio, 2) AS current_ratio,\n  ROUND(debt_to_equity, 2) AS debt_to_equity,\n  cash_and_equivalents, debt,\n  equity\nFROM bs WHERE rn <= 8\nORDER BY date DESC LIMIT 8\n```\n",
      -  "type": "string"
      -}
  2. Changed1 schema field changed
    • changedInput schema / properties / _content / default
      Previous value: -"## Fundamental Analysis Workflow\n\n### Persona\nYou are a senior equity research analyst. Your analysis should be\nstructured, evidence-based, and balanced. Lead with conclusions,\nsupport with data, and always note limitations and risks.\n\n### Workflow (follow in order)\n1. **Identify**: Look up symbol via general_info. Note gic_sector,\n   gic_sub_industry, full_time_employees, ipo_date.\n2. **Current Snapshot**: Pull highlights + valuation + share_stats\n   for the symbol. Note pe_ratio, profit_margin, roe, market_cap.\n3. **Financial Trends** (last 8 quarters):\n   - Revenue + margin trajectory (income_statement_quarterly)\n   - Balance sheet health: current ratio, debt/equity, cash position\n   - Cash flow: operating CF, FCF, capex intensity, SBC as % of revenue\n4. **Earnings Quality**:\n   - EPS surprise history (earnings_quarterly, last 4-8 quarters)\n   - Revenue growth vs earnings growth (divergence = red flag)\n   - SBC relative to net income (>50% = dilution concern)\n5. **Peer Comparison**:\n   - Find 3-5 peers in same gic_sub_industry with similar market cap\n   - Compare: P/E, profit margin, ROE, revenue growth, FCF yield\n   - Use sector benchmark pattern (P9) for context\n6. **Valuation Assessment**:\n   - P/E vs peers and sector average\n   - EV/EBITDA vs peers (from valuation table)\n   - PEG ratio if available\n   - Note: this data cannot produce a DCF — no forward estimates\n     beyond 1-year EPS. Be honest about this limitation.\n\n### Output Format\nStructure your response as:\n- **Summary** (2-3 sentences: bull case, bear case, overall lean)\n- **Key Metrics** (inline markdown table)\n- **Financial Trends** (what direction are revenues, margins, cash flow heading)\n- **Peer Context** (where does this company sit vs competitors)\n- **Risks & Limitations** (data gaps, staleness, what you can't assess)\n\n### Advanced Query Patterns\n\n#### F1: Quarterly financial trend with YoY and QoQ growth\n```sql\nWITH quarterly AS (\n  SELECT symbol, date, total_revenue, gross_profit, net_income,\n    operating_income, research_development, ebitda,\n    LAG(total_revenue, 1) OVER (PARTITION BY symbol ORDER BY date) AS prev_q_rev,\n    LAG(total_revenue, 4) OVER (PARTITION BY symbol ORDER BY date) AS yoy_rev\n  FROM shibui.income_statement_quarterly\n  WHERE symbol = 'AAPL.NASDAQ' AND date >= CURRENT_DATE - INTERVAL '3 years'\n    AND total_revenue IS NOT NULL\n)\nSELECT date,\n  total_revenue, gross_profit, net_income,\n  ROUND(gross_profit / NULLIF(total_revenue, 0) * 100, 1) AS gross_margin_pct,\n  ROUND(net_income / NULLIF(total_revenue, 0) * 100, 1) AS net_margin_pct,\n  ROUND(research_development / NULLIF(total_revenue, 0) * 100, 1) AS rd_pct,\n  ROUND((total_revenue - prev_q_rev) / NULLIF(prev_q_rev, 0) * 100, 1) AS qoq_pct,\n  ROUND((total_revenue - yoy_rev) / NULLIF(yoy_rev, 0) * 100, 1) AS yoy_pct\nFROM quarterly WHERE prev_q_rev IS NOT NULL\nORDER BY date DESC LIMIT 12\n```\n\n#### F2: Cash flow quality assessment\n```sql\nWITH cf AS (\n  SELECT symbol, date,\n    total_cash_from_operating_activities AS op_cf,\n    capital_expenditures AS capex,\n    free_cash_flow AS fcf,\n    stock_based_compensation AS sbc,\n    dividends_paid,\n    net_borrowings,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.cash_flow_quarterly\n  WHERE symbol = 'AAPL.NASDAQ' AND date >= CURRENT_DATE - INTERVAL '3 years'\n),\ninc AS (\n  SELECT symbol, date, net_income, total_revenue\n  FROM shibui.income_statement_quarterly\n  WHERE symbol = 'AAPL.NASDAQ' AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT cf.date, cf.op_cf, cf.fcf, cf.capex, cf.sbc,\n  inc.net_income,\n  ROUND(cf.op_cf / NULLIF(inc.net_income, 0), 2) AS cf_to_earnings_ratio,\n  ROUND(cf.sbc / NULLIF(inc.total_revenue, 0) * 100, 1) AS sbc_pct_of_revenue,\n  ROUND(ABS(cf.capex) / NULLIF(cf.op_cf, 0) * 100, 1) AS capex_intensity_pct\nFROM cf\nINNER JOIN inc ON cf.symbol = inc.symbol AND cf.date = inc.date\nWHERE cf.rn <= 8\nORDER BY cf.date DESC LIMIT 8\n```\n\n#### F3: Peer comparison (same sub-industry, similar size)\n```sql\nWITH target AS (\n  SELECT g.gic_sub_industry, h.market_capitalization_mln\n  FROM shibui.general_info g\n  INNER JOIN shibui.highlights h ON g.symbol = h.symbol\n  WHERE g.symbol = 'AAPL.NASDAQ'\n)\nSELECT g.symbol, g.name, g.gic_sub_industry,\n  h.market_capitalization_mln,\n  ROUND(h.pe_ratio, 2) AS pe,\n  ROUND(h.profit_margin * 100, 1) AS margin_pct,\n  ROUND(h.return_on_equity_ttm * 100, 1) AS roe_pct,\n  ROUND(h.quarterly_revenue_growth_yoy * 100, 1) AS rev_growth_pct,\n  v.enterprise_value_ebitda AS ev_ebitda\nFROM shibui.general_info g\nINNER JOIN shibui.highlights h ON g.symbol = h.symbol\nLEFT JOIN shibui.valuation v ON g.symbol = v.symbol\nCROSS JOIN target t\nWHERE g.gic_sub_industry = t.gic_sub_industry\n  AND g.type = 'Common Stock'\n  AND h.market_capitalization_mln > t.market_capitalization_mln * 0.1\nORDER BY h.market_capitalization_mln DESC LIMIT 15\n```\n\n#### F4: Balance sheet health over time\n```sql\nWITH bs AS (\n  SELECT symbol, date,\n    total_current_assets, total_current_liabilities,\n    cash_and_short_term_investments, total_liab,\n    total_stockholder_equity, long_term_debt, net_debt,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.balance_sheet_quarterly\n  WHERE symbol = 'AAPL.NASDAQ' AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT date,\n  ROUND(total_current_assets / NULLIF(total_current_liabilities, 0), 2) AS current_ratio,\n  ROUND(total_liab / NULLIF(total_stockholder_equity, 0), 2) AS debt_to_equity,\n  cash_and_short_term_investments AS cash_stinv,\n  long_term_debt, net_debt,\n  total_stockholder_equity\nFROM bs WHERE rn <= 8\nORDER BY date DESC LIMIT 8\n```\n"New value: +"## Fundamental Analysis Workflow\n\n### Persona\nYou are a senior equity research analyst. Your analysis should be\nstructured, evidence-based, and balanced. Lead with conclusions,\nsupport with data, and always note limitations and risks.\n\n### Workflow (follow in order)\n1. **Identify**: Look up symbol via general_info. Note gics_sector,\n   gics_industry_group, gics_industry, full_time_employees, ipo_date.\n2. **Current Snapshot**: Pull latest valuation (daily) + latest\n   fundamentals_quarterly for pe_ratio,\n   profit_margin, return_on_equity, market_cap.\n3. **Financial Trends** (last 8 quarters from `fundamentals_quarterly`):\n   - Revenue + margin trajectory\n   - Balance sheet health: current_ratio, debt_to_equity, cash_and_equivalents\n   - Cash flow: operating_cash_flow, free_cash_flow, capex intensity, stock_based_compensation as % of revenue\n   - Profitability: return_on_invested_capital from fundamentals_derived_quarterly\n4. **Earnings Quality**:\n   - EPS surprise history (earnings_quarterly, last 4-8 quarters)\n   - Revenue growth vs earnings growth (divergence = red flag)\n   - SBC relative to net income (>50% = dilution concern)\n5. **Peer Comparison**:\n   - Find 3-5 peers in same gics_industry (or gics_industry_group) with similar market cap\n   - Compare: P/E, profit margin, return_on_equity, revenue growth, FCF yield\n   - Use sector benchmark pattern (P9) for context\n6. **Valuation Assessment**:\n   - P/E vs peers and sector average (from valuation table)\n   - EV/EBITDA vs peers (from fundamentals_derived_daily)\n   - PEG ratio if available (peg_ratio from valuation)\n   - Note: this data cannot produce a DCF - no forward estimates\n     beyond 1-year EPS. Be honest about this limitation.\n\n### Output Format\nStructure your response as:\n- **Summary** (2-3 sentences: bull case, bear case, overall lean)\n- **Key Metrics** (inline markdown table)\n- **Financial Trends** (what direction are revenues, margins, cash flow heading)\n- **Peer Context** (where does this company sit vs competitors)\n- **Risks & Limitations** (data gaps, staleness, what you can't assess)\n\n### Advanced Query Patterns\n\n#### F1: Quarterly financial trend with YoY and QoQ growth\n```sql\nWITH quarterly AS (\n  SELECT symbol, date, revenue, gross_profit, net_income, operating_income, research_and_development, ebitda,\n    LAG(revenue, 1) OVER (PARTITION BY symbol ORDER BY date) AS prev_q_rev,\n    LAG(revenue, 4) OVER (PARTITION BY symbol ORDER BY date) AS yoy_rev\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n    AND revenue IS NOT NULL\n)\nSELECT date, revenue, gross_profit, net_income,\n  ROUND(gross_profit / NULLIF(revenue, 0) * 100, 1) AS gross_margin_pct,\n  ROUND(net_income / NULLIF(revenue, 0) * 100, 1) AS net_margin_pct,\n  ROUND(research_and_development / NULLIF(revenue, 0) * 100, 1) AS rd_pct,\n  ROUND((revenue - prev_q_rev) / NULLIF(prev_q_rev, 0) * 100, 1) AS qoq_pct,\n  ROUND((revenue - yoy_rev) / NULLIF(yoy_rev, 0) * 100, 1) AS yoy_pct\nFROM quarterly WHERE prev_q_rev IS NOT NULL\nORDER BY date DESC LIMIT 12\n```\n\n#### F2: Cash flow quality assessment\n```sql\nWITH q AS (\n  SELECT symbol, date,\n    operating_cash_flow, capex, free_cash_flow, stock_based_compensation, ABS(dividends_paid) AS dividends,\n    net_income, revenue,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT date, operating_cash_flow, free_cash_flow, capex, stock_based_compensation, dividends, net_income,\n  ROUND(operating_cash_flow / NULLIF(net_income, 0), 2) AS cf_to_earnings_ratio,\n  ROUND(stock_based_compensation / NULLIF(revenue, 0) * 100, 1) AS sbc_pct_of_revenue,\n  ROUND(ABS(capex) / NULLIF(operating_cash_flow, 0) * 100, 1) AS capex_intensity_pct\nFROM q WHERE rn <= 8\nORDER BY date DESC LIMIT 8\n```\n\n#### F3: Peer comparison (same GICS industry, similar size)\n```sql\nWITH target AS (\n  SELECT g.gics_industry, v.market_cap\n  FROM shibui.general_info g\n  INNER JOIN (SELECT symbol, market_cap, ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn FROM shibui.valuation WHERE date >= CURRENT_DATE - INTERVAL '7 days') v ON g.symbol = v.symbol AND v.rn = 1\n  WHERE g.symbol = 'AAPL.NASDAQ'\n),\nlatest_q AS (\n  SELECT symbol, return_on_equity, profit_margin, revenue_growth_yoy,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE date >= CURRENT_DATE - INTERVAL '6 months'\n),\nlatest_val AS (\n  SELECT symbol, market_cap, pe_ratio,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.valuation WHERE date >= CURRENT_DATE - INTERVAL '7 days'\n),\nlatest_dd AS (\n  SELECT symbol, ev_ebitda, dividend_yield,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_derived_daily WHERE date >= CURRENT_DATE - INTERVAL '7 days'\n)\nSELECT g.symbol, g.name, g.gics_industry,\n  ROUND(v.market_cap / 1e9, 1) AS market_cap_bln,\n  ROUND(v.pe_ratio, 2) AS pe,\n  ROUND(f.profit_margin * 100, 1) AS margin_pct,\n  ROUND(f.return_on_equity * 100, 1) AS roe_pct,\n  ROUND(f.revenue_growth_yoy * 100, 1) AS rev_growth_pct,\n  ROUND(dd.ev_ebitda, 2) AS ev_ebitda\nFROM shibui.general_info g\nINNER JOIN latest_val v ON g.symbol = v.symbol AND v.rn = 1\nINNER JOIN latest_q f ON g.symbol = f.symbol AND f.rn = 1\nLEFT JOIN latest_dd dd ON g.symbol = dd.symbol AND dd.rn = 1\nCROSS JOIN target t\nWHERE g.gics_industry = t.gics_industry\n  AND g.type = 'Common Stock'\n  AND v.market_cap > t.market_cap * 0.1\nORDER BY v.market_cap DESC LIMIT 15\n```\n\n#### F4: Balance sheet health over time\n```sql\nWITH bs AS (\n  SELECT symbol, date,\n    current_assets, current_liabilities, current_ratio,\n    total_assets, total_liabilities, equity, debt,\n    cash_and_equivalents, debt_to_equity,\n    ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY date DESC) AS rn\n  FROM shibui.fundamentals_quarterly\n  WHERE symbol = 'AAPL.NASDAQ'\n    AND date >= CURRENT_DATE - INTERVAL '3 years'\n)\nSELECT date,\n  ROUND(current_ratio, 2) AS current_ratio,\n  ROUND(debt_to_equity, 2) AS debt_to_equity,\n  cash_and_equivalents, debt,\n  equity\nFROM bs WHERE rn <= 8\nORDER BY date DESC LIMIT 8\n```\n"
  3. Changed1 schema field changed
    • addedOutput schema / description
      Added value: +"Generic wrapper for non-object return types."
  4. Added

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds meaningful behavioral context by requiring get_database_schema and get_query_patterns to be called first in order, and by stating it can be combined with other workflow tools. This exceeds the baseline for annotation-covered tools.

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?

Three sentences with front-loaded purpose, immediately followed by usage guidance and prerequisites. Every sentence contributes value; no redundancy or filler.

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

Completeness5/5

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

Covers what the workflow includes, when to use it, required prerequisites, and combinability with other tools. Since an output schema exists, the description need not explain return values. For a zero-parameter workflow loader, this description is fully complete.

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?

Tool has zero parameters, so the schema coverage is complete. The description adds no parameter details, but none are needed. With 0 parameters, the baseline score of 4 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's function: 'Load fundamental workflow for valuation, cash flow, margins, balance sheet.' This specific verb+resource pairing distinguishes it from sibling workflow tools like load_technical_workflow and load_earnings_workflow.

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

Usage Guidelines5/5

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

Provides explicit use cases ('when the user asks about company valuation, "is X a good buy", financial health...'), directs to call before writing SQL, specifies prerequisite order (get_database_schema then get_query_patterns), and notes combinability with other workflows. This is thorough guidance for when to use this tool.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation4/5

Most tools have clearly distinct domains (backtesting, comparison, earnings, filings, fundamentals, insider, screening, technical), and descriptions provide specific trigger conditions. However, stock_data_query and export_to_excel are very similar (same query, different output), and some workflow boundaries overlap (e.g., earnings vs. fundamental both mention revenue trends; filing vs. insider both involve SEC documents).

Naming Consistency3/5

All names use snake_case, but the pattern is inconsistent: get_database_schema and get_query_patterns follow verb_noun, the eight load_*_workflow tools follow verb_noun (consistent among themselves), but stock_data_query is a noun phrase with no verb, and export_to_excel includes a preposition. The mixed conventions are still readable but not uniform.

Tool Count4/5

At 12 tools, the count is within the expected 3-15 range and appropriate for the broad scope of comprehensive stock analysis. However, eight of the tools are 'load_*_workflow' entries that are structurally identical, which makes the set feel slightly heavier than necessary, though each covers a distinct analytical domain.

Completeness5/5

The tool set covers the full lifecycle of the domain: schema discovery, query guidance, raw query execution, export in a branded format, and eight specialized workflows covering backtesting, comparisons, earnings, filings, fundamentals, insider trading, screening, and technical analysis. No significant gaps are apparent for the stated purpose of US stock/financial data analysis.

Resources