Skip to main content
Glama

Get Company Score

get_market_summary
Read-onlyIdempotent

One company's latest nightly StockLens score: the composite score (0 to 100) and its rating word, the domain scores with their grade words, the named signals that most shaped the reading (up to three, each with its evidence), the business-model lens where one applies, and any domain that was not scored in it. Use the rating word for the company and grade words only for a domain. A higher Risk score means a stronger risk posture and less downside concern. Without an account, scores answer for the 600 largest companies by market value; a signed-in account also reaches any company in its own portfolios. A result with a status other than scored is an answer, not an error; do not retry it unchanged. Relay its message; not_in_surface means the company is scored and outside the caller's reach, never that StockLens has no analysis. Then act on next_step: for ask_user, ask the person and call the named tool only if they agree; mention an offer on a scored result at most once per conversation. Every result carries freshness; a stale result is StockLens's last computed reading for that listing, not last night's, and should be quoted with its date. When freshness.requested_ticker is present, say which listing was served and what was asked. If the person asks for factor values, peer context or ranked contributors beyond this snapshot, explain that a fresh analysis provides a saved web report with that evidence where available. It requires sign-in and may use an Analysis credit; ask whether they want one before calling initiate_analysis. A snapshot request alone is never permission to start a run. One ticker per call. To compare companies the person names, call it once for each. For any other top, best, worst or filtered request call discover_stocks, and never choose the companies for a ranking yourself.

Input Schema

NameRequiredDescriptionDefault
tickerYesStock ticker symbol (e.g. AAPL MSFT TSLA). Exactly one ticker per call.
exchangeNoExchange code (e.g. NASDAQ NYSE). Optional. Resolved automatically if omitted.

Output Schema

NameRequiredDescriptionDefault
lensNo
scopeYes
ratingNo
sectorNo
statusYes
tickerYes
messageNo
exchangeNo
industryNo
freshnessNo
next_stepNo
candidatesNo
key_driversNo
company_nameNo
analysis_dateNo
domain_scoresNo
config_contextNo
composite_scoreNo
domain_coverageNo
analysis_offeredNo
watchlist_offeredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / key_drivers / items / properties / peer_group
      Added value: +{
      +  "type": [
      +    "null",
      +    "string"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / candidates / items / properties / scored
      Added value: +{
      +  "type": [
      +    "null",
      +    "boolean"
      +  ]
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / analysis_offered
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / next_step / properties / arguments / properties / exchange
      Added value: +{
      +  "type": "string"
      +}
  4. Changed2 schema fields changed
    • addedOutput schema / properties / domain_coverage / properties / sentiment_sources_note
      Added value: +{
      +  "description": "The Sentiment evidence this reading did not use and why, as one sentence to relay as given, for example: Evidence not read in this analysis: earnings calls (none found recently).",
      +  "type": "string"
      +}
    • removedOutput schema / properties / domain_coverage / required
      Removed value: -[
      -  "not_scored"
      -]
  5. Changed1 schema field changed
    • changedInput schema / properties / ticker / pattern
      Previous value: -"^[A-Za-z][A-Za-z.\\-]{0,9}$"New value: +"^[A-Za-z0-9][A-Za-z0-9.\\-]{0,19}$"
  6. Changed4 schema fields changed
    • addedOutput schema / properties / domain_coverage
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "not_scored": {
      +      "items": {
      +        "enum": [
      +          "Fundamental",
      +          "Technical",
      +          "Risk",
      +          "Sentiment",
      +          "Macro"
      +        ],
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "not_scored"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / key_drivers
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "context": {
      +        "type": [
      +          "null",
      +          "string"
      +        ]
      +      },
      +      "domain": {
      +        "type": [
      +          "null",
      +          "string"
      +        ]
      +      },
      +      "kind": {
      +        "enum": [
      +          "SUPPORTIVE",
      +          "HEADWIND",
      +          "MIXED",
      +          "COVERAGE_GAP",
      +          "NEUTRAL_NOT_MATERIAL"
      +        ],
      +        "type": "string"
      +      },
      +      "label": {
      +        "type": "string"
      +      },
      +      "metric": {
      +        "type": [
      +          "null",
      +          "string"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "kind",
      +      "label"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • addedOutput schema / properties / lens
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "label": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "label"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • removedOutput schema / properties / watchlist
      Removed value: -{
      -  "additionalProperties": false,
      -  "properties": {
      -    "message": {
      -      "type": "string"
      -    },
      -    "tool": {
      -      "type": "string"
      -    },
      -    "tracked": {
      -      "type": "boolean"
      -    }
      -  },
      -  "required": [
      -    "tracked",
      -    "tool",
      -    "message"
      -  ],
      -  "type": [
      -    "null",
      -    "object"
      -  ]
      -}
  7. Changed18 schema fields changed
    • changedInput schema / properties / exchange / description
      Previous value: -"Exchange code (e.g. NASDAQ NYSE). Optional - resolved automatically if omitted."New value: +"Exchange code (e.g. NASDAQ NYSE). Optional. Resolved automatically if omitted."
    • addedInput schema / properties / exchange / enum
      Added value: +[
      +  "NYSE",
      +  "NASDAQ",
      +  "AMEX",
      +  "OTC",
      +  "CBOE",
      +  "TSX",
      +  "TSXV",
      +  "CNQ",
      +  "NEO",
      +  "MEX",
      +  "B3",
      +  "SANTIAGO",
      +  "BUE",
      +  "BVC",
      +  "LSE",
      +  "EURONEXT_PARIS",
      +  "EURONEXT_AMSTERDAM",
      +  "EURONEXT_BRUSSELS",
      +  "EURONEXT_LISBON",
      +  "EURONEXT_DUBLIN",
      +  "XETRA",
      +  "SIX",
      +  "BME",
      +  "MILAN",
      +  "OSLO",
      +  "OMX_STOCKHOLM",
      +  "OMX_HELSINKI",
      +  "OMX_COPENHAGEN",
      +  "WSE",
      +  "VIE",
      +  "ATH",
      +  "PRA",
      +  "BUD",
      +  "IST",
      +  "ICE",
      +  "RIS",
      +  "TAL",
      +  "MCX",
      +  "TSE",
      +  "HKEX",
      +  "SHANGHAI",
      +  "SHENZHEN",
      +  "ASX",
      +  "TWSE",
      +  "SGX",
      +  "NSE",
      +  "KRX",
      +  "BSE",
      +  "KOE",
      +  "JKT",
      +  "KLS",
      +  "SET",
      +  "NZE",
      +  "HOSE",
      +  "TWO",
      +  "TADAWUL",
      +  "JSE",
      +  "TLV",
      +  "DFM",
      +  "EGX",
      +  "DOH",
      +  "KUW"
      +]
    • changedInput schema / properties / ticker / description
      Previous value: -"Stock ticker symbol (e.g. AAPL MSFT TSLA)"New value: +"Stock ticker symbol (e.g. AAPL MSFT TSLA). Exactly one ticker per call."
    • addedOutput schema / properties / candidates
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "company_name": {
      +        "type": "string"
      +      },
      +      "exchange": {
      +        "type": "string"
      +      },
      +      "ticker": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "ticker",
      +      "exchange",
      +      "company_name"
      +    ],
      +    "type": "object"
      +  },
      +  "type": [
      +    "null",
      +    "array"
      +  ]
      +}
    • changedOutput schema / properties / composite_score / type
      Previous value: -"number"New value: +[
      +  "null",
      +  "number"
      +]
    • removedOutput schema / properties / config_context / properties / config_name
      Removed value: -{
      -  "type": [
      -    "null",
      -    "string"
      -  ]
      -}
    • removedOutput schema / properties / config_context / properties / config_version
      Removed value: -{
      -  "type": [
      -    "null",
      -    "string"
      -  ]
      -}
    • changedOutput schema / properties / config_context / type
      Previous value: -"object"New value: +[
      +  "null",
      +  "object"
      +]
    • removedOutput schema / properties / data_source
      Removed value: -{
      -  "type": "string"
      -}
    • removedOutput schema / properties / domain_scores / items / properties / display_name
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / domain_scores / items / required
      Previous value: -[
      -  "domain",
      -  "display_name",
      -  "score",
      -  "grade"
      -]New value: +[
      +  "domain",
      +  "score",
      +  "grade"
      +]
    • addedOutput schema / properties / freshness
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "age_days": {
      +      "type": "integer"
      +    },
      +    "last_scored": {
      +      "type": "string"
      +    },
      +    "requested_ticker": {
      +      "type": "string"
      +    },
      +    "state": {
      +      "enum": [
      +        "current",
      +        "aging",
      +        "stale"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "last_scored",
      +    "age_days"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • removedOutput schema / properties / key_challenges
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "domain": {
      -        "type": [
      -          "null",
      -          "string"
      -        ]
      -      },
      -      "headline": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "headline"
      -    ],
      -    "type": "object"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • removedOutput schema / properties / key_strengths
      Removed value: -{
      -  "items": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "domain": {
      -        "type": [
      -          "null",
      -          "string"
      -        ]
      -      },
      -      "headline": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "headline"
      -    ],
      -    "type": "object"
      -  },
      -  "type": [
      -    "null",
      -    "array"
      -  ]
      -}
    • addedOutput schema / properties / message
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_step
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "arguments": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "ticker": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "ticker"
      +      ],
      +      "type": [
      +        "null",
      +        "object"
      +      ]
      +    },
      +    "description": {
      +      "type": "string"
      +    },
      +    "kind": {
      +      "enum": [
      +        "call_tool",
      +        "ask_user",
      +        "human_action"
      +      ],
      +      "type": "string"
      +    },
      +    "options": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "null",
      +        "array"
      +      ]
      +    },
      +    "tool": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "kind"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / status
      Added value: +{
      +  "enum": [
      +    "scored",
      +    "not_in_surface",
      +    "not_covered",
      +    "ambiguous",
      +    "not_found"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "ticker",
      -  "exchange",
      -  "company_name",
      -  "sector",
      -  "industry",
      -  "composite_score",
      -  "rating",
      -  "domain_scores",
      -  "analysis_date",
      -  "config_context",
      -  "data_source",
      -  "scope"
      -]New value: +[
      +  "status",
      +  "ticker",
      +  "scope"
      +]
  8. Changed2 schema fields changed
    • addedOutput schema / properties / watchlist
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "message": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    },
      +    "tracked": {
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "tracked",
      +    "tool",
      +    "message"
      +  ],
      +  "type": [
      +    "null",
      +    "object"
      +  ]
      +}
    • addedOutput schema / properties / watchlist_offered
      Added value: +{
      +  "type": "boolean"
      +}
  9. Changed3 schema fields changed
    • addedInput schema / properties / ticker / pattern
      Added value: +"^[A-Za-z][A-Za-z.\\-]{0,9}$"
    • addedOutput schema / properties / scope
      Added value: +{
      +  "enum": [
      +    "single_ticker"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "ticker",
      -  "exchange",
      -  "company_name",
      -  "sector",
      -  "industry",
      -  "composite_score",
      -  "rating",
      -  "domain_scores",
      -  "analysis_date",
      -  "config_context",
      -  "data_source"
      -]New value: +[
      +  "ticker",
      +  "exchange",
      +  "company_name",
      +  "sector",
      +  "industry",
      +  "composite_score",
      +  "rating",
      +  "domain_scores",
      +  "analysis_date",
      +  "config_context",
      +  "data_source",
      +  "scope"
      +]
  10. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Goes far beyond the readOnly/idempotent annotations: non-scored statuses are answers not errors and must not be retried unchanged, not_in_surface means out of the caller's reach rather than no analysis, next_step drives follow-up, freshness must be quoted with its date, and stale readings are last-computed not last-night. It also discloses the account-scope boundary (600 largest companies anonymous vs. own portfolios when signed in).

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?

Purpose is correctly front-loaded in the first sentence, but the remainder is a dense ~300-word block mixing payload description, status-handling policy, consent rules, and conversational etiquette ('mention an offer at most once per conversation') for a two-parameter read tool. Most sentences carry real information, but the volume makes the critical call instructions hard to scan.

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 single-ticker snapshot tool with an output schema and safety annotations already in place, nothing an agent needs is missing: account scope, non-error status semantics, freshness handling, follow-up consent, and the boundary against ranking use are all covered. Remaining verbosity is a style cost, not a completeness gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, and the description's 'one ticker per call' merely repeats the ticker description. The optional exchange parameter and the auto-resolution behavior are never mentioned in the description, so it adds no meaning over 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 opening sentence names a specific resource (one company's latest nightly StockLens score) and enumerates the exact payload: composite score and rating word, domain scores with grades, up to three named signals with evidence, business-model lens, and unscored domains. It also distinguishes itself from siblings by directing ranking/filtered needs to discover_stocks and deeper evidence to initiate_analysis, so an agent can place it without opening 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?

Explicit routing rules: one ticker per call, call once per company to compare named companies, use discover_stocks for any top/best/worst/filtered request, and never pick ranking constituents yourself. It also states the exact precondition for initiate_analysis (sign-in, possible Analysis credit, ask first) and that a snapshot request is never permission to start a run.

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