Skip to main content
Glama

QuantApe Markets

Server Details

Stock screens; per-stock earnings, guidance, signal and sector insights; rotation and market mood.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 23 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes: list browsing vs. ticker lists vs. screen contents vs. per-stock analytics. A few pairs overlap, notably cluster_context with graph_neighbors, and get_my_watchlist with get_smart_list_metrics, but the descriptions make the intended scope reasonably clear.

Naming Consistency3/5

The set mixes conventions: many tools use get_* (get_smart_list, get_stock_insights), but others use noun_noun or noun_verb patterns (cluster_context, graph_neighbors, portfolio_analyze). It remains readable and mostly snake_case, but the pattern is not fully predictable.

Tool Count4/5

Twelve tools is a reasonable size for a market-analytics server, with no extreme bloat. The surface is slightly heavy on smart-list-related tools, but each covers a distinct operation such as listing, metrics, changes, criteria, and inverse lookup.

Completeness4/5

The surface covers browsing screens, screen membership, per-ticker screen membership, per-stock analytics, cluster/peer analysis, market overview, watchlist analytics, and portfolio diversification. Live quotes and valuation are intentionally out of scope, but a few adjacent operations such as watchlist management are not present.

Available Tools

12 tools
cluster_contextA
Read-only
Inspect

What happened recently to a ticker's peers: the cluster's move over the last 5 or 20 days (raw, market and residual), plus the news, earnings reactions, earnings-call guidance, price-mover explanations and themes that name its members. Give a symbol (its cluster; share classes are one company) or a cluster_id from graph_neighbors. Mega-caps and other names without a tight cluster get their closest residual-correlation peers instead (peers.kind = 'neighbors'). Peers are the ticker's residual-correlation cluster: stocks that move together once the market is removed. move is the cluster's equal-weight average in percent over the last 5 or 20 sessions: raw_* is the plain price move, market_* is SPY's, and residual_* is the move left after removing the market (the cluster-specific part); move.members has each member's own figures. Every news, earnings, transcript, mover and theme item cites a member symbol and a date. The optional digest (include_digest) is an LLM summary constrained to the cluster's members, each bullet citing members and a date; it may add latency, not cost. With mode 'peers' (symbol input only) the peers are instead the stocks whose residual moves track the ticker most closely (positive residual correlation over the past year, listed in peers.corr, with the ticker's leaf cluster as peers.theme): move is then the peers-only mean, move.symbol the ticker's own move and move.divergence_5d / _20d the ticker minus its peers, in percentage points. All of it is descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.03 per call via x402 (USDC), with or without the digest.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window in days: 5 (default) or 20.
modeNoSymbol input only. 'cluster' (default): the ticker's residual-correlation cluster. 'peers': the ticker plus the stocks whose residual moves track it most closely (with peers.corr), the peers' mean move, the ticker's own move and its divergence from them.
symbolNoTicker symbol, e.g. RGTI. Give this or cluster_id, not both.
cluster_idNoCluster id from graph_neighbors. Give this or symbol, not both.
include_digestNoAlso attach the LLM digest (default false). Slower; a failed digest comes back as digest: null with digest_status, never as an error.

Output Schema

ParametersJSON Schema
NameRequiredDescription
daysYes5 or 20 calendar days behind news, earnings, transcripts, movers and themes
moveYes
newsYes
as_ofYesYYYY-MM-DD the window ends on
peersNosymbol input only: the peers the payload covers (absent for cluster_id input)
countsYes
digestNoinclude_digest only: LLM summary constrained to the member symbols of the peers; null when it could not be produced
moversYes
symbolNoThe ticker asked about (symbol input only)
themesYes
clusterYesThe symbol's cluster, or null when it is in no tight cluster (then see peers)
earningsYes
transcriptsYes
digest_modelNoinclude_digest only
digest_statusNoinclude_digest only

TDQS

A4.5/5.0
Behavior5/5

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

With only readOnlyHint=true in annotations, the description carries the rest and does so richly: it discloses the per-day allowance tiers (5/10/50), the $0.03 x402 overage, that the digest adds latency but not cost, and that a failed digest returns digest: null with digest_status rather than an error. These are exactly the behavioral traits annotations cannot express.

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?

It is front-loaded correctly, but it is a single dense wall of text that sprawls well past the point of necessity. Much of the field-level explanation (move.raw_*, residual_*, peers.corr, peers.kind) duplicates the output schema, which already exists, so those sentences do not fully earn their place.

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 read-only analytics tool with a rich output schema, it covers everything an agent needs: inputs, mode semantics, cost/allowance, latency, and digest failure handling. Nothing required to call it correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains what days (5 vs 20 sessions) means, what mode='peers' changes about the output, and the symbol/cluster_id mutual exclusivity. It goes modestly beyond the schema rather than merely restating it.

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 opens with a specific verb+resource: it returns what recently happened to a ticker's peers — cluster moves (raw/market/residual), news, earnings reactions, guidance, movers and themes. It distinguishes itself from siblings by explicitly pointing to graph_neighbors as the source of cluster_id, so an agent can tell it apart from get_stock_insights or graph_neighbors without opening the schema.

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?

It clearly states input routing (give a symbol or a cluster_id from graph_neighbors, not both), explains the cluster vs peers mode selection, and notes the fallback for mega-caps without a tight cluster. It stops short of explicitly contrasting when to prefer this over siblings like get_stock_insights, but the operational context is strong.

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

find_symbol_listsA
Read-only
Inspect

Every stock screen a given ticker is currently in — its momentum, technical-signal, earnings, theme and thesis memberships, in one call. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.01 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesTicker symbol, e.g. NVDA or BRK-B.

Output Schema

