PredixLab
Server Details
Daily US stock signals, screeners and options analysis over MCP (Streamable HTTP). Read-only. Bearer API key. Not investment advice.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 18 tools
Most tools target clearly distinct resources (quotes, gamma, technicals, screener, presets), but two pairs genuinely overlap. get_option_activity ('browse unusual-options activity with ticker-level pagination') and get_unusual_options ('unusual option activity grouped by symbol') are hard to tell apart, and get_signals vs. get_pivot_signals/get_alpharank_signals requires reading descriptions to understand the composite relationship.
Every tool follows a strict snake_case verb_noun pattern using a small set of verbs (get_, list_, run_). Names are predictable and domain terms (alpharank, pivot, options, screener) are used consistently across related tools.
At 18 tools the surface is on the heavier side, but the server spans several distinct data products (market data, AlphaRank, Pivot, options flow, screener), each of which justifies its own read tools. Nothing is clearly redundant except the get_option_activity/get_unusual_options pair.
Coverage is broad: quotes, market snapshot/overview/movers, technicals, options structure and gamma, multiple signal families with date discovery, and screener execution with presets. Minor gaps exist around symbol lookup/validation, saved screeners, and any fundamentals or news layer, but core workflows are reachable.
Available Tools
18 toolsget_alpharank_historyBRead-onlyIdempotentInspect
Get visible AlphaRank publications for a ticker, oldest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| market | No | us | |
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | No | |
| market | Yes | |
| symbol | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds useful ordering ('oldest first') and visibility scoping, but it does not explain what 'visible' means, how pagination works, or how limit/market affect results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It is terse, but structurally efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and annotations reduce the need to explain return values and safety. However, with 0% schema description coverage, the description is incomplete for invocation because it omits limit, market, and the meaning of 'visible' publications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only references 'ticker' for the symbol parameter and says nothing about limit or market, leaving two of three parameters without added meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: retrieves visible AlphaRank publications for a ticker, ordered oldest first. It is distinguishable from get_alpharank_signals, though it does not explicitly contrast itself with that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives no explicit when-to-use guidance, prerequisites, or alternatives. The phrase 'visible AlphaRank publications' implies a history lookup, but the agent is not told when to choose this over get_alpharank_signals or other sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alpharank_signalsARead-onlyIdempotentInspect
Get AlphaRank top-15 for a session; omit date for the latest visible session.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| market | No | us |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| items | No | |
| market | Yes | |
| horizon | No | |
| total_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the meaningful extra facts that the response is capped at the top 15 and that date omission resolves to the latest visible session.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the core behavior front-loaded and the default-behavior rule attached — no filler to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be explained, and the date default is covered. However, for a 0%-coverage tool the undocumented market parameter and the lack of any routing to get_alpharank_history leave meaningful gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must carry parameter meaning; it does explain the null/omitted date behavior, but says nothing about the market parameter (default "us", max length 20) or what values it accepts, leaving half the surface undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Get AlphaRank top-15 for a session") and reveals the result shape (top-15). It does not explicitly differentiate itself from the sibling get_alpharank_history, leaving the boundary to be inferred from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause "omit date for the latest visible session" gives a concrete usage rule for the date parameter, but there is no guidance on when to call this versus get_alpharank_history or other signal siblings, and no mention of the market scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gamma_exposureBRead-onlyIdempotentInspect
Get gamma exposure for a symbol; omit date for the latest visible analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| model | Yes | |
| scopes | No | |
| symbol | Yes | |
| spot_move | Yes | |
| generated_at | Yes | |
| previous_date | No | |
| contract_count | Yes | |
| underlying_price | Yes | |
| oi_gamma_coverage | Yes | |
| previous_underlying_price | No | |
| valid_gamma_contract_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior, so the bar is low. The description adds the useful nuance that results are scoped to what is "visible" (suggesting entitlement or data-availability limits) and that omitting date yields the latest analysis. It says nothing about units, aggregation level, or freshness, but the output schema covers return shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the action front-loaded and the optional-param rule appended. Nothing is wasted, though the extreme brevity leaves the concept of gamma exposure unqualified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with annotations and an output schema, most of the burden is already carried elsewhere. Still, the description doesn't clarify what "gamma exposure" aggregates (total vs. per strike/expiry) or what "visible" entails, which an agent would want before trusting the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load; it partially does by explaining the date default semantics (omit for latest). The symbol parameter's format constraints (pattern, length) live only in the schema, and the description adds no meaning about accepted symbol forms or whether date returns a historical snapshot.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource combo ("Get gamma exposure") scoped to a symbol, which is unambiguous on its own. It doesn't distinguish from siblings like get_options_structure or get_unusual_options, so an agent scanning the list can't tell exactly which options-exposure tool fits which need.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one concrete usage rule: omit date to get the latest visible analysis. That's helpful for the optional param but there is no guidance on when to prefer this over other options-analytics siblings, and no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_moversBRead-onlyIdempotentInspect
Get daily gainers, losers, activity, unusual volume, gaps or 52-week extremes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| category | No | gainers |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| entries | No | |
| category | Yes | |
| total_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the meaningful temporal scope word 'daily', but says nothing about the hard cap of 10 results, ranking order, or whether the ranking is intraday vs. end-of-day.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that enumerates the resource scope with zero filler. Nothing to trim and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required. However, for a tool spanning eight ranking categories, the description gives no sense of what distinguishes them or of result-count behavior beyond the schema's maximum, leaving meaningful inference work to the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The listed mover types map cleanly onto the category enum, but the naming is not literal (description's 'activity' is the enum's 'most_active', 'gaps' covers both gap_up and gap_down), so it adds modest clarification. The limit parameter — bounded 1-10 with a default of 10 — is documented only by schema constraints and gets no semantic treatment in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('daily gainers, losers, activity, unusual volume, gaps or 52-week extremes'), which concretely enumerates what the tool returns. It is distinguishable from get_quotes or get_market_snapshot by focusing on ranked movers rather than raw prices, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no routing to alternatives such as get_market_overview, get_market_snapshot, or run_screener. Usage is only implied by the list of mover types; an agent must infer from the category list when this beats a screener or snapshot call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_overviewBRead-onlyIdempotentInspect
Get breadth, sentiment and leading movers in one daily overview.
| Name | Required | Description | Default |
|---|---|---|---|
| movers_limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| breadth | Yes | |
| sentiment | Yes | |
| top_losers | No | |
| most_active | No | |
| top_gainers | No | |
| generated_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds that the tool combines breadth, sentiment, and leading movers into a daily overview, but does not add rate limits, freshness details, or other behavioral context beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is a single front-loaded sentence with no filler. Every phrase contributes to describing scope and contents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the annotations cover the safety profile. The description is complete enough to explain the tool's broad purpose, though it could better clarify how it differs from get_market_snapshot and what the optional movers_limit controls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'leading movers' without explaining the movers_limit parameter, its default, or its maximum. The parameter name is intuitive and schema constraints exist, but the description does not compensate for the missing semantic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Get) and resource (market overview), and lists the contents: breadth, sentiment, and leading movers. It is clear what the tool returns, but it does not explicitly distinguish itself from close siblings such as get_market_snapshot or get_market_movers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in one daily overview' implies a daily-use, high-level aggregation tool, but it gives no explicit when-to-use guidance or exclusions relative to alternatives. An agent can infer this is for a broad market glance rather than targeted data, but must guess versus get_market_snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_snapshotARead-onlyIdempotentInspect
Get the complete latest daily market snapshot, not a live tick feed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new context: the data is an end-of-day/latest daily snapshot with no streaming tick semantics, which materially affects how an agent should treat freshness. It stops short of stating update cadence or staleness window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. The scope qualifier arrives immediately rather than being buried after setup.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value enumeration is not required, and with no parameters the call surface is trivial. The one residual gap is that the snapshot's coverage (which markets/instruments) and refresh timing are unstated, though the "daily vs live" distinction covers the most important behavioral question.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals no filtering inputs are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Get the complete latest daily market snapshot") with the important qualifier that it is a daily snapshot rather than a live feed. It does not name a sibling outright, but the negative framing implicitly separates it from get_quotes. Clear enough for an agent to identify the resource, slightly short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause "not a live tick feed" implies the alternative (get_quotes / real-time quote tools) and the condition for choosing this one, but the routing is left to inference. No explicit "use this when..." statement and no exclusions named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_option_activityCRead-onlyIdempotentInspect
Browse visible unusual-options activity with ticker-level pagination.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description's only added behavioral fact is that results are 'visible' (permission-scoped) and paginated at ticker level, which is genuinely useful. It says nothing about ordering, staleness, or result caps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or repetition. It is appropriately terse for its length, though the brevity borders on under-specification rather than elegance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, for a paginated browse tool with an undocumented parameter set and a near-identical sibling, the description omits paging semantics, the 20-item cap, and how it differs from get_unusual_options. Those gaps leave an agent unable to call it correctly in ambiguous cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the two parameters (limit with max 20, offset) carry no documented meaning from either source. The phrase 'ticker-level pagination' hints that pagination aggregates rows per ticker, but neither limit nor offset is explained and the hard cap of 20 is never surfaced in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'browse' and resource 'unusual-options activity' are stated, so the general purpose is legible. But it does not distinguish itself from the close sibling get_unusual_options, nor does 'visible' clarify whose visibility is meant. An agent cannot confidently route between the two options tools on this sentence alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_unusual_options, run_screener, or list_option_activity_dates. No prerequisites or context (e.g., date bounds supplied by a sibling listing tool) are mentioned. The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_options_structureCRead-onlyIdempotentInspect
Get the latest visible implied-volatility and positioning structure for a symbol.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| symbol | Yes | |
| summary | Yes | |
| generated_at | Yes | |
| previous_date | No | |
| term_structure | No | |
| skew_expirations | No | |
| underlying_price | Yes | |
| position_migrations | No | |
| previous_underlying_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile is covered. The description adds only the qualifiers "latest" and "visible," hinting at freshness/entitlement filtering but never explaining what "visible" means (delayed data? subscription gating?). No mention of scope, limits, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no boilerplate or waste. It is efficient, though its terseness comes at the cost of the clarity gaps noted above rather than being tight and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described. However, given a jargon-heavy purpose and zero schema parameter documentation, the description leaves an agent unsure what distinguishes this from other options-analytics siblings or what "visible" constrains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required `symbol` parameter, so the description must compensate and only weakly does: "for a symbol" implies an underlying ticker but says nothing about accepted formats (the pattern permits index-style symbols like ^SPX) or whether option expiries are implied by the call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a verb ("Get") and a resource ("implied-volatility and positioning structure"), which is more specific than a tautology. But "positioning structure" and "structure" are unexplained jargon, so an agent cannot tell precisely what data comes back or how this differs from siblings like get_gamma_exposure or get_option_activity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no alternatives are named, despite many adjacent siblings that also deal with options activity/exposure. The agent must guess whether this is a screening tool, a snapshot tool, or an analytics tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pivot_signalsBRead-onlyIdempotentInspect
Get Pivot signals by session, direction and event; omit date for latest visible.
Items contain only date, symbol, event, kind, direction and horizon (trading days), grouped into longs and shorts.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| event | No | ||
| limit | No | ||
| market | No | us | |
| direction | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| longs | No | |
| counts | No | Events by type for this session |
| market | Yes | |
| shorts | No | |
| horizon | No | |
| total_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the bar is lower; the description still adds the useful default behavior when date is omitted (latest visible) and describes what the returned items contain and how they are grouped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior and kept to three tight lines, with the default-date rule placed early. Slight waste in the parenthetical about trading days, but nothing significant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema and annotations carry the safety and return-shape burden, but with five optional parameters and zero schema coverage, an agent still lacks guidance on 'market' and 'limit' (including the 200 cap) to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description documents only three of the five parameters (date behavior, direction, event), leaving 'market' and 'limit' entirely unexplained; it also adds no format or range details. The word 'session' does not map cleanly to any declared parameter, which is mildly confusing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Get Pivot signals') and the axes it is keyed by (session/direction/event). It is distinguishable from get_signals and get_alpharank_signals by the 'Pivot' qualifier, though the description never explicitly contrasts them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'omit date for latest visible' is a concrete usage rule, but there is no guidance on when to prefer this over sibling tools like get_signals or get_alpharank_signals, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_quotesARead-onlyIdempotentInspect
Get latest session quotes for 1-50 symbols, not real-time streaming prices.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuine value beyond them by disclosing data freshness — quotes are end-of-session, not live streaming — which prevents an agent from mistaking this for a real-time feed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the core capability front-loaded and the freshness caveat appended; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover safety for this simple read tool. The remaining gap is minor: 'session' is undefined (pre-market, regular hours, or last close) and error behavior for unresolvable symbols is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, but schema description coverage is 0%, so the description must compensate. It does restate the 1-50 bound (already encoded as minItems/maxItems) but says nothing about symbol format, exchange suffixes, or what happens with invalid or delisted symbols.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('latest session quotes') plus the cardinality limit (1-50 symbols). It distinguishes itself from streaming price feeds, but does not differentiate from the closely related sibling get_market_snapshot or get_market_overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'not real-time streaming prices' hints at when this is inappropriate but is not an explicit when-to-use rule, and no sibling alternative is named. An agent must infer from the sibling list whether it wants quotes or a snapshot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signalsARead-onlyIdempotentInspect
Get the combined Pivot/AlphaRank board; omit date for the latest visible session.
Pivot items contain only date, symbol, event, kind, direction and horizon (trading days). AlphaRank is returned in full. Free accounts retain the REST API's delayed-data window. Dates are YYYY-MM-DD.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| market | No | us |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| pivot | No | |
| market | Yes | |
| alpharank | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and closed-world semantics, so the safety profile is free. The description adds genuinely non-obvious context: that free accounts inherit the REST API's delayed-data window, and that Pivot results are trimmed to a fixed field set while AlphaRank is returned in full. Notes on rate limits or empty/error responses are absent, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each contributing distinct information, with the core purpose front-loaded before the payload details and caveats. The forced line breaks fragment sentences awkwardly but add no filler. Nothing wastes space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter read tool with full annotations and an output schema, the description covers what it returns, the date format and default behavior, and an account-tier caveat. The sole material hole is the undocumented market parameter, which could cause an agent to pass an invalid or unintended value. Return-value explanation is partly redundant with the output schema but still clarifies the Pivot/AlphaRank asymmetry.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load: it explains the date parameter's format ('Dates are YYYY-MM-DD') and the meaning of omitting it. The market parameter, which defaults to 'us', is never mentioned — no valid values, no default behavior, no effect on results. Half the parameters are documented, which is partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get the combined Pivot/AlphaRank board') and the word 'combined' implicitly distinguishes it from the sibling tools get_pivot_signals and get_alpharank_signals. It goes further and characterizes what each half of the payload contains, so an agent can tell it apart from the single-source siblings without opening a schema. It stops short of explicitly naming those siblings or saying 'use this instead of calling both.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'omit date for the latest visible session' gives a clear default behavior for the optional parameter, and the delayed-data note hints at a usage constraint for free accounts. However, there is no explicit when-to-use/when-not-to-use statement relative to get_pivot_signals, get_alpharank_signals, or list_signal_dates, and no prerequisites or exclusions are named. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_technical_analysisBRead-onlyIdempotentInspect
Get a symbol's trend, momentum, key levels and technical interpretation.
| Name | Required | Description | Default |
|---|---|---|---|
| symbol | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| quote | Yes | |
| trend | Yes | |
| levels | No | |
| signal | Yes | |
| symbol | Yes | |
| signals | No | |
| narrative | No | |
| indicators | No | |
| performance | No | |
| signal_score | Yes | Net bullish score in the range [-1, 1] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds only that the result includes trend, momentum, key levels and an interpretation — useful framing, but it does not say how the values are computed, what timeframe they assume, or how the interpretation should be read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with zero filler; every word names a distinct output component. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. What remains missing is the one thing an agent cannot infer: what counts as a valid symbol and what timeframe the analysis assumes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden and it does not: 'a symbol's' is the only hint, with no format, example, or asset-class scope (equity, index, option root). The schema's regex and 32-char limit constrain shape but not meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb + resource ('Get a symbol's trend, momentum, key levels and technical interpretation'), and the enumerated components make it clearly distinct from quote, signal and screener siblings. It stops short of naming a sibling alternative, but the analytical content sets it apart on its own.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to reach for this versus get_signals, get_pivot_signals, get_market_snapshot or get_quotes, all of which could plausibly overlap. No prerequisites, timeframe assumptions, or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unusual_optionsARead-onlyIdempotentInspect
Get unusual option activity grouped by symbol, up to 20 tickers per session.
Omit date for the latest visible session. Free-account data delays still apply. Activity is descriptive market data, not a recommendation or a trade instruction.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds value beyond them: a 20-ticker result cap, a note that free-account data delays apply, and a disclaimer that the output is descriptive rather than advisory. It does not describe pagination or session-boundary behavior, but the added context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with scope and the ticker cap before the operational and compliance notes. The 'not a recommendation' disclaimer earns its place as a compliance constraint, though it could be trimmed slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. Combined with the date-omission rule, result cap, and data-delay caveat, an agent has enough to invoke it correctly; only sibling differentiation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the burden, and it does explain the meaning of the nullable date default ('omit date for the latest visible session'). It does not state the accepted date format or range, which the schema only implies via format: date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get unusual option activity') plus the aggregation shape ('grouped by symbol') and a hard cap ('up to 20 tickers'). It is distinguishable from get_option_activity by the 'unusual' qualifier, but it never names that sibling or clarifies how the two differ.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Omit date for the latest visible session' is a concrete operational rule for the single optional parameter. However, there is no guidance on when to prefer this over get_option_activity, get_options_structure, or list_option_activity_dates, and no stated exclusions or preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_option_activity_datesBRead-onlyIdempotentInspect
List unusual-options activity sessions visible to this account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| dates | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds a genuine scope constraint ('visible to this account'), which is useful, but says nothing about ordering, pagination, or how many sessions typically come back beyond the schema default.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient but so terse that it leaves obvious questions unanswered that a second sentence could have closed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full annotations, the description only needs to cover intent, the meaning of 'session', and the limit. It covers intent but leaves 'session', the returned date granularity, and the limit semantics undefined, and never links to the sibling tools that consume these dates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the single 'limit' parameter is undocumented in both schema and description; the description never says what is being limited (sessions? days?). The schema still supplies type, default 60, and 1-800 bounds, which makes the parameter largely self-explanatory despite the gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (List) and resource (unusual-options activity sessions), so the agent knows it enumerates sessions rather than returning the activity data itself. It does not distinguish itself from close siblings like get_option_activity or get_unusual_options, which the name 'dates' hints at but the description never resolves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this instead of get_option_activity or get_unusual_options, and no mention of what the listed sessions are used for (e.g. as input to a follow-up call). The only context is the vague scope phrase 'visible to this account'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_screener_presetsARead-onlyIdempotentInspect
Discover built-in screener strategy IDs and their criteria.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| presets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds only that the presets are 'built-in' and include 'criteria'; it says nothing about the count, stability, or structure of results, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; every word (built-in, strategy IDs, criteria) carries information about what is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters, an output schema present, and full annotation coverage, the description supplies the one thing structured fields cannot: what a 'preset' actually is (a built-in strategy with criteria). Only a direct pointer to run_screener_preset as the consumer is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly makes no parameter claims.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('Discover') and a specific resource ('built-in screener strategy IDs and their criteria'), so an agent knows exactly what comes back. It implicitly distinguishes itself from the sibling run_screener_preset (list vs. execute), though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the discovery step that yields IDs to feed into run_screener_preset or run_screener. There is no explicit 'use this when...' statement or named alternative, so routing requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_signal_datesBRead-onlyIdempotentInspect
List published signal sessions visible to this account, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| market | No | us |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| dates | No | |
| market | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive and closed-world, so the safety profile is covered. The description adds two genuinely useful facts beyond that — result ordering ('newest first') and account-scoped visibility — but says nothing about pagination, whether limit truncates silently, or how the 800 max behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; scope and ordering arrive immediately. It is efficiently written, though arguably too terse given the undocumented parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail is unnecessary. But for a discovery tool with two undocumented parameters and no stated relationship to get_signals, the description does not give quite enough for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the parameter burden and it does not. Neither 'limit' (default 60, max 800) nor 'market' (default 'us', maxLength 20) is mentioned, leaving the agent to guess whether 'market' is a country code, exchange, or segment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'List published signal sessions visible to this account, newest first,' which tells an agent exactly what it gets and in what order. It does not, however, distinguish this date/index tool from the many sibling signal getters (get_signals, get_pivot_signals, get_alpharank_signals), so an agent must infer the relationship.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance and no mention of the obvious pairing (call this to discover dates/availability, then call get_signals to fetch content). Nothing rules in or out alternatives, and no prerequisites are stated despite the implicit auth-scoped visibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_screenerBRead-onlyIdempotentInspect
Screen the daily snapshot using typed filters, sorting and pagination.
Supports all, sp500 and nasdaq100 universes. Results are capped at 200 per page.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| limit | No | |
| offset | No | |
| matches | No | |
| total_count | No | |
| universe_size | No | Symbols scanned, after the index filter and before the criteria |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds two useful operational facts not in annotations: the supported universes and the 200-row page cap. It does not say which session the 'daily snapshot' reflects (freshness/staleness), whether results are deterministic, or that pagination via offset requires a stable sort — the things an agent actually needs when chaining pages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, no filler. It could be one sentence without loss, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is not required, and annotations cover safety. For a tool with a large nested filter surface and a sibling preset workflow, though, the description omits snapshot freshness, filter combination semantics (AND across fields), and when pagination is needed — meaningful gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Top-level schema description coverage is reported as 0% and the single `request` parameter is undocumented, so the description must carry meaning — it does establish that the request bundles filters, sorting and pagination, and names the three universes (also constrained by the StockIndex enum). It says nothing about the ~35 filter fields, default limit 50, or the default sort of change_percent desc, leaving the bulk of parameter meaning to the nested schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Screen the daily snapshot') plus the three mechanisms (typed filters, sorting, pagination), which is concrete enough to distinguish it from read-only snapshot siblings like get_market_snapshot. It does not name run_screener_preset or list_screener_presets, so the boundary with the preset path is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance and no exclusions; nothing tells an agent to prefer run_screener_preset when a saved screen exists or to call list_screener_presets first. The only context offered is the universe list and the page cap, which are capability facts, not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_screener_presetBRead-onlyIdempotentInspect
Run a built-in screener preset in an index universe; no strategy is saved.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | all | |
| limit | No | ||
| offset | No | ||
| preset_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | No | |
| limit | No | |
| offset | No | |
| matches | No | |
| total_count | No | |
| universe_size | No | Symbols scanned, after the index filter and before the criteria |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context that no strategy is saved, but does not mention pagination, permissions, or result limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It quickly communicates the action, scope, and a key persistence constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter tool with weak schema descriptions, the description leaves important gaps, especially how to obtain a valid preset_id and what limit/offset do. The output schema covers return values, but the invocation context is still under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only hints at the preset and index-universe concepts, while schema description coverage is effectively 0% for the parameters. It does not explain preset_id validity, limit, offset, or the enum behavior for index.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: running a built-in screener preset in an index universe. The phrase 'no strategy is saved' helps distinguish it from a custom strategy workflow, though it does not name the sibling tools run_screener or list_screener_presets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when running a built-in preset, but gives no explicit when-to-use guidance, exclusions, or directions to discover preset IDs via list_screener_presets. It also does not clarify when to choose this over run_screener.
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.
2 tool updates
- Changed
get_pivot_signals7 fields changed- added
Output schema / $defs / McpPivotSignalAdded value: +{ + "description": "One Pivot event with only the fields exposed to MCP clients.", + "properties": { + "date": { + "description": "Signal session (YYYY-MM-DD)", + "title": "Date", + "type": "string" + }, + "direction": { + "$ref": "#/$defs/PickDirection" + }, + "event": { + "$ref": "#/$defs/PickEvent" + }, + "horizon": { + "description": "Prediction horizon in trading days", + "title": "Horizon", + "type": "integer" + }, + "kind": { + "$ref": "#/$defs/PickKind" + }, + "symbol": { + "title": "Symbol", + "type": "string" + } + }, + "required": [ + "date", + "symbol", + "event", + "kind", + "direction", + "horizon" + ], + "title": "McpPivotSignal", + "type": "object" +} - removed
Output schema / $defs / PivotActionRemoved value: -{ - "description": "The model's *state* label on the bar that triggered the event.\n\nContext only. It does **not** determine the side: an event is dated by its\ntrigger bar while its setup may be up to three sessions earlier, so by the\ntime a reversal confirms the state has often decayed to ``NEUTRAL`` or flipped\noutright. ``direction`` is the decision.", - "enum": [ - "STRONGLY_BULLISH", - "BULLISH", - "NEUTRAL", - "BEARISH", - "STRONGLY_BEARISH" - ], - "title": "PivotAction", - "type": "string" -} - removed
Output schema / $defs / PivotPickRemoved value: -{ - "description": "One published model event for one symbol on one session.", - "properties": { - "action": { - "$ref": "#/$defs/PivotAction" - }, - "close": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Close" - }, - "confidence": { - "description": "Conviction percentile within the day's full cross-section", - "title": "Confidence", - "type": "number" - }, - "date": { - "description": "Session the pick was published for (YYYY-MM-DD)", - "title": "Date", - "type": "string" - }, - "days_to_max_gain": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Trading days from the signal to its best point", - "title": "Days To Max Gain" - }, - "days_to_max_loss": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Trading days from the signal to its worst point", - "title": "Days To Max Loss" - }, - "direction": { - "$ref": "#/$defs/PickDirection" - }, - "event": { - "$ref": "#/$defs/PickEvent" - }, - "excess_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "signal_return with the day's common market move removed", - "title": "Excess Return" - }, - "forward_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The stock's own return over the horizon", - "title": "Forward Return" - }, - "horizon": { - "default": 10, - "description": "Prediction horizon in trading days", - "title": "Horizon", - "type": "integer" - }, - "kind": { - "$ref": "#/$defs/PickKind" - }, - "market": { - "default": "us", - "title": "Market", - "type": "string" - }, - "max_gain": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Best the position was ever up during the horizon, intraday highs included", - "title": "Max Gain" - }, - "max_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Worst the position was ever down during the horizon, intraday lows included", - "title": "Max Loss" - }, - "p_up": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Probability the horizon return is positive", - "title": "P Up" - }, - "path_complete": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "False while the horizon has not fully elapsed, so a partial path is not read as a final one", - "title": "Path Complete" - }, - "pivot_hit": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether this reversal landed within a few bars of a real swing point. Null for trend entries, which are not turning points.", - "title": "Pivot Hit" - }, - "price": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Un-rebased tradeable close", - "title": "Price" - }, - "rank": { - "description": "Presentation order within its side that day; it gates nothing", - "title": "Rank", - "type": "integer" - }, - "rationale": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "'; '-separated plain-language drivers", - "title": "Rationale" - }, - "score": { - "description": "Signed conviction; positive is bullish", - "title": "Score", - "type": "number" - }, - "signal_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The same return from the position's side; negated for shorts", - "title": "Signal Return" - }, - "sustained_bullish": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Share of the last 40 sessions the model called bullish (context, not a gate)", - "title": "Sustained Bullish" - }, - "swing_position": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "0 = expected local low, 1 = expected local high", - "title": "Swing Position" - }, - "symbol": { - "title": "Symbol", - "type": "string" - } - }, - "required": [ - "date", - "symbol", - "event", - "kind", - "direction", - "rank", - "action", - "score", - "confidence" - ], - "title": "PivotPick", - "type": "object" -} - changed
Output schema / descriptionPrevious value: -"One session's events, split by side.\n\nAn empty response is a real answer: most sessions fire nothing, and 14 of\n754 walk-forward sessions fired nothing at all."New value: +"One session's slim Pivot events, preserving the board metadata." - changed
Output schema / properties / longs / items / $refPrevious value: -"#/$defs/PivotPick"New value: +"#/$defs/McpPivotSignal" - changed
Output schema / properties / shorts / items / $refPrevious value: -"#/$defs/PivotPick"New value: +"#/$defs/McpPivotSignal" - changed
Output schema / titlePrevious value: -"PivotPicksResponse"New value: +"McpPivotSignalsResponse"
- Changed
get_signals8 fields changed- added
Output schema / $defs / McpPivotSignalAdded value: +{ + "description": "One Pivot event with only the fields exposed to MCP clients.", + "properties": { + "date": { + "description": "Signal session (YYYY-MM-DD)", + "title": "Date", + "type": "string" + }, + "direction": { + "$ref": "#/$defs/PickDirection" + }, + "event": { + "$ref": "#/$defs/PickEvent" + }, + "horizon": { + "description": "Prediction horizon in trading days", + "title": "Horizon", + "type": "integer" + }, + "kind": { + "$ref": "#/$defs/PickKind" + }, + "symbol": { + "title": "Symbol", + "type": "string" + } + }, + "required": [ + "date", + "symbol", + "event", + "kind", + "direction", + "horizon" + ], + "title": "McpPivotSignal", + "type": "object" +} - added
Output schema / $defs / McpPivotSignalsResponseAdded value: +{ + "description": "One session's slim Pivot events, preserving the board metadata.", + "properties": { + "counts": { + "additionalProperties": { + "type": "integer" + }, + "description": "Events by type for this session", + "title": "Counts", + "type": "object" + }, + "date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Date" + }, + "horizon": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Horizon" + }, + "longs": { + "items": { + "$ref": "#/$defs/McpPivotSignal" + }, + "title": "Longs", + "type": "array" + }, + "market": { + "title": "Market", + "type": "string" + }, + "shorts": { + "items": { + "$ref": "#/$defs/McpPivotSignal" + }, + "title": "Shorts", + "type": "array" + }, + "total_count": { + "default": 0, + "title": "Total Count", + "type": "integer" + } + }, + "required": [ + "market" + ], + "title": "McpPivotSignalsResponse", + "type": "object" +} - removed
Output schema / $defs / PivotActionRemoved value: -{ - "description": "The model's *state* label on the bar that triggered the event.\n\nContext only. It does **not** determine the side: an event is dated by its\ntrigger bar while its setup may be up to three sessions earlier, so by the\ntime a reversal confirms the state has often decayed to ``NEUTRAL`` or flipped\noutright. ``direction`` is the decision.", - "enum": [ - "STRONGLY_BULLISH", - "BULLISH", - "NEUTRAL", - "BEARISH", - "STRONGLY_BEARISH" - ], - "title": "PivotAction", - "type": "string" -} - removed
Output schema / $defs / PivotPickRemoved value: -{ - "description": "One published model event for one symbol on one session.", - "properties": { - "action": { - "$ref": "#/$defs/PivotAction" - }, - "close": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Close" - }, - "confidence": { - "description": "Conviction percentile within the day's full cross-section", - "title": "Confidence", - "type": "number" - }, - "date": { - "description": "Session the pick was published for (YYYY-MM-DD)", - "title": "Date", - "type": "string" - }, - "days_to_max_gain": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Trading days from the signal to its best point", - "title": "Days To Max Gain" - }, - "days_to_max_loss": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Trading days from the signal to its worst point", - "title": "Days To Max Loss" - }, - "direction": { - "$ref": "#/$defs/PickDirection" - }, - "event": { - "$ref": "#/$defs/PickEvent" - }, - "excess_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "signal_return with the day's common market move removed", - "title": "Excess Return" - }, - "forward_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The stock's own return over the horizon", - "title": "Forward Return" - }, - "horizon": { - "default": 10, - "description": "Prediction horizon in trading days", - "title": "Horizon", - "type": "integer" - }, - "kind": { - "$ref": "#/$defs/PickKind" - }, - "market": { - "default": "us", - "title": "Market", - "type": "string" - }, - "max_gain": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Best the position was ever up during the horizon, intraday highs included", - "title": "Max Gain" - }, - "max_loss": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Worst the position was ever down during the horizon, intraday lows included", - "title": "Max Loss" - }, - "p_up": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Probability the horizon return is positive", - "title": "P Up" - }, - "path_complete": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "False while the horizon has not fully elapsed, so a partial path is not read as a final one", - "title": "Path Complete" - }, - "pivot_hit": { - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Whether this reversal landed within a few bars of a real swing point. Null for trend entries, which are not turning points.", - "title": "Pivot Hit" - }, - "price": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Un-rebased tradeable close", - "title": "Price" - }, - "rank": { - "description": "Presentation order within its side that day; it gates nothing", - "title": "Rank", - "type": "integer" - }, - "rationale": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "'; '-separated plain-language drivers", - "title": "Rationale" - }, - "score": { - "description": "Signed conviction; positive is bullish", - "title": "Score", - "type": "number" - }, - "signal_return": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "The same return from the position's side; negated for shorts", - "title": "Signal Return" - }, - "sustained_bullish": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Share of the last 40 sessions the model called bullish (context, not a gate)", - "title": "Sustained Bullish" - }, - "swing_position": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "0 = expected local low, 1 = expected local high", - "title": "Swing Position" - }, - "symbol": { - "title": "Symbol", - "type": "string" - } - }, - "required": [ - "date", - "symbol", - "event", - "kind", - "direction", - "rank", - "action", - "score", - "confidence" - ], - "title": "PivotPick", - "type": "object" -} - removed
Output schema / $defs / PivotPicksResponseRemoved value: -{ - "description": "One session's events, split by side.\n\nAn empty response is a real answer: most sessions fire nothing, and 14 of\n754 walk-forward sessions fired nothing at all.", - "properties": { - "counts": { - "additionalProperties": { - "type": "integer" - }, - "description": "Events by type for this session", - "title": "Counts", - "type": "object" - }, - "date": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Date" - }, - "horizon": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Horizon" - }, - "longs": { - "items": { - "$ref": "#/$defs/PivotPick" - }, - "title": "Longs", - "type": "array" - }, - "market": { - "title": "Market", - "type": "string" - }, - "shorts": { - "items": { - "$ref": "#/$defs/PivotPick" - }, - "title": "Shorts", - "type": "array" - }, - "total_count": { - "default": 0, - "title": "Total Count", - "type": "integer" - } - }, - "required": [ - "market" - ], - "title": "PivotPicksResponse", - "type": "object" -} - changed
Output schema / descriptionPrevious value: -"Combined signal board for a single coherent market session."New value: +"Combined board with slim Pivot events and the full AlphaRank section." - changed
Output schema / properties / pivot / anyOfPrevious value: -[ - { - "$ref": "#/$defs/PivotPicksResponse" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/McpPivotSignalsResponse" + }, + { + "type": "null" + } +] - changed
Output schema / titlePrevious value: -"SignalsResponse"New value: +"McpSignalsResponse"
18 tool updates
- First observed
get_alpharank_history - First observed
get_alpharank_signals - First observed
get_gamma_exposure - First observed
get_market_movers - First observed
get_market_overview - First observed
get_market_snapshot - First observed
get_option_activity - First observed
get_options_structure - First observed
get_pivot_signals - First observed
get_quotes - First observed
get_signals - First observed
get_technical_analysis - First observed
get_unusual_options - First observed
list_option_activity_dates - First observed
list_screener_presets - First observed
list_signal_dates - First observed
run_screener - First observed
run_screener_preset
Publisher details
- Operator
- PredixLab
- Operator website
- https://predixlab.com
- Vendor relationship
- Unknown
- Documentation
- https://predixlab.com/docs/mcp/
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRemote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs115 npm58 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1623 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.