Skip to main content
Glama

Review multiple metrics

which_metrics_matter
Read-onlyIdempotent

Rank nonnegative evidence scores for a board of metrics; optionally apply e-Benjamini-Hochberg false-discovery control when all scores are valid e-values.

Instructions

Rank a named board of nonnegative evidence scores for review. By default valid_evalues=false: arbitrary nonnegative scores are ranked descriptively and selected stays empty. Set valid_evalues=true only when every input has a justified null expectation at most one; then e-Benjamini-Hochberg (e-BH) controls this family's expected false-discovery proportion at alpha, provided the supplied e-values are valid. The server cannot certify that assertion. Raw returns, z-scores, model confidence and did_it_change's monitoring statistic do not qualify as valid e-values. Use this after constructing evidence, not to detect a change from a time series. Returns ranked (metric/evidence pairs, descending score), selected, k, n_watched, threshold, descriptive_mean, validity, assumptions and guarantee. Threshold and board_evidence are null without e-value confirmation. Repeated boards are not automatically controlled. Example descriptive call: {"evidence":{"latency":12,"errors":3},"valid_evalues":false}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
alphaNoTarget expected false-discovery proportion for this supplied family, default 0.10 (10%), strictly between 0 and 1. Only controls selection conditionally when valid_evalues=true; it is not a per-metric probability.
evidenceYesMap 1–128 nonempty metric names (up to 128 characters) to finite nonnegative scores; larger scores rank first, ties use metric name. Valid e-values are dimensionless; unverified scores receive descriptive ranking only.
valid_evaluesNoCaller assertion that every score is a valid e-value with defined null, sampling/selection procedure and observation window. Default false performs ranking only. True enables conditional e-BH; it does not validate provenance or the statistical construction.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
kNoNumber selected.
noteNoSelection requests review, not trading.
alphaNoRequested expected false-discovery proportion bound, conditional on valid e-values.
errorNoValidation or computation failure message; inspect MCP isError or the HTTP status.
methodNoConditional e-BH or descriptive ranking.
rankedNoInputs sorted by decreasing value then name.
readingNoSelection interpretation.
selectedNoNames selected only when the caller attests valid e-values.
validityNoSelection contract.
guaranteeNoConditional e-BH statement; null for unverified inputs. Null means unavailable or not applicable, never zero.
n_watchedNoNumber of supplied metrics.
thresholdNoe-BH threshold; null without the caller's validity attestation. Null means unavailable or not applicable, never zero.
assumptionsNoOrdered statements or identifiers.
valid_evaluesNoCaller attestation, not a server certification.
board_evidenceNoMean supplied valid e-values; null without attestation. Null means unavailable or not applicable, never zero.
descriptive_meanNoMean supplied values, without certifying their statistical construction.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changedv0.4.3
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "alpha": {},
      +      "assumptions": {},
      +      "board_evidence": {},
      +      "descriptive_mean": {},
      +      "guarantee": {},
      +      "k": {},
      +      "method": {},
      +      "n_watched": {},
      +      "note": {},
      +      "ranked": {},
      +      "reading": {},
      +      "selected": {},
      +      "threshold": {},
      +      "valid_evalues": {},
      +      "validity": {}
      +    },
      +    "required": [
      +      "selected",
      +      "alpha",
      +      "k",
      +      "n_watched",
      +      "threshold",
      +      "board_evidence",
      +      "descriptive_mean",
      +      "ranked",
      +      "valid_evalues",
      +      "validity",
      +      "guarantee",
      +      "assumptions",
      +      "reading",
      +      "method",
      +      "note"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Existing tool-error payload; no successful result fields are implied.",
      +    "properties": {
      +      "error": {
      +        "description": "Validation or computation failure message; inspect MCP isError or the HTTP status.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "error"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / description
      Previous value: -"Tool-specific result object described in each tool's description. Check status/ok/state, reading, validity and limits before using numbers. MCP returns this object in structuredContent and JSON text; invalid input returns isError=true with an error field. No tool fetches sources or executes trades."New value: +"A complete nonempty supplied-family result, including unverified rankings. Empty input is a tool error. Tool errors retain the separate error-message shape."
    • addedOutput schema / properties
      Added value: +{
      +  "alpha": {
      +    "description": "Requested expected false-discovery proportion bound, conditional on valid e-values.",
      +    "type": "number"
      +  },
      +  "assumptions": {
      +    "description": "Ordered statements or identifiers.",
      +    "items": {
      +      "description": "One retained statement or identifier.",
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "board_evidence": {
      +    "anyOf": [
      +      {
      +        "description": "Mean supplied valid e-values; null without attestation.",
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Mean supplied valid e-values; null without attestation. Null means unavailable or not applicable, never zero."
      +  },
      +  "descriptive_mean": {
      +    "description": "Mean supplied values, without certifying their statistical construction.",
      +    "type": "number"
      +  },
      +  "error": {
      +    "description": "Validation or computation failure message; inspect MCP isError or the HTTP status.",
      +    "type": "string"
      +  },
      +  "guarantee": {
      +    "anyOf": [
      +      {
      +        "description": "Conditional e-BH statement; null for unverified inputs.",
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "Conditional e-BH statement; null for unverified inputs. Null means unavailable or not applicable, never zero."
      +  },
      +  "k": {
      +    "description": "Number selected.",
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "method": {
      +    "description": "Conditional e-BH or descriptive ranking.",
      +    "type": "string"
      +  },
      +  "n_watched": {
      +    "description": "Number of supplied metrics.",
      +    "minimum": 0,
      +    "type": "integer"
      +  },
      +  "note": {
      +    "description": "Selection requests review, not trading.",
      +    "type": "string"
      +  },
      +  "ranked": {
      +    "description": "Inputs sorted by decreasing value then name.",
      +    "items": {
      +      "additionalProperties": false,
      +      "description": "One ranked input.",
      +      "properties": {
      +        "evidence": {
      +          "description": "Supplied nonnegative value.",
      +          "type": "number"
      +        },
      +        "metric": {
      +          "description": "Caller-supplied name.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "evidence"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "reading": {
      +    "description": "Selection interpretation.",
      +    "type": "string"
      +  },
      +  "selected": {
      +    "description": "Names selected only when the caller attests valid e-values.",
      +    "items": {
      +      "description": "Caller-supplied metric name.",
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "threshold": {
      +    "anyOf": [
      +      {
      +        "description": "e-BH threshold; null without the caller's validity attestation.",
      +        "type": "number"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "description": "e-BH threshold; null without the caller's validity attestation. Null means unavailable or not applicable, never zero."
      +  },
      +  "valid_evalues": {
      +    "description": "Caller attestation, not a server certification.",
      +    "type": "boolean"
      +  },
      +  "validity": {
      +    "description": "Selection contract.",
      +    "enum": [
      +      "conditional_on_valid_evalues",
      +      "unverified_inputs"
      +    ],
      +    "type": "string"
      +  }
      +}
  2. Changed7 schema fields changedv0.4.3-glama.1
    • addedInput schema / properties / alpha / default
      Added value: +0.1
    • addedInput schema / properties / alpha / description
      Added value: +"Target expected false-discovery proportion for this supplied family, default 0.10 (10%), strictly between 0 and 1. Only controls selection conditionally when valid_evalues=true; it is not a per-metric probability."
    • addedInput schema / properties / evidence / additionalProperties / description
      Added value: +"Nonnegative evidence score for this metric; zero is allowed. Magnitude alone does not prove e-value validity."
    • addedInput schema / properties / evidence / description
      Added value: +"Map 1–128 nonempty metric names (up to 128 characters) to finite nonnegative scores; larger scores rank first, ties use metric name. Valid e-values are dimensionless; unverified scores receive descriptive ranking only."
    • addedInput schema / properties / valid_evalues / default
      Added value: +false
    • addedInput schema / properties / valid_evalues / description
      Added value: +"Caller assertion that every score is a valid e-value with defined null, sampling/selection procedure and observation window. Default false performs ranking only. True enables conditional e-BH; it does not validate provenance or the statistical construction."
    • addedOutput schema / description
      Added value: +"Tool-specific result object described in each tool's description. Check status/ok/state, reading, validity and limits before using numbers. MCP returns this object in structuredContent and JSON text; invalid input returns isError=true with an error field. No tool fetches sources or executes trades."
  3. Changed9 schema fields changedv0.4.1
    • removedInput schema / properties / alpha / description
      Removed value: -"false-discovery rate, default 0.1"
    • addedInput schema / properties / alpha / exclusiveMaximum
      Added value: +1
    • addedInput schema / properties / alpha / exclusiveMinimum
      Added value: +0
    • addedInput schema / properties / evidence / additionalProperties / minimum
      Added value: +0
    • removedInput schema / properties / evidence / description
      Removed value: -"metric name -> evidence value, e.g. the 'evidence' field from did_it_change"
    • addedInput schema / properties / evidence / maxProperties
      Added value: +128
    • addedInput schema / properties / evidence / minProperties
      Added value: +1
    • addedInput schema / properties / valid_evalues
      Added value: +{
      +  "type": "boolean"
      +}
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "type": "object"
      +}
  4. First observedv0.1.2

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent/non-destructive annotations: it discloses that the server cannot certify e-value validity, that threshold and board_evidence are null without confirmation, that repeated boards are not automatically controlled, and that raw returns, z-scores, model confidence and did_it_change's statistic do not qualify. That is exactly the destructive/validity context an agent needs for a mutation-free but statistically conditional operation.

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

Conciseness4/5

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

Front-loaded with the core action and default, and every sentence is load-bearing (validity caveats, disqualifying inputs, null returns). It is dense and somewhat long, and a few clauses restate schema facts, but there is no filler or marketing padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with nested objects, an output schema, and conditional statistical behavior, the description is complete: it covers the default vs asserted path, what is returned, what is null under each path, and the scope limit on repeated boards. Nothing needed to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot express: alpha only controls conditionally when valid_evalues=true and is not a per-metric probability, and the interaction between valid_evalues and what gets populated (threshold, board_evidence, selection). The evidence map is adequately covered by the schema.

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

Purpose5/5

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

States a specific verb and resource: rank a named board of nonnegative evidence scores for review. It distinguishes itself from siblings by naming did_it_change's monitoring statistic as non-qualifying and stating it is not for detecting change from a time series, so an agent can tell it apart from did_it_change or ab_test 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?

Gives explicit when-to-use conditions (set valid_evalues=true only when every input has a justified null expectation at most one), the default behavior (false gives descriptive ranking, selected stays empty), and a when-not-to-use exclusion (not to detect a change from a time series; use after constructing evidence). Alternatives are named by exclusion, which is decisive guidance.

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