ParametersJSON Schema
NameRequiredDescription
listsYes
symbolYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=true, and the description does not contradict that. It adds useful behavioral context: daily free quotas for anonymous, signed-in, and power users, plus the paid x402/USDC path beyond the limit. It does not cover empty-result or error behavior, but the output schema and readOnly annotation lessen that gap.

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 purpose is front-loaded in the first sentence, and the second sentence packs quota and pricing information compactly. The quota detail is relevant but somewhat dense; still, there is no filler or redundancy.

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 tool with one required parameter, a fully documented schema, an output schema, and a readOnly annotation, the description provides enough information to call it correctly. It explains the purpose, enumerates membership categories, and covers quota/payment behavior, so nothing critical is missing.

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 coverage is 100% and the input schema already documents the single `symbol` parameter with an example. The description adds only the phrase 'given ticker' and no additional format, case, or usage nuance beyond the schema, so the baseline 3 applies.

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 identifies the tool's purpose: return all stock-screen memberships for a given ticker, including momentum, technical, earnings, theme, and thesis lists. It is specific about the resource and scope, though it never explicitly names a sibling tool or uses an explicit verb like 'find' or 'list'.

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 intended use is implied: when an agent needs every screen a ticker currently belongs to, this is the tool. However, it does not contrast itself with sibling tools such as list_smart_lists, get_smart_list, or get_list_criteria, nor does it say 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_list_criteriaA
Read-only
Inspect

Metadata for one stock screen (smart list): display name, short description, icon, category ids and parent screen. Always free.

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesScreen id from list_smart_lists (e.g. day_gainers, todays_earnings).

Output Schema

ParametersJSON Schema
NameRequiredDescription
iconYes
list_idYes
updated_atYesScreen last rebuilt, ISO 8601 UTC
parent_listYesId of the screen this one refines
category_idsYes
display_nameYes
short_descriptionYes

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already communicates safety, and the description adds useful context by specifying that it returns metadata fields and is 'Always free.' No contradictions with annotations exist, but no additional behavioral traits such as rate limits or access conditions are disclosed.

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 that states the resource, the fields returned, and the cost-relevant note. Every part earns its place with no redundant wording.

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 one-parameter read-only metadata operation with a complete input schema and an output schema, the description plus structured data fully equips the caller. The lack of sibling routing is a usage-guideline gap rather than 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 coverage is 100%: list_id is documented with its source ('Screen id from list_smart_lists') and concrete examples. The description adds no extra parameter meaning, so the baseline score of 3 is appropriate.

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 names a specific resource ('Metadata for one stock screen') and enumerates the exact fields returned (display name, short description, icon, category ids, parent screen). It is distinguishable from list_smart_lists and get_smart_list_changes, though it does not explicitly name those siblings.

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 is given about when to use this tool instead of get_smart_list or list_smart_lists. The only contextual hint is 'Always free,' which addresses cost rather than selection criteria, leaving the agent to infer usage from the name and sibling list.

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

get_market_overviewA
Read-only
Inspect

Today's market conditions: the daily overview narrative, the fear & greed index and per-sector scores, sector rotation and market-cycle phase, and categorized market news. Pick sections to keep the answer small. Pairs with get_my_watchlist for "how is my watchlist doing against the market?". Descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.02 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionsNoWhich sections to return; omit for all five. Pick fewer to keep the answer small.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesNewest section date, YYYY-MM-DD
sectionsYesOnly the requested sections are present
disclaimerYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses important behavioral details: it is descriptive rather than advisory, and it specifies detailed rate limits and pricing (anonymous 5/day by IP, signed-in 10/day, power users 50/day, then $0.02 via x402 USDC). This gives the agent crucial cost and quota awareness that annotations do not cover.

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 dense paragraph, moderately long but every sentence carries operational or semantic value. It front-loads the tool's content, then usage guidance, then cost/limit context. It could be broken into bullet points, but it is not padded with fluff.

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?

With an output schema present, the description need not detail return shapes. It covers the single optional parameter thoroughly, states the tool's nature, provides a complementary sibling use case, and fully documents access quotas and pricing. Nothing an agent needs to invoke it correctly 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?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining why the sections parameter exists ('Pick sections to keep the answer small') and by enumerating the section options in prose, reinforcing the schema's enum and helping the agent choose appropriately.

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 opens with 'Today's market conditions' and enumerates exactly what the tool returns: daily overview narrative, fear & greed index, per-sector scores, rotation, cycle phase, and categorized news. This clearly differentiates it from the sibling smart-list and watchlist tools, which are about lists rather than market conditions.

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?

It explicitly says 'Pick sections to keep the answer small', telling the agent how to control response size. It also names a complementary use case: 'Pairs with get_my_watchlist for "how is my watchlist doing against the market?"' and clarifies the tool is 'Descriptive, not a recommendation', giving a clear when-not-to-use boundary.

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

get_my_watchlistA
Read-only
Inspect

The same per-symbol analytics as get_smart_list_metrics (earnings reaction and drift, expectations score, implied move, technical signals), plus the latest headlines, for your own watchlist — the tool behind "What's going on with my watchlist today?". Requires your session token (Authorization: Bearer). Descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.05 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoWatchlist symbols per page, 1-100 (default 50).
offsetNoZero-based offset into the watchlist for paging.
news_daysNoHow many days of headlines to attach per symbol, 1-7 (default 2).

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
as_ofYesReserved; currently always null
limitYes
totalYesSymbols across all pages.
offsetYes
has_moreYes
news_daysYes
news_errorNoOnly when headlines could not be fetched (every row then has news: [])

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint: true, and the description adds authentication needs (Bearer token), cost structure ($0.05 via x402), daily allowance tiers, and clarifies the output is descriptive, not a recommendation. These go well beyond the annotation and give the agent critical operational context.

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 core function is front-loaded in the first sentence, followed by auth and cost details. The description is slightly verbose with the allowance breakdown, but every sentence carries information. It is efficient without being terse.

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?

An output schema exists, covering return-value details. The description explains the main data categories (analytics and headlines), authentication, and cost. With only 3 optional parameters and no nested objects, nothing essential is missing.

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 coverage is 100% with descriptive text for limit, offset, and news_days. The description adds no parameter-specific semantics beyond what the schema already provides, so the baseline of 3 applies.

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 names a specific verb+resource: retrieving analytics and headlines for the user's own watchlist. It explicitly differentiates from get_smart_list_metrics by adding 'plus the latest headlines' and 'for your own watchlist', and it cites a user-facing phrase, making the purpose unmistakable.

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?

It clearly states the context: operates on 'your own watchlist' and requires a session token, implying authenticated user data. It references get_smart_list_metrics for comparison but does not explicitly say when to use one over the other or provide exclusions, 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.

get_smart_listA
Read-only
Inspect

