Skip to main content
Glama

Open AI analyst read

rayana_ai_analyst_read
Read-only

Open a ticker's AI analyst read: the current one, or a new one generated on the spot when the ticker has none (this can take about half a minute). Each ticker opened counts one read against the subscription's monthly allowance, once per day; re-opening it the same day is free. quota reports reads used and remaining this month and the reset date. books lists the Rayana AI model portfolios on the subscription's plan that hold the ticker (weight, since when, last change), and locked_count how many books on higher plans hold it. Errors for tickers outside the covered universe and when the allowance is used up.

Tool call template

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

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

Input Schema

NameRequiredDescriptionDefault
symbolYes

Output Schema

NameRequiredDescriptionDefault
readYes
booksNo
quotaYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / $defs / AnalystBookContext
      Added value: +{
      +  "description": "The book add-on (PHASE_1_10 §4): built in code per caller, never seen by\nthe model. `locked_count` is how many books above the caller's tier hold the\nticker: a count only, no names.",
      +  "properties": {
      +    "held_in": {
      +      "default": [],
      +      "items": {
      +        "$ref": "#/$defs/AnalystBookHolding"
      +      },
      +      "title": "Held In",
      +      "type": "array"
      +    },
      +    "locked_count": {
      +      "default": 0,
      +      "title": "Locked Count",
      +      "type": "integer"
      +    }
      +  },
      +  "title": "AnalystBookContext",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / AnalystBookEvent
      Added value: +{
      +  "description": "The newest public event for the ticker in one book, reason rewritten to\nthe public vocabulary (same window and rewrite as the book's own feed).",
      +  "properties": {
      +    "action": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Action"
      +    },
      +    "delta_weight_pct": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Delta Weight Pct"
      +    },
      +    "event_date": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Event Date"
      +    },
      +    "reason": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Reason"
      +    }
      +  },
      +  "title": "AnalystBookEvent",
      +  "type": "object"
      +}
    • addedOutput schema / $defs / AnalystBookHolding
      Added value: +{
      +  "description": "One book the caller's tier may open that holds the ticker, at the\nsnapshot the caller is entitled to.",
      +  "properties": {
      +    "as_of": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "As Of"
      +    },
      +    "delayed_to": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Delayed To"
      +    },
      +    "held_since": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Held Since"
      +    },
      +    "last_event": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/$defs/AnalystBookEvent"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "name": {
      +      "title": "Name",
      +      "type": "string"
      +    },
      +    "rank": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Rank"
      +    },
      +    "side": {
      +      "default": "long",
      +      "title": "Side",
      +      "type": "string"
      +    },
      +    "slug": {
      +      "title": "Slug",
      +      "type": "string"
      +    },
      +    "tier": {
      +      "title": "Tier",
      +      "type": "string"
      +    },
      +    "weight_pct": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Weight Pct"
      +    }
      +  },
      +  "required": [
      +    "slug",
      +    "name",
      +    "tier"
      +  ],
      +  "title": "AnalystBookHolding",
      +  "type": "object"
      +}
    • addedOutput schema / properties / books
      Added value: +{
      +  "$ref": "#/$defs/AnalystBookContext",
      +  "default": {
      +    "held_in": [],
      +    "locked_count": 0
      +  }
      +}
  2. Added

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses the ~30 second generation latency, the quota accounting rule (one read per ticker per day, same-day re-open free), the monthly reset, and the two failure modes (uncovered ticker, exhausted allowance). These are exactly the behavioral traits an agent needs before spending a metered resource, and none are inferable from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, then cost, then response fields, then errors — a sensible ordering with no filler. It is dense and slightly long, and the backtick field rundown (`quota`, `books`, `locked_count`) partially duplicates the existing output schema, but each clause carries real information.

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 one-parameter metered tool with an output schema, the description covers latency, quota consumption, response fields, and error conditions — everything needed to call it correctly and interpret a failure. The only meaningful omission is symbol format and universe coverage, which matters for avoiding the documented 'outside the covered universe' error.

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

Parameters3/5

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

Schema coverage is 0% for the single `symbol` parameter, so the description carries the burden. It implies the parameter is a ticker and mentions a 'covered universe' constraint, but never states the expected format (e.g. plain ticker vs exchange-qualified) or how to discover coverage. Adequate but with a real gap for a single-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Open a ticker's AI analyst read') and clarifies the two modes: returning the current read or generating a new one when none exists. That distinguishes it from data-retrieval siblings like rayana_ai_ticker or rayana_ai_analyst_brief, though it does not explicitly contrast with rayana_ai_ticker_analyst, which an agent might reasonably confuse with it.

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

Usage Guidelines4/5

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

It gives clear situational context: use it to get the existing read, and a fresh one is generated only when the ticker has none. It also flags the cost model (one read per ticker per day, free on re-open) and error cases, which effectively tells the agent when calling is cheap versus expensive. It stops short of naming an alternative sibling to use instead when the agent only wants a summary or doesn't want to spend quota.

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