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

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "result": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "result"
      -  ],
      -  "type": "object",
      -  "x-fastmcp-wrap-result": true
      -}New value: +null
  2. Changed2 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • removedOutput schema / description
      Removed value: -"Generic wrapper for non-object return types."
  3. 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"
      -}
  4. 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"
  5. Changed1 schema field changed
    • addedOutput schema / description
      Added value: +"Generic wrapper for non-object return types."
  6. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious behavior: a mandatory two-step prerequisite chain and composability with other workflow tools. It does not say what the tool actually returns or how the loaded workflow is consumed, so it falls just short of a 5.

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?

Front-loads what it loads, then the hard prerequisite, then the invocation triggers. The trigger enumeration is long but each item ('earnings quality', 'debt levels', 'is X a good buy') maps to a real user phrasing rather than padding, so the length is mostly earned.

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?

For a parameterless, annotation-covered workflow loader with no output schema, the description supplies the three things an agent actually needs: what it loads, the mandatory prerequisite order, and when to invoke it relative to writing SQL. Nothing required for correct invocation is missing.

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?

The tool takes zero parameters (additionalProperties: false), so there is no parameter semantics to document; the baseline for a parameterless tool is 4. Nothing in the description misleads about inputs.

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?

States a specific verb ('Load') on a specific resource ('fundamental workflow') and enumerates the analytic domains it covers (valuation, cash flow, margins, balance sheet). The domain list is what separates it from load_earnings_workflow, load_technical_workflow, and load_comparison_workflow without the agent needing to open any schema.

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?

Gives explicit ordering prerequisites ('REQUIRES get_database_schema then get_query_patterns ... in that order') and an explicit trigger condition ('Call BEFORE writing SQL when the user asks about ...'). It also names the sibling tools it depends on and states it can be combined with other workflow tools, leaving nothing to inference.

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.

Resources