Symbols currently in a stock screen — e.g. today's earnings, golden-cross buy signals, AI beneficiaries (paged, max 200 per call). Descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.01 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoSymbols per page, 1-200 (default 200).
offsetNoZero-based offset into the screen for paging.
list_idYesScreen id from list_smart_lists (e.g. day_gainers, golden_cross, ai_beneficiaries).

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesScreen last rebuilt, ISO 8601 UTC
limitYes
totalYesSymbols across all pages.
offsetYes
list_idYes
symbolsYes

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses paging behavior (max 200 per call), per-tier rate limits (5/10/50 per day), and overage pricing via x402 USDC — exactly the kind of quota/auth/cost context annotations don't carry. It also adds a 'Descriptive, not a recommendation' disclaimer that matters when an agent relays results to a user. Nothing in the description contradicts the annotations.

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 single sentence is front-loaded with the core purpose ('Symbols currently in a stock screen') before moving to paging, disclaimer, and quota/pricing details. Each clause carries distinct information — content type, safety framing, cost model — with no filler. Dense but not bloated, meriting a 4.

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?

The output schema covers return values, all three parameters are fully documented, and the safety profile is annotated. The description fills the remaining operational gaps: paging cap, entitlement tiers, overage cost, and the non-recommendation caveat. No critical information an agent would need to invoke this correctly is missing.

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 coverage is 100%, with limit, offset, and list_id each already documented in the schema, so the baseline is 3. The description adds minor reinforcement ('max 200 per call' mirrors the limit maximum) and its screen examples echo the list_id values, but it doesn't introduce new parameter meaning. Baseline 3 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 centers on a specific resource and action — 'Symbols currently in a stock screen' — and grounds it with concrete examples (today's earnings, golden-cross buy signals, AI beneficiaries). The word 'currently' plus the content examples distinguish it from sibling tools like get_smart_list_changes and get_smart_list_metrics, and list_smart_lists is referenced as the source of screen ids. An agent can tell what this returns without opening the schema.

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 when to call it — to fetch current members of a known screen — and conveys operational constraints (paging, daily allowance), but it never names an alternative or states a when-not-to-use condition. Routing relative to siblings like get_smart_list_changes or get_smart_list_metrics must be inferred from the word 'currently' rather than stated explicitly. Clear context, but no 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_smart_list_changesA
Read-only
Inspect

Which symbols entered or left a stock screen since its last recorded baseline (which can span several rebuilds) — e.g. new golden crosses, or names that dropped out of the momentum leaders. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.02 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
list_idYesScreen id from list_smart_lists whose additions and removals you want.

Output Schema

ParametersJSON Schema
NameRequiredDescription
addedYes
as_ofYesScreen last rebuilt, ISO 8601 UTC
list_idYes
removedYes
added_countYes
removed_countYes
baseline_as_ofYesWhen the baseline was recorded; null = no baseline yet, so added/removed are empty

TDQS

A4.2/5.0
Behavior4/5

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

With readOnlyHint=true already covering the read-only safety profile, the description adds genuinely useful behavioral context: the baseline can span multiple rebuildsaine, and there is a daily free allowance with per-call overage pricing via x402 (USDC). No contradiction with annotations.

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 core behavior is front-loaded in the first clause, followed by useful examples and pricing details. It is a little dense as one long sentence, but every part earns its place and there is no 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?

Given only one well-documented parameter, an output schema, and a readOnly annotation, the description is complete enough for an agent to invoke the tool correctly. It explains what the result represents, mentions the baseline semantics, and covers quota/cost constraints.

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?

The single parameter list_id is already fully described in the schema as 'Screen id from list_smart_lists whose additions and removals you want.' The description adds conceptual framing about stock screens and changes, but it does not materially extend parameter-level semantics beyond the schema, so the baseline of 3 applies.

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 opens by stating exactly what the tool reports — symbols that entered or left a stock screen since its last recorded baseline — and illustrates with concrete examples such as new golden crosses and momentum-leader dropouts. This clearly distinguishes it from sibling tools like get_smart_list (current membership), get_smart_list_metrics, or list_smart_lists.

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?

The examples give a clear sense of when this tool is appropriate: detecting membership changes over a rebuild-spanning baseline rather than viewing the current list. However, it does not explicitly name sibling alternatives or state when not to use it, so it stops 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.

get_smart_list_metricsA
Read-only
Inspect

QuantApe's own per-symbol analytics for a stock screen — last earnings reaction and the drift since it, next earnings date with how much of that report is already priced in (expectations score) and the options-implied move, and recent technical signals (paged, max 200 per call). It returns no live quotes, market cap or valuation ratios; use a quote API for those. Descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.05 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoSymbols per page, 1-200 (default 200).
offsetNoZero-based offset into the screen for paging.
list_idYesScreen id from list_smart_lists (e.g. day_gainers, golden_cross, ai_beneficiaries).

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsYes
as_ofYesReserved; currently always null
limitYes
totalYesSymbols across all pages.
offsetYes
list_idYes
has_moreYes

TDQS

A4.7/5.0
Behavior5/5

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

While readOnlyHint=true already indicates a read-only operation, the description adds valuable behavioral context: pagination capped at 200 per call, per-tier daily allowances with overage payment ($0.05 per call via x402 USDC), and the guarantee that it returns no live quotes. These traits are not inferable from annotations alone.

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?

Four sentences, each delivering distinct value: what the tool returns, what it excludes and what to use instead, a disclaimer, and the pricing model. The core capability is front-loaded and no sentence is redundant 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?

With an output schema present, the description doesn't need to explain return values. It fully covers the data scope, paging behavior, pricing, exclusions, and alternatives, providing all the context an agent needs to decide whether and how to invoke the tool.

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?

The schema covers 100% of the parameters with explicit descriptions, so the description carries little additional burden. It reinforces paging semantics by saying 'paged, max 200 per call' and points to list_smart_lists as the source for list_id, but these are largely restatements of the schema rather than new 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?

States a specific verb ('returns') plus a specific resource ('per-symbol analytics for a stock screen') and enumerates the exact data points: earnings reaction, drift, next earnings date, expectations score, options-implied move, and technical signals. It also explicitly excludes live quotes, market cap, and valuation ratios, distinguishing it from quote APIs and sibling tools.

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?

Explicitly states when not to use this tool ('returns no live quotes, market cap or valuation ratios') and directs the agent to 'a quote API' as the alternative. It also adds a usage caveat ('Descriptive, not a recommendation') and clarifies paging limits, giving clear boundaries for invocation.

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

