Skip to main content
Glama

Fair Value Calculator

Compare stocks

compare_stocks
Read-onlyIdempotent

Compare up to 5 stocks side by side with Fair Value Calculator values (Free: first 2 stocks as snapshots, further symbols are listed in not_compared; Pro: up to 5 with fair values). Use it for "which is better valued" questions about named stocks. Fields: valuation_status (undervalued = price at least 10% below fair value, overvalued = price at least 10% above fair value, else near_fair_value; no_valuation = covered, but no fair value is shown right now, note says why), upside_band (distance from price to fair value in 10-point bands, e.g. "10_to_20", "above_30", "below_-30"), quality_score (0-100 business quality), evidence_level (how much audited data backs the value), price_as_of (date of the share price the valuation status refers to), calculated_at (date the valuation models last ran for this stock), requested_symbol with listing = other_listing_same_company (present when the answer is about another listing of the same company than the symbol asked for, the listing the website shows for it, e.g. 939.HK answered with the Shanghai listing 601939.SHG; fair value and currency refer to the listing in symbol), deep_link (full analysis page on fairvalue-calculator.com with the fair value history chart and the result of each valuation model with its bear, base and bull case), trend12 (uptrend: true when the price one month ago was higher than twelve months ago, false when not, null when not known), trend12_pct (that change in percent), trend_arrow (arrow on the site: up = rising, sideways = sideways down to -10 percent, down = falling), buy_rules (the three buy rules of the Fair Value Calculator strategy, each true, false or null: fair_value = fair value upside of at least fair_value_min_pct percent, quality = quality score of at least quality_min, measured as in the backtest without the AI Quality points, trend = uptrend, all = all three met; quality_rule = the quality score the rule decided on, present only when it decides differently from quality_score; upside_rule = the fair value upside in percent the rule decided on (fair value before the cycle and dilution adjustment), present only when it decides differently from the shown upside; the strategy only buys stocks with all three), fair_value_adjustment (present together with upside_rule: the shown fair value was adjusted after the model blend, the buy rule decides on the value before; reason = cyclical_peak_year (a record profit year of a cyclical business is not carried forward in full), cyclical_trough_year (a weak year of a cyclical business is not carried forward in full), dilution_new_shares (new shares lower the value per share) or adjusted; before and now = the fair value before the adjustment and the shown fair value, only where the fair value itself is shown), fair_value_last_change (only in the verdict, present when the shown fair value changed by 15 percent or more within the last 30 days: date, before and after (the shown fair value before and right after that change; the current value is fair_value) and reason = new_fiscal_year_figures (the figures of fiscal_year arrived and the value was recalculated from them), cyclical_peak_year, cyclical_trough_year or dilution_new_shares (that adjustment started to apply on this date), calculation_update (an updated calculation went live for all stocks on this date, nothing happened at the company itself) or not_recorded (no cause is on record)). The values are calculated by Fair Value Calculator from its own models and cannot be derived from the other fields; deep_link opens the full analysis page with the fair value history chart and every valuation model. This is a valuation, not financial advice.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "symbols": "<symbols>"
    },
    "name": "compare_stocks"
  }
}

Input Schema

NameRequiredDescriptionDefault
symbolsYesUp to 5 symbols, e.g. ["AAPL.US","MSFT.US"].
request_idNoOptional: stable id for this call; a retry with the same id is not counted twice.
analysis_session_idNoOptional: reuse the same id for all tool calls that answer ONE user question, so they count once against the daily limit. Exception: for free accounts every different stock in get_stock_verdict counts once a day, whatever id is sent.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / analysis_session_id / description
      Previous value: -"Optional: reuse the same id for all tool calls that answer ONE user question, so they count once against the daily limit."New value: +"Optional: reuse the same id for all tool calls that answer ONE user question, so they count once against the daily limit. Exception: for free accounts every different stock in get_stock_verdict counts once a day, whatever id is sent."
  2. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context beyond that: Free versus Pro quotas, how extra symbols appear in not_compared, model provenance, and the fact that values cannot be derived from other fields. It does not cover auth, rate limits, or error handling in the description itself.

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 first two sentences are well front-loaded with purpose, limits, and use case. However, the 'Fields:' block is a massive semicolon-separated paragraph with nested parentheticals and some repetition, making it hard to scan despite the relevance of the content.

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?

There is no output schema, and the description compensates by defining the important return fields, plan limits, related-listing caveats, and the deep_link behavior. For a read-only comparison tool with annotated safety, this is complete enough for an agent to call and interpret results.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description reinforces the 'up to 5' symbol limit but adds no meaning for request_id or analysis_session_id beyond what the schema already documents.

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 and resource: 'Compare up to 5 stocks side by side with Fair Value Calculator values.' The use-case sentence, 'which is better valued questions about named stocks,' clearly frames it as a multi-stock comparison tool rather than a single-stock or screening tool.

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

Usage Guidelines4/5

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

Explicitly says to use it for 'which is better valued' questions about named stocks and explains Free versus Pro comparison limits. It does not name a sibling alternative or a when-not-to-use condition, so it falls short of a 5.

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.