Skip to main content
Glama

Trace a move to its random draws

explain
Read-onlyIdempotent

Trace one ticker's daily price move down to the random draws behind each factor, as a replayable tree. Use it to see which draws moved that name's factors in a simulated market.

Instructions

Trace one name's price move on one day down to the random draws that caused it, as a tree: the day's log move at the top, then each factor, then the draw addresses beneath them. Every node can be replayed, and every number is measured by running the day again. Use explain_price_move to see which factors moved prices across the roster; use this for one name when you need to know which draws moved those factors. depth sets how much of the tree the render text shows. Builds and runs its own market for up to 60 days; read-only and deterministic.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dayNoThe trading day to explain, 1 to 60.
seedNoSimulation seed, an integer from 0 to 2**64 - 1. The same seed and arguments give the same result.
depthNoHow many levels of the tree the `render` text shows, 0 to 4. The `tree` field is always whole.
tickerNoOne ticker from the roster. Omit to take the largest moves (explain_price_move) or the first name (explain).
universeNoA roster document, usually the `universe` field of a build_universe result. Either {"size": n, "seed": s, "sectors": [...]} or {"instruments": [...]}. When given it replaces universe_size, universe_seed and universe_sectors.
universe_seedNoSeed that generates the roster, separate from the simulation seed. Ignored when `universe` is given.
universe_sizeNoNames in a generated roster, 2 to 120. Ignored when `universe` is given.
universe_sectorsNoLowercase sector ids to concentrate a generated roster on, for example ["technology", "energy"]. The ids: technology, financial_services, healthcare, energy, consumer_discretionary, consumer_staples, industrials, materials, real_estate, utilities, telecommunications, transportation. A concentrated roster is a named envelope gap, and the result says so.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly=true, idempotent=true, closed-world, so the safety profile is covered; the description nonetheless adds real behavioral context beyond them: it builds and runs its own market capped at 60 days, is deterministic, and every node can be replayed with numbers measured by re-running the day. The 'read-only' restatement is redundant with annotations, which keeps it just short of 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?

Front-loads what the tool produces before the routing guidance, and every sentence carries information (output shape, sibling boundary, depth scope, build cost, determinism). Slightly dense in the middle clause, but no filler.

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?

With an output schema present, return-value documentation is unnecessary, and the description covers the remaining agent-facing concerns: cost of building its own market, the 60-day horizon, determinism, and the tree/render distinction. Only the seed/universe interaction is left entirely to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented, including ticker's omit-behavior and universe's replacement semantics. The description adds the meaning of depth in terms of the `render` text specifically ('sets how much of the tree the render text shows'), but does not meaningfully elaborate the seed/universe parameters. Baseline 3 is appropriate.

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

Purpose5/5

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

Names a specific verb and resource ('Trace one name's price move on one day down to the random draws'), and describes the shape of the answer (a tree: log move, factors, draw addresses). It explicitly distinguishes itself from the sibling explain_price_move, so the agent can route without opening either schema.

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

Usage Guidelines5/5

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

States the alternative and the exact condition that selects it: 'Use explain_price_move to see which factors moved prices across the roster; use this for one name when you need to know which draws moved those factors.' Both the when and the not-when are present, plus the granularity difference (roster vs one name).

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