get_stock_insightsA
Read-only
Inspect

Everything QuantApe derives about ONE stock that a quote API can't tell you — the tool behind "what do you know about NVDA?": last earnings reaction and the drift since, how much of the next report is already priced in (expectations score) and the options-implied move, what the latest earnings call said about guidance, recent technical signals, why it moved today if it was a notable mover, its sector's fear & greed score and rotation quadrant, and which stock screens hold it with how those screens are doing. Each section carries its own as_of. It returns no live quotes, market cap or valuation ratios; use a quote API for those. Pick sections to keep the answer small; inside_sentiment (how the business reads from the inside) is opt-in. Descriptive, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.10 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYesTicker symbol, e.g. NVDA or BRK-B.
sectionsNoWhich sections to return; omit for the default set (earnings, guidance, signals, movers, sector, screens). Add inside_sentiment explicitly.

Output Schema

ParametersJSON Schema
NameRequiredDescription
symbolYes
companyYes
sectionsYesOnly the requested sections are present
disclaimerYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, but the description adds substantial behavioral context: no live quotes, per-section as_of timestamps, free-tier limits and overage pricing, and the non-recommendation stance. This goes well beyond what the annotations provide.

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 long but every sentence carries decision-relevant information: what the tool returns, what it excludes, how to trim output, and cost/access details. It is front-loaded with the core purpose, though the pricing details could arguably be moved to a separate note.

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?

Combined with the output schema and annotations, the description fully covers what the tool does, what it does not do, how to select sections, behavioral caveats, and usage limits. An agent has everything needed to decide when to call it and how to invoke it correctly.

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?

Schema coverage is 100% and the sections parameter already documents the default set and explicit opt-in for inside_sentiment. The description reinforces this and adds the useful gloss that inside_sentiment means 'how the business reads from the inside,' providing slight extra meaning 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 opens with a specific, memorable framing: everything QuantApe derives about ONE stock that a quote API can't tell you. It enumerates concrete sections and explicitly contrasts itself with quote APIs, making its scope and differentiation clear.

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?

It explicitly says to use a quote API for live quotes, market cap, and valuation ratios, and instructs the agent to pick sections to keep the answer small. It also flags inside_sentiment as opt-in and describes the tool as descriptive rather than a recommendation, giving clear decision rules.

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

graph_neighborsA
Read-only
Inspect

The stocks that move most with a given ticker, ranked by strength, each with its cluster (a stable id and a label naming its biggest members) — peers, co-movers and offsetting names. Residual correlation is how much two stocks move together after the market and sector effects are removed from each, so it shows peers and true co-movement rather than shared market beta. type=lead_lag instead lists directed lagged relationships (one stock's move followed by another's a few sessions later; direction is from the symbol's point of view), which are weak and largely noise out of sample. Share classes are one company (GOOG is answered as GOOGL). Everything returned is descriptive statistics of past returns, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.01 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
kNoNeighbours to return, 1-50 (default 20).
typeNoresid_corr (default): same-day residual correlation. lead_lag: directed lagged correlation.
regimeNoall (default) | highvol | lowvol: volatility regime the correlation was measured in (VIX above / below its trailing median).
symbolYesTicker symbol, e.g. RGTI or BRK-B.
windowNoSessions behind resid_corr: 250 (default) or 60. Leave unset for lead_lag.

Output Schema

ParametersJSON Schema
NameRequiredDescription
typeYes
regimeYes
symbolYes
windowYesSessions behind resid_corr (60 or 250); for lead_lag the sample size
clusterYesThe symbol's cluster (stable id + label) or null
run_dateYesDate of the nightly run the edges come from, YYYY-MM-DD
neighborsYes
peers_kindNo'neighbors' when the symbol is in no cluster (cluster_context then returns its closest peers)

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only supply readOnlyHint, but the description adds substantial context: rate limits and pricing tiers (5/10/50 per day, $0.01 via x402), the share-class normalization rule (GOOG -> GOOGL), the direction convention for lead_lag (from the symbol's point of view), and a descriptive-not-recommendation disclaimer.

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?

Dense but front-loaded: the primary return shape comes first, then the mechanism, then caveats and pricing. Almost every sentence earns its place, though the pricing/rate-limit sentence is somewhat long and could be tightened.

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?

With an output schema, annotations, and 100% schema coverage already present, the description need not explain return values — and it still covers semantics, edge cases, caveats, and cost. Nothing an agent needs to call it correctly 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?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine conceptual meaning beyond the schema — it explains what residual correlation is (co-movement after removing market/sector effects) and what lead_lag represents, enriching the enum values with interpretation rather than just restating them.

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+resource with scope: the stocks that move most with a given ticker, ranked by strength, each with cluster info. It distinguishes the resid_corr vs lead_lag outputs and clearly sets this apart from siblings like cluster_context and get_stock_insights.

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?

Gives clear guidance on parameter choice: use the default resid_corr for peers/true co-movement, switch to lead_lag for directed lagged relationships — and warns that lead_lag is weak/noise out of sample. However, it never explicitly names sibling tools or states when this tool should be preferred over cluster_context.

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

list_smart_listsA
Read-only
Inspect

Browse stock screens by category — momentum, technical signals, fundamentals, earnings events, social sentiment, themes, curated baskets, investment theses — with display names, descriptions, member counts, and the per-tool pricing/allowance for the metered tools below. Always free. Start here to find a screen id.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_idNoRestrict the catalog to one category id (e.g. momentum, technical, events, thematic); omit for every category.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYesNewest rebuild across the returned screens, ISO 8601 UTC
pricingYesUSD per call of each metered tool beyond the daily allowance
allowanceYes
categoriesYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description adds value by stating 'Always free' and clarifying that the tool returns per-tool pricing/allowance information for metered tools below. This goes beyond the annotation without contradicting it, effectively communicating the non-destructive, no-cost nature of the operation.

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, information-dense sentence that front-loads the primary action and resource ('Browse stock screens by category') before listing the categories and output contents. It is efficient and clearly structured, though the long list of categories makes it slightly dense. No redundant or filler phrases are present.

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 presence of an output schema, the description does not need to detail return values. It adequately explains the tool's purpose, the types of screens included, what each entry contains, and its role as a starting point for obtaining screen ids. It could mention that category_id is optional (though the schema does), but overall it is sufficient for a discovery/list tool.

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?

The input schema covers the only parameter (category_id) at 100% with a clear description. The tool description mentions the category list in prose but does not add any new semantic detail about the parameter itself (e.g., valid formats or interaction with the category list). Since schema coverage is high, the baseline of 3 applies.

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 states a specific verb ('Browse') and resource ('stock screens'), enumerates the categories, and specifies exactly what each entry contains (display names, descriptions, member counts, pricing). It also signals its role as the entry point for finding a screen id, clearly distinguishing it from more specific sibling tools like get_smart_list that retrieve a single screen's details.

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 gives usage context ('Start here to find a screen id') and notes that the tool is free, implying it is a safe discovery step. However, it does not explicitly name alternative tools or conditions under which one should use a sibling (e.g., use get_smart_list for a known screen). The guidance is implied rather than explicit.

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

portfolio_analyzeA
Read-only
Inspect

A diversification read on a list of holdings: how concentrated they are across clusters of co-moving stocks (shares, Herfindahl index), the portfolio's residual volatility, which names most and least move with the portfolio as a whole, and which clusters are least correlated to it — per volatility regime (high-vol is the conservative one, since correlations rise when volatility does). Residual correlation is how much two stocks move together after the market and sector effects are removed from each, so it shows peers and true co-movement rather than shared market beta. diversifiers are the names with the lowest correlation to the portfolio, not recommendations to buy them. hedge=true marks TLT, GLD and UUP, market ballast rather than residual offsets. Holdings are tickers (equal weight) or {symbol, weight} objects; share classes collapse to one company; tickers outside the graph universe are listed under unknown. Everything returned is descriptive statistics of past returns, not a recommendation. Free within your daily allowance (anonymous 5/day by IP, signed-in users 10/day, power users 50/day); beyond that $0.05 per call via x402 (USDC).

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoDiversifiers to list per regime, 1-50 (default 10).
regimesNoRegimes to analyse; default ["all","highvol"].
holdingsYes1-200 tickers (equal weight) or {symbol, weight} objects (weights positive, given for all holdings or none), e.g. ["NVDA","XOM"].

Output Schema

ParametersJSON Schema
NameRequiredDescription
regimesYes
holdingsYesCanonical symbols analysed (GOOG is GOOGL)
unavailableYesRequested regimes without a matrix yet
equal_weightYes
cluster_run_dateYes

TDQS

A4.4/5.0
Behavior5/5

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

With only readOnlyHint=true in annotations, the description adds substantial behavioral context: free quotas by user type, overage pricing, input handling for equal-weight versus weighted holdings, share-class collapsing, unknown-ticker handling, hedge flag behavior, and a clear statement that output is descriptive statistics, not investment advice. It consistently reinforces the read-only, non-recommendation nature of the 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 long but front-loads the core purpose and metrics before moving to definitions, caveats, and pricing. It is dense yet mostly earns its length by explaining unusual terms like residual correlation and clarifying that diversifiers are not recommendations, though the single-paragraph structure could be easier to scan with bullets.

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 complex portfolio-analysis tool with an existing output schema and readOnlyHint annotation, the description supplies everything an agent needs: what is computed, how regimes are interpreted, how holdings are accepted, edge-case handling, cost/auth context, and the non-advisory nature of results. No material gap remains for correct invocation or interpretation.

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?

Schema coverage is 100%, so the schema already documents top, regimes, and holdings. The description adds semantic meaning beyond the schema by clarifying that holdings are equal weight by default, that share classes collapse to one company, that out-of-graph tickers appear as unknown, and that high-vol is treated as the conservative regime because correlations rise with volatility.

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 opens with a specific analytical purpose: a diversification read on a holdings list, then enumerates the exact metrics returned (concentration across clusters, Herfindahl index, residual volatility, correlation leaders/laggards, regime conditioning). This makes it unmistakable that the tool analyzes portfolio diversification rather than managing lists or fetching market data like the sibling tools.

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 when the tool is useful by describing its diversification output and regime options, and it adds practical usage context via daily allowance and x402 pricing. However, it does not explicitly state when to use this tool versus alternatives or when not to use it; the usage is left to inference from the analysis it provides.

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.

  1. 1 tool update
    • Changedcluster_context11 fields changed
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Symbol input only. 'cluster' (default): the ticker's residual-correlation cluster. 'peers': the ticker plus the stocks whose residual moves track it most closely (with peers.corr), the peers' mean move, the ticker's own move and its divergence from them.",
        +  "enum": [
        +    "cluster",
        +    "peers"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / digest / description
        Previous value: -"include_digest only: LLM summary constrained to the member symbols of the peers (cluster or neighbourhood); null when it could not be produced"New value: +"include_digest only: LLM summary constrained to the member symbols of the peers; null when it could not be produced"
      • addedOutput schema / properties / move / properties / divergence_20d
        Added value: +{
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / move / properties / divergence_5d
        Added value: +{
        +  "description": "peers mode only: the symbol's residual move minus the peers' mean, in percentage points",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / move / properties / members / items / properties / corr
        Added value: +{
        +  "description": "peers mode only: residual correlation with the asked symbol",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / move / properties / symbol
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "peers mode only: the asked symbol's own move (the group figures above exclude it)",
        +  "properties": {
        +    "raw_20d": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "raw_5d": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "residual_20d": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "residual_5d": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "residual_5d",
        +    "residual_20d",
        +    "raw_5d",
        +    "raw_20d"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / peers / properties / corr
        Added value: +{
        +  "additionalProperties": {
        +    "type": "number"
        +  },
        +  "description": "peers only: peer ticker -> its residual correlation with the asked symbol over 250 sessions (market removed), most correlated first",
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / properties / peers / properties / kind / description
        Previous value: -"'cluster': the symbol's peer group (a leaf of the cluster hierarchy); 'industry': no tight cluster, so its industry peers ranked by residual correlation; 'neighbors': the symbol plus its closest residual-correlation peers (industry unknown)"New value: +"'peers' (mode peers): the symbol plus the stocks whose residual moves track it most closely, r >= min_corr, ranked in peers.corr; 'cluster': the symbol's peer group (a leaf of the cluster hierarchy); 'industry': no tight cluster, so its industry peers ranked by residual correlation; 'neighbors': the symbol plus its closest residual-correlation peers (industry unknown)"
      • changedOutput schema / properties / peers / properties / kind / enum
        Previous value: -[
        -  "cluster",
        -  "industry",
        -  "neighbors"
        -]New value: +[
        +  "cluster",
        +  "industry",
        +  "neighbors",
        +  "peers"
        +]
      • addedOutput schema / properties / peers / properties / min_corr
        Added value: +{
        +  "description": "peers only: the minimum residual correlation of a peer",
        +  "type": "number"
        +}
      • addedOutput schema / properties / peers / properties / theme
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {
        +        "id": {
        +          "type": "number"
        +        },
        +        "label": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "size": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "label",
        +        "size"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "peers only: the symbol's leaf cluster, for context, or null when it is in none"
        +}
  2. 2 tool updates
    • Addedcluster_context
    • Changedgraph_neighbors1 field changed
      • addedOutput schema / properties / peers_kind
        Added value: +{
        +  "description": "'neighbors' when the symbol is in no cluster (cluster_context then returns its closest peers)",
        +  "enum": [
        +    "cluster",
        +    "neighbors"
        +  ],
        +  "type": "string"
        +}
  3. 2 tool updates
    • Addedgraph_neighbors
    • Addedportfolio_analyze
  4. 1 tool update
    • Addedget_stock_insights
  5. 2 tool updates
    • Changedget_my_watchlist23 fields changed
      • removedOutput schema / properties / rows / items / properties / beta
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / current_price
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / dividend_yield
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / earnings_reaction_date / description
        Previous value: -"Session of the last earnings reaction, YYYY-MM-DD"New value: +"Session of the last earnings reaction, YYYY-MM-DD — the anchor for earnings_reaction_percent and since_earnings_percent"
      • changedOutput schema / properties / rows / items / properties / earnings_reaction_percent / description
        Previous value: -"Largest single-session move around the last report; % points (7.04 = +7.04%)"New value: +"Largest single-session move around the last report, measured on earnings_reaction_date; % points (7.04 = +7.04%)"
      • changedOutput schema / properties / rows / items / properties / expectations_bar_score / description
        Previous value: -"0-100, how much of an earnings move is priced in (descriptive, not directional)"New value: +"0-100, how much of an earnings move is priced in ahead of next_earnings_date (descriptive, not directional)"
      • removedOutput schema / properties / rows / items / properties / fifty_day_average
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / fifty_two_week_high
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / fifty_two_week_low
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / forward_pe
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / implied_move_pct / description
        Previous value: -"Options-implied earnings move, 1 sigma; % points (7.04 = +7.04%)"New value: +"Options-implied earnings move for next_earnings_date, 1 sigma; % points (7.04 = +7.04%)"
      • removedOutput schema / properties / rows / items / properties / market_cap
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / next_earnings_date / description
        Previous value: -"ISO 8601 UTC"New value: +"ISO 8601 UTC — the event expectations_bar_score and implied_move_pct are measured for"
      • removedOutput schema / properties / rows / items / properties / peg_ratio
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_1m
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_3m
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_7d
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / regular_market_change_percent
        Removed value: -{
        -  "description": "Today's regular-session move; % points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / short_percent_of_float
        Removed value: -{
        -  "description": "FRACTION of float (0.107 = 10.7%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / since_earnings_percent / description
        Previous value: -"Close after the last report to the latest quote; % points (7.04 = +7.04%)"New value: +"Close after the last report to the latest stored quote (refreshed on a priority queue, so it can lag a session); % points (7.04 = +7.04%)"
      • changedOutput schema / properties / rows / items / properties / technical_signals / description
        Previous value: -"Recent signals, typically {date, type, name, strength, price}"New value: +"Recent signals with their own date each, typically {date, type, name, strength, price}"
      • removedOutput schema / properties / rows / items / properties / trailing_pe
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / two_hundred_day_average
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
    • Changedget_smart_list_metrics23 fields changed
      • removedOutput schema / properties / rows / items / properties / beta
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / current_price
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / dividend_yield
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / earnings_reaction_date / description
        Previous value: -"Session of the last earnings reaction, YYYY-MM-DD"New value: +"Session of the last earnings reaction, YYYY-MM-DD — the anchor for earnings_reaction_percent and since_earnings_percent"
      • changedOutput schema / properties / rows / items / properties / earnings_reaction_percent / description
        Previous value: -"Largest single-session move around the last report; % points (7.04 = +7.04%)"New value: +"Largest single-session move around the last report, measured on earnings_reaction_date; % points (7.04 = +7.04%)"
      • changedOutput schema / properties / rows / items / properties / expectations_bar_score / description
        Previous value: -"0-100, how much of an earnings move is priced in (descriptive, not directional)"New value: +"0-100, how much of an earnings move is priced in ahead of next_earnings_date (descriptive, not directional)"
      • removedOutput schema / properties / rows / items / properties / fifty_day_average
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / fifty_two_week_high
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / fifty_two_week_low
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / forward_pe
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / implied_move_pct / description
        Previous value: -"Options-implied earnings move, 1 sigma; % points (7.04 = +7.04%)"New value: +"Options-implied earnings move for next_earnings_date, 1 sigma; % points (7.04 = +7.04%)"
      • removedOutput schema / properties / rows / items / properties / market_cap
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / next_earnings_date / description
        Previous value: -"ISO 8601 UTC"New value: +"ISO 8601 UTC — the event expectations_bar_score and implied_move_pct are measured for"
      • removedOutput schema / properties / rows / items / properties / peg_ratio
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_1m
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_3m
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / price_change_7d
        Removed value: -{
        -  "description": "% points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / regular_market_change_percent
        Removed value: -{
        -  "description": "Today's regular-session move; % points (7.04 = +7.04%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / short_percent_of_float
        Removed value: -{
        -  "description": "FRACTION of float (0.107 = 10.7%)",
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • changedOutput schema / properties / rows / items / properties / since_earnings_percent / description
        Previous value: -"Close after the last report to the latest quote; % points (7.04 = +7.04%)"New value: +"Close after the last report to the latest stored quote (refreshed on a priority queue, so it can lag a session); % points (7.04 = +7.04%)"
      • changedOutput schema / properties / rows / items / properties / technical_signals / description
        Previous value: -"Recent signals, typically {date, type, name, strength, price}"New value: +"Recent signals with their own date each, typically {date, type, name, strength, price}"
      • removedOutput schema / properties / rows / items / properties / trailing_pe
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
      • removedOutput schema / properties / rows / items / properties / two_hundred_day_average
        Removed value: -{
        -  "type": [
        -    "number",
        -    "null"
        -  ]
        -}
  6. 8 tool updates
    • Changedfind_symbol_lists1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "lists": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "as_of": {
        +            "description": "Screen last rebuilt, ISO 8601 UTC",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "display_name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "list_id": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "list_id",
        +          "display_name",
        +          "as_of"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "symbol": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "symbol",
        +    "lists"
        +  ],
        +  "type": "object"
        +}
    • Changedget_list_criteria1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "category_ids": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "display_name": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "icon": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "list_id": {
        +      "type": "string"
        +    },
        +    "parent_list": {
        +      "description": "Id of the screen this one refines",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "short_description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "updated_at": {
        +      "description": "Screen last rebuilt, ISO 8601 UTC",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "list_id",
        +    "display_name",
        +    "short_description",
        +    "icon",
        +    "category_ids",
        +    "parent_list",
        +    "updated_at"
        +  ],
        +  "type": "object"
        +}
    • Changedget_market_overview1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "as_of": {
        +      "description": "Newest section date, YYYY-MM-DD",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "disclaimer": {
        +      "type": "string"
        +    },
        +    "sections": {
        +      "additionalProperties": {},
        +      "description": "Only the requested sections are present",
        +      "properties": {
        +        "fear_greed": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "indicators": {
        +                  "description": "{<indicator>: {score, rating}}"
        +                },
        +                "previous_1_month": {
        +                  "description": "0-100, higher = greedier",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "previous_1_week": {
        +                  "description": "0-100, higher = greedier",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "previous_close": {
        +                  "description": "0-100, higher = greedier",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "rating": {
        +                  "description": "extreme fear | fear | neutral | greed | extreme greed",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "score": {
        +                  "description": "0-100, higher = greedier",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "as_of",
        +                "score",
        +                "previous_close",
        +                "previous_1_week",
        +                "previous_1_month",
        +                "rating"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "error": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "error"
        +              ],
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "news": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "categorized": {
        +                  "description": "AI-written, by theme"
        +                },
        +                "stale": {
        +                  "description": "True = today's analysis not generated yet; an earlier one is served",
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                },
        +                "strategies": {
        +                  "description": "AI-written; informational, not advice"
        +                },
        +                "summary": {
        +                  "description": "AI-written"
        +                }
        +              },
        +              "required": [
        +                "as_of",
        +                "stale"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "error": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "error"
        +              ],
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "rotation": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "interpretation": {
        +                  "description": "AI-written"
        +                },
        +                "market_cycle": {
        +                  "description": "{currentPhase, confidence, description}"
        +                },
        +                "rotations": {
        +                  "description": "Active and potential rotations"
        +                },
        +                "sector_analysis": {
        +                  "description": "Sectors by leading / improving / weakening / lagging"
        +                }
        +              },
        +              "required": [
        +                "as_of"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "error": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "error"
        +              ],
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "sectors": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "sector_average": {
        +                  "description": "{score, rating}"
        +                },
        +                "sectors": {
        +                  "items": {
        +                    "additionalProperties": {},
        +                    "properties": {
        +                      "previous_1_month": {
        +                        "description": "0-100, higher = greedier",
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "previous_1_week": {
        +                        "description": "0-100, higher = greedier",
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "previous_close": {
        +                        "description": "0-100, higher = greedier",
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "rating": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      },
        +                      "score": {
        +                        "description": "0-100, higher = greedier",
        +                        "type": [
        +                          "number",
        +                          "null"
        +                        ]
        +                      },
        +                      "sector": {
        +                        "type": [
        +                          "string",
        +                          "null"
        +                        ]
        +                      }
        +                    },
        +                    "required": [
        +                      "sector",
        +                      "score",
        +                      "previous_close",
        +                      "previous_1_week",
        +                      "previous_1_month",
        +                      "rating"
        +                    ],
        +                    "type": "object"
        +                  },
        +                  "type": "array"
        +                },
        +                "stale": {
        +                  "type": [
        +                    "boolean",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "as_of",
        +                "stale",
        +                "sectors"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "error": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "error"
        +              ],
        +              "type": "object"
        +            }
        +          ]
        +        },
        +        "summary": {
        +          "anyOf": [
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "as_of": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "closing": {
        +                  "description": "AI-written prose"
        +                },
        +                "key_news": {
        +                  "description": "AI-written, typically [{headline, details}]"
        +                },
        +                "opening": {
        +                  "description": "AI-written prose"
        +                },
        +                "recommendations": {
        +                  "description": "AI-written; informational, not advice"
        +                },
        +                "sector_highlights": {
        +                  "description": "AI-written"
        +                }
        +              },
        +              "required": [
        +                "as_of"
        +              ],
        +              "type": "object"
        +            },
        +            {
        +              "additionalProperties": {},
        +              "properties": {
        +                "error": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "error"
        +              ],
        +              "type": "object"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "as_of",
        +    "sections",
        +    "disclaimer"
        +  ],
        +  "type": "object"
        +}
    • Changedget_my_watchlist1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "as_of": {
        +      "description": "Reserved; currently always null",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "number"
        +    },
        +    "news_days": {
        +      "type": "number"
        +    },
        +    "news_error": {
        +      "description": "Only when headlines could not be fetched (every row then has news: [])",
        +      "type": "string"
        +    },
        +    "offset": {
        +      "type": "number"
        +    },
        +    "rows": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "beta": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "companyName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "current_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "dividend_yield": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "earnings_reaction_date": {
        +            "description": "Session of the last earnings reaction, YYYY-MM-DD",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "earnings_reaction_percent": {
        +            "description": "Largest single-session move around the last report; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "expectations_bar_score": {
        +            "description": "0-100, how much of an earnings move is priced in (descriptive, not directional)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_day_average": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_two_week_high": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_two_week_low": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "forward_pe": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "implied_move_pct": {
        +            "description": "Options-implied earnings move, 1 sigma; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "industry": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "market_cap": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "news": {
        +            "description": "Up to 3 headlines, typically {title, source, url, publishedAt}",
        +            "items": {},
        +            "type": "array"
        +          },
        +          "next_earnings_date": {
        +            "description": "ISO 8601 UTC",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "peg_ratio": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_1m": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_3m": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_7d": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "regular_market_change_percent": {
        +            "description": "Today's regular-session move; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "short_percent_of_float": {
        +            "description": "FRACTION of float (0.107 = 10.7%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "since_earnings_percent": {
        +            "description": "Close after the last report to the latest quote; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "symbol": {
        +            "type": "string"
        +          },
        +          "technical_signals": {
        +            "anyOf": [
        +              {
        +                "items": {},
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Recent signals, typically {date, type, name, strength, price}"
        +          },
        +          "trailing_pe": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "two_hundred_day_average": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "symbol",
        +          "news"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "description": "Symbols across all pages.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "as_of",
        +    "total",
        +    "limit",
        +    "offset",
        +    "has_more",
        +    "news_days",
        +    "rows"
        +  ],
        +  "type": "object"
        +}
    • Changedget_smart_list1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "as_of": {
        +      "description": "Screen last rebuilt, ISO 8601 UTC",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "limit": {
        +      "type": "number"
        +    },
        +    "list_id": {
        +      "type": "string"
        +    },
        +    "offset": {
        +      "type": "number"
        +    },
        +    "symbols": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "description": "Symbols across all pages.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "list_id",
        +    "as_of",
        +    "total",
        +    "limit",
        +    "offset",
        +    "symbols"
        +  ],
        +  "type": "object"
        +}
    • Changedget_smart_list_changes1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "added": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "added_count": {
        +      "type": "number"
        +    },
        +    "as_of": {
        +      "description": "Screen last rebuilt, ISO 8601 UTC",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "baseline_as_of": {
        +      "description": "When the baseline was recorded; null = no baseline yet, so added/removed are empty",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "list_id": {
        +      "type": "string"
        +    },
        +    "removed": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "removed_count": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "list_id",
        +    "as_of",
        +    "baseline_as_of",
        +    "added",
        +    "removed",
        +    "added_count",
        +    "removed_count"
        +  ],
        +  "type": "object"
        +}
    • Changedget_smart_list_metrics1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "as_of": {
        +      "description": "Reserved; currently always null",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "number"
        +    },
        +    "list_id": {
        +      "type": "string"
        +    },
        +    "offset": {
        +      "type": "number"
        +    },
        +    "rows": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "beta": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "companyName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "current_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "dividend_yield": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "earnings_reaction_date": {
        +            "description": "Session of the last earnings reaction, YYYY-MM-DD",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "earnings_reaction_percent": {
        +            "description": "Largest single-session move around the last report; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "expectations_bar_score": {
        +            "description": "0-100, how much of an earnings move is priced in (descriptive, not directional)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_day_average": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_two_week_high": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "fifty_two_week_low": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "forward_pe": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "implied_move_pct": {
        +            "description": "Options-implied earnings move, 1 sigma; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "industry": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "market_cap": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "next_earnings_date": {
        +            "description": "ISO 8601 UTC",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "peg_ratio": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_1m": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_3m": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "price_change_7d": {
        +            "description": "% points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "regular_market_change_percent": {
        +            "description": "Today's regular-session move; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "short_percent_of_float": {
        +            "description": "FRACTION of float (0.107 = 10.7%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "since_earnings_percent": {
        +            "description": "Close after the last report to the latest quote; % points (7.04 = +7.04%)",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "symbol": {
        +            "type": "string"
        +          },
        +          "technical_signals": {
        +            "anyOf": [
        +              {
        +                "items": {},
        +                "type": "array"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Recent signals, typically {date, type, name, strength, price}"
        +          },
        +          "trailing_pe": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "two_hundred_day_average": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "symbol"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "description": "Symbols across all pages.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "list_id",
        +    "as_of",
        +    "total",
        +    "limit",
        +    "offset",
        +    "has_more",
        +    "rows"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_smart_lists1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "allowance": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "limit": {
        +          "description": "Free metered calls per 24 hours",
        +          "type": "number"
        +        },
        +        "remaining": {
        +          "type": "number"
        +        },
        +        "tier": {
        +          "description": "anon, user or power",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "tier",
        +        "limit",
        +        "remaining"
        +      ],
        +      "type": "object"
        +    },
        +    "as_of": {
        +      "description": "Newest rebuild across the returned screens, ISO 8601 UTC",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "categories": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "lists": {
        +            "items": {
        +              "additionalProperties": {},
        +              "properties": {
        +                "display_name": {
        +                  "type": "string"
        +                },
        +                "icon": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "id": {
        +                  "description": "Pass as list_id to the other tools",
        +                  "type": "string"
        +                },
        +                "member_count": {
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "parent_list": {
        +                  "description": "Id of the screen this one refines",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "short_description": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                },
        +                "updated_at": {
        +                  "description": "Screen last rebuilt, ISO 8601 UTC",
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "id",
        +                "display_name",
        +                "short_description",
        +                "icon",
        +                "member_count",
        +                "updated_at",
        +                "parent_list"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "name",
        +          "description",
        +          "lists"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pricing": {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "description": "USD per call of each metered tool beyond the daily allowance",
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "as_of",
        +    "categories",
        +    "pricing",
        +    "allowance"
        +  ],
        +  "type": "object"
        +}
  7. 8 tool updates
    • First observedfind_symbol_lists
    • First observedget_list_criteria
    • First observedget_market_overview
    • First observedget_my_watchlist
    • First observedget_smart_list
    • First observedget_smart_list_changes
    • First observedget_smart_list_metrics
    • First observedlist_smart_lists

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides derived financial intelligence for AI agents, including insider activity analysis, earnings surprises, institutional moves, stock screening with a proprietary composite value score, and macro indicators.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Real-time Indian stock market sentiment intelligence. Provides NSE/BSE news sentiment, aggregated stock & sector signals, and technical analysis.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Realtime financial context for AI agents: what changed, who is affected, and what to watch next. One suite covering news, events, guidance, filing changes, sentiment, stakeholders, and alerts. Information-efficient responses with evidence for every result. First-class point-in-time safety for backtests. Pairs well with web search and a market-data API. All data is our own.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources