Skip to main content
Glama

PredixLab

get_signals

Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
dateNo
marketNous

Output Schema

NameRequiredDescriptionDefault
dateYes
pivotNo
marketYes
alpharankNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changed
    • addedOutput schema / $defs / McpPivotSignal
      Added 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"
      +}
    • addedOutput schema / $defs / McpPivotSignalsResponse
      Added 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"
      +}
    • removedOutput schema / $defs / PivotAction
      Removed 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"
      -}
    • removedOutput schema / $defs / PivotPick
      Removed 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"
      -}
    • removedOutput schema / $defs / PivotPicksResponse
      Removed 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"
      -}
    • changedOutput schema / description
      Previous value: -"Combined signal board for a single coherent market session."New value: +"Combined board with slim Pivot events and the full AlphaRank section."
    • changedOutput schema / properties / pivot / anyOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/PivotPicksResponse"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/McpPivotSignalsResponse"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / title
      Previous value: -"SignalsResponse"New value: +"McpSignalsResponse"
  2. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, non-destructive and closed-world 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources