Skip to main content
Glama
Quantified Self MCP Server

Quantified Self MCP Server

Explain a metric change

explain_metric_change
Read-onlyIdempotent

Builds an evidence bundle for why a metric looked unusual on a given date: baseline comparison, anomaly check, trend, and correlated metrics.

Instructions

Build an evidence bundle for "why did my look like that on ?": that day's value against a 90-day baseline, whether it qualifies as an anomaly, the trend leading into it, and any other metric that correlates with it strongly enough to be worth mentioning. Returns facts, not an explanation — turning "sleep was 2.6 stdev below baseline and resting heart rate correlates at r=0.71" into an actual answer for the person is what the calling model should do with these facts, not something this tool guesses at itself.

Do not use this tool when:

  • scanning across many metrics for what changed lately, without a specific metric/date in mind -> use get_recent_changes instead.

  • you only need one piece of this bundle (just the baseline, just the trend, just anomalies, or just a correlation) rather than the full why-explanation -> use get_baseline, calculate_metric_trend, detect_metric_anomalies, or find_metric_correlation directly instead.

Privacy note: this server and its SQLite file are entirely local, but the data returned by this tool becomes part of the conversation sent to whatever model the calling client is configured with. If that model runs in the cloud rather than on your machine, treat this the same as pasting the data into a chat with that provider.

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": {
      "metric": "<metric>",
      "date": "<date>"
    },
    "name": "explain_metric_change"
  }
}

Input Schema

NameRequiredDescriptionDefault
dateYesThe day to explain, formatted YYYY-MM-DD.
metricYesOne of steps, sleep_hours, resting_heart_rate, weight_kg, workout_minutes, mood, water_ml, heart_rate, hrv_ms.

Output Schema

NameRequiredDescriptionDefault
dateYes
trendYes
valueNo
metricYes
baselineYes
sessionsNo
is_anomalyYes
data_healthNoWhether the data behind this result is complete and current (the weaker of the two windows).
trend_claimYesEvidence and decision for the 30-day trend leading into this day, assessed separately from the headline claim. Read trend_claim.decision before reporting it.
baseline_claimYesEvidence and decision for the 90-day baseline statistics reported in "baseline" (and quoted in narrative_facts). Read baseline_claim.decision before stating what is typical for this metric; it is one of the components overall_decision is the weakest of.
baseline_rangeYes
headline_claimYesEvidence and decision for the headline claim: this day's value against its 90-day baseline. Read headline_claim.decision before reporting it.
narrative_factsYes
conflicting_daysNo
modified_z_scoreNo
overall_decisionYesThe single decision governing this whole result: weakest-of-N over the headline claim (headline_claim.decision), the trend (trend_claim.decision), and every surfaced correlation's own decision. If any component is insufficient/suggestive, the composite is too — report overall_decision.tier and must_state rather than treating the headline claim as though the trend and correlations couldn't drag it down.
correlated_metricsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.0.36
    • addedOutput schema / properties / sessions / items / properties / duration_minutes / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / sessions / items / properties / duration_minutes / type
      Removed value: -"integer"
  2. Changed2 schema fields changedv1.0.30
    • addedOutput schema / properties / correlated_metrics / items / properties / data_health
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Data-quality state behind one result (not a medical or statistical confidence score). status is one of\nVALID, VALID_WITH_GAPS, MIXED_SOURCES, INSUFFICIENT_DATA, STALE, IMPORT_INCOMPLETE; reasons lists every\ncondition that\napplies. See data_health.compose_data_health for how it is decided.",
      +      "properties": {
      +        "completeness": {
      +          "properties": {
      +            "coverage_ratio": {
      +              "type": "number"
      +            },
      +            "expected_days": {
      +              "type": "integer"
      +            },
      +            "missing_days": {
      +              "type": "integer"
      +            },
      +            "observed_days": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "expected_days",
      +            "observed_days",
      +            "coverage_ratio",
      +            "missing_days"
      +          ],
      +          "type": "object"
      +        },
      +        "coverage": {
      +          "properties": {
      +            "end": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            },
      +            "requested_end": {
      +              "type": "string"
      +            },
      +            "requested_start": {
      +              "type": "string"
      +            },
      +            "start": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            }
      +          },
      +          "required": [
      +            "requested_start",
      +            "requested_end"
      +          ],
      +          "type": "object"
      +        },
      +        "freshness": {
      +          "properties": {
      +            "age_days": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Days from the latest observation to the end of the requested window."
      +            },
      +            "dataset_days_behind": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Days from the dataset's latest data (any metric) to today."
      +            },
      +            "latest_data": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "last_import": {
      +          "anyOf": [
      +            {
      +              "properties": {
      +                "finished_at": {
      +                  "anyOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "default": null
      +                },
      +                "importer": {
      +                  "type": "string"
      +                },
      +                "source_file": {
      +                  "anyOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "default": null
      +                },
      +                "status": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "importer",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "last_successful_import": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observations": {
      +          "description": "Number of daily values the result is computed from.",
      +          "type": "integer"
      +        },
      +        "reasons": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "reasons",
      +        "freshness",
      +        "coverage",
      +        "completeness",
      +        "gaps",
      +        "observations"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Whether the data behind this result is complete and current (the weaker of the two metrics)."
      +}
    • addedOutput schema / properties / data_health
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Data-quality state behind one result (not a medical or statistical confidence score). status is one of\nVALID, VALID_WITH_GAPS, MIXED_SOURCES, INSUFFICIENT_DATA, STALE, IMPORT_INCOMPLETE; reasons lists every\ncondition that\napplies. See data_health.compose_data_health for how it is decided.",
      +      "properties": {
      +        "completeness": {
      +          "properties": {
      +            "coverage_ratio": {
      +              "type": "number"
      +            },
      +            "expected_days": {
      +              "type": "integer"
      +            },
      +            "missing_days": {
      +              "type": "integer"
      +            },
      +            "observed_days": {
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "expected_days",
      +            "observed_days",
      +            "coverage_ratio",
      +            "missing_days"
      +          ],
      +          "type": "object"
      +        },
      +        "coverage": {
      +          "properties": {
      +            "end": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            },
      +            "requested_end": {
      +              "type": "string"
      +            },
      +            "requested_start": {
      +              "type": "string"
      +            },
      +            "start": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            }
      +          },
      +          "required": [
      +            "requested_start",
      +            "requested_end"
      +          ],
      +          "type": "object"
      +        },
      +        "freshness": {
      +          "properties": {
      +            "age_days": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Days from the latest observation to the end of the requested window."
      +            },
      +            "dataset_days_behind": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "description": "Days from the dataset's latest data (any metric) to today."
      +            },
      +            "latest_data": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "last_import": {
      +          "anyOf": [
      +            {
      +              "properties": {
      +                "finished_at": {
      +                  "anyOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "default": null
      +                },
      +                "importer": {
      +                  "type": "string"
      +                },
      +                "source_file": {
      +                  "anyOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "default": null
      +                },
      +                "status": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "importer",
      +                "status"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "last_successful_import": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observations": {
      +          "description": "Number of daily values the result is computed from.",
      +          "type": "integer"
      +        },
      +        "reasons": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "reasons",
      +        "freshness",
      +        "coverage",
      +        "completeness",
      +        "gaps",
      +        "observations"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Whether the data behind this result is complete and current (the weaker of the two windows)."
      +}
  3. Changed8 schema fields changedv1.0.28
    • removedOutput schema / properties / claim_decision
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to headline_claim.decision. Use headline_claim.decision instead.",
      -  "properties": {
      -    "must_state": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "permitted_phrasing_class": {
      -      "type": "string"
      -    },
      -    "template": {
      -      "type": "string"
      -    },
      -    "tier": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "tier",
      -    "permitted_phrasing_class",
      -    "must_state",
      -    "template"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / correlated_metrics / items / properties / claim_decision
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to claim.decision. Use claim.decision instead.",
      -  "properties": {
      -    "must_state": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "permitted_phrasing_class": {
      -      "type": "string"
      -    },
      -    "template": {
      -      "type": "string"
      -    },
      -    "tier": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "tier",
      -    "permitted_phrasing_class",
      -    "must_state",
      -    "template"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_profile
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to claim.profile. Use claim.decision instead.",
      -  "properties": {
      -    "analysis": {
      -      "type": "string"
      -    },
      -    "dimensions": {
      -      "items": {
      -        "properties": {
      -          "can_block": {
      -            "default": true,
      -            "type": "boolean"
      -          },
      -          "details": {
      -            "additionalProperties": true,
      -            "type": "object"
      -          },
      -          "dimension": {
      -            "enum": [
      -              "sample",
      -              "temporal",
      -              "robustness",
      -              "missingness",
      -              "practical",
      -              "measurement_validity",
      -              "provenance"
      -            ],
      -            "type": "string"
      -          },
      -          "reason_codes": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "status": {
      -            "enum": [
      -              "adequate",
      -              "negligible",
      -              "not_assessed",
      -              "weak",
      -              "concern",
      -              "blocking"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "dimension",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "effect": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "metric": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "metric",
      -    "analysis",
      -    "dimensions"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / properties / correlated_metrics / items / required
      Previous value: -[
      -  "metric_a",
      -  "metric_b",
      -  "lag_days",
      -  "n",
      -  "claim",
      -  "evidence_a",
      -  "evidence_b",
      -  "evidence_profile",
      -  "claim_decision"
      -]New value: +[
      +  "metric_a",
      +  "metric_b",
      +  "lag_days",
      +  "n",
      +  "claim",
      +  "evidence_a",
      +  "evidence_b"
      +]
    • removedOutput schema / properties / evidence_profile
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to headline_claim.profile. Use headline_claim.decision instead.",
      -  "properties": {
      -    "analysis": {
      -      "type": "string"
      -    },
      -    "dimensions": {
      -      "items": {
      -        "properties": {
      -          "can_block": {
      -            "default": true,
      -            "type": "boolean"
      -          },
      -          "details": {
      -            "additionalProperties": true,
      -            "type": "object"
      -          },
      -          "dimension": {
      -            "enum": [
      -              "sample",
      -              "temporal",
      -              "robustness",
      -              "missingness",
      -              "practical",
      -              "measurement_validity",
      -              "provenance"
      -            ],
      -            "type": "string"
      -          },
      -          "reason_codes": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "status": {
      -            "enum": [
      -              "adequate",
      -              "negligible",
      -              "not_assessed",
      -              "weak",
      -              "concern",
      -              "blocking"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "dimension",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "effect": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "metric": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "metric",
      -    "analysis",
      -    "dimensions"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / trend_claim_decision
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to trend_claim.decision. Use trend_claim.decision instead.",
      -  "properties": {
      -    "must_state": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    "permitted_phrasing_class": {
      -      "type": "string"
      -    },
      -    "template": {
      -      "type": "string"
      -    },
      -    "tier": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "tier",
      -    "permitted_phrasing_class",
      -    "must_state",
      -    "template"
      -  ],
      -  "type": "object"
      -}
    • removedOutput schema / properties / trend_evidence_profile
      Removed value: -{
      -  "deprecated": true,
      -  "description": "DEPRECATED: identical to trend_claim.profile. Use trend_claim.decision instead.",
      -  "properties": {
      -    "analysis": {
      -      "type": "string"
      -    },
      -    "dimensions": {
      -      "items": {
      -        "properties": {
      -          "can_block": {
      -            "default": true,
      -            "type": "boolean"
      -          },
      -          "details": {
      -            "additionalProperties": true,
      -            "type": "object"
      -          },
      -          "dimension": {
      -            "enum": [
      -              "sample",
      -              "temporal",
      -              "robustness",
      -              "missingness",
      -              "practical",
      -              "measurement_validity",
      -              "provenance"
      -            ],
      -            "type": "string"
      -          },
      -          "reason_codes": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "status": {
      -            "enum": [
      -              "adequate",
      -              "negligible",
      -              "not_assessed",
      -              "weak",
      -              "concern",
      -              "blocking"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "dimension",
      -          "status"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "effect": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "metric": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "metric",
      -    "analysis",
      -    "dimensions"
      -  ],
      -  "type": "object"
      -}
    • changedOutput schema / required
      Previous value: -[
      -  "metric",
      -  "date",
      -  "baseline_range",
      -  "baseline",
      -  "is_anomaly",
      -  "trend",
      -  "correlated_metrics",
      -  "narrative_facts",
      -  "baseline_claim",
      -  "headline_claim",
      -  "trend_claim",
      -  "evidence_profile",
      -  "claim_decision",
      -  "trend_evidence_profile",
      -  "trend_claim_decision",
      -  "overall_decision"
      -]New value: +[
      +  "metric",
      +  "date",
      +  "baseline_range",
      +  "baseline",
      +  "is_anomaly",
      +  "trend",
      +  "correlated_metrics",
      +  "narrative_facts",
      +  "baseline_claim",
      +  "headline_claim",
      +  "trend_claim",
      +  "overall_decision"
      +]
  4. Changed2 schema fields changedv1.0.27
    • addedOutput schema / properties / baseline_claim
      Added value: +{
      +  "description": "Evidence and decision for the 90-day baseline statistics reported in \"baseline\" (and quoted in narrative_facts). Read baseline_claim.decision before stating what is typical for this metric; it is one of the components overall_decision is the weakest of.",
      +  "properties": {
      +    "decision": {
      +      "description": "How strongly this claim may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it.",
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    "evidence": {
      +      "description": "Descriptive data coverage behind this claim.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "profile": {
      +      "description": "Per-dimension evidence quality behind this claim (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate.",
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "evidence",
      +    "profile",
      +    "decision"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "metric",
      -  "date",
      -  "baseline_range",
      -  "baseline",
      -  "is_anomaly",
      -  "trend",
      -  "correlated_metrics",
      -  "narrative_facts",
      -  "headline_claim",
      -  "trend_claim",
      -  "evidence_profile",
      -  "claim_decision",
      -  "trend_evidence_profile",
      -  "trend_claim_decision",
      -  "overall_decision"
      -]New value: +[
      +  "metric",
      +  "date",
      +  "baseline_range",
      +  "baseline",
      +  "is_anomaly",
      +  "trend",
      +  "correlated_metrics",
      +  "narrative_facts",
      +  "baseline_claim",
      +  "headline_claim",
      +  "trend_claim",
      +  "evidence_profile",
      +  "claim_decision",
      +  "trend_evidence_profile",
      +  "trend_claim_decision",
      +  "overall_decision"
      +]
  5. Changed35 schema fields changedv1.0.26
    • removedOutput schema / properties / baseline_evidence
      Removed value: -{
      -  "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      -  "properties": {
      -    "confidence": {
      -      "type": "string"
      -    },
      -    "coverage_ratio": {
      -      "type": "number"
      -    },
      -    "expected_days": {
      -      "type": "integer"
      -    },
      -    "freshness_days": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "gaps": {
      -      "items": {
      -        "properties": {
      -          "days": {
      -            "type": "integer"
      -          },
      -          "end": {
      -            "type": "string"
      -          },
      -          "start": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "start",
      -          "end",
      -          "days"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "measurement_count": {
      -      "type": "integer"
      -    },
      -    "missing_days": {
      -      "type": "integer"
      -    },
      -    "observed_days": {
      -      "type": "integer"
      -    },
      -    "observed_end": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "observed_start": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "recent_gap_days": {
      -      "type": "integer"
      -    },
      -    "requested_end": {
      -      "type": "string"
      -    },
      -    "requested_start": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "requested_start",
      -    "requested_end",
      -    "expected_days",
      -    "observed_days",
      -    "coverage_ratio",
      -    "missing_days",
      -    "measurement_count",
      -    "gaps",
      -    "recent_gap_days",
      -    "confidence"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / claim_decision / deprecated
      Added value: +true
    • changedOutput schema / properties / claim_decision / description
      Previous value: -"How strongly this result may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it."New value: +"DEPRECATED: identical to headline_claim.decision. Use headline_claim.decision instead."
    • addedOutput schema / properties / correlated_metrics / items / properties / claim
      Added value: +{
      +  "description": "Evidence and decision for the correlation claim; read claim.decision before reporting it.",
      +  "properties": {
      +    "decision": {
      +      "description": "How strongly this claim may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it.",
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    "evidence_a": {
      +      "description": "Descriptive data coverage behind the first source.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "evidence_b": {
      +      "description": "Descriptive data coverage behind the second source.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "profile": {
      +      "description": "Per-dimension evidence quality behind this claim (sample, temporal, missingness, ...), assessed jointly across both sources where relevant. Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate.",
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "evidence_a",
      +    "evidence_b",
      +    "profile",
      +    "decision"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / claim_decision / deprecated
      Added value: +true
    • changedOutput schema / properties / correlated_metrics / items / properties / claim_decision / description
      Previous value: -"How strongly this result may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it."New value: +"DEPRECATED: identical to claim.decision. Use claim.decision instead."
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_a / anyOf
      Removed value: -[
      -  {
      -    "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      -    "properties": {
      -      "confidence": {
      -        "type": "string"
      -      },
      -      "coverage_ratio": {
      -        "type": "number"
      -      },
      -      "expected_days": {
      -        "type": "integer"
      -      },
      -      "freshness_days": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "gaps": {
      -        "items": {
      -          "properties": {
      -            "days": {
      -              "type": "integer"
      -            },
      -            "end": {
      -              "type": "string"
      -            },
      -            "start": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "start",
      -            "end",
      -            "days"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "measurement_count": {
      -        "type": "integer"
      -      },
      -      "missing_days": {
      -        "type": "integer"
      -      },
      -      "observed_days": {
      -        "type": "integer"
      -      },
      -      "observed_end": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "observed_start": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "recent_gap_days": {
      -        "type": "integer"
      -      },
      -      "requested_end": {
      -        "type": "string"
      -      },
      -      "requested_start": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "requested_start",
      -      "requested_end",
      -      "expected_days",
      -      "observed_days",
      -      "coverage_ratio",
      -      "missing_days",
      -      "measurement_count",
      -      "gaps",
      -      "recent_gap_days",
      -      "confidence"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_a / default
      Removed value: -null
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a / deprecated
      Added value: +true
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a / description
      Added value: +"DEPRECATED: identical to claim.evidence_a. Use claim.decision, not a standalone confidence field."
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a / properties
      Added value: +{
      +  "confidence": {
      +    "type": "string"
      +  },
      +  "coverage_ratio": {
      +    "type": "number"
      +  },
      +  "expected_days": {
      +    "type": "integer"
      +  },
      +  "freshness_days": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "gaps": {
      +    "items": {
      +      "properties": {
      +        "days": {
      +          "type": "integer"
      +        },
      +        "end": {
      +          "type": "string"
      +        },
      +        "start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "start",
      +        "end",
      +        "days"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "measurement_count": {
      +    "type": "integer"
      +  },
      +  "missing_days": {
      +    "type": "integer"
      +  },
      +  "observed_days": {
      +    "type": "integer"
      +  },
      +  "observed_end": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "observed_start": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "recent_gap_days": {
      +    "type": "integer"
      +  },
      +  "requested_end": {
      +    "type": "string"
      +  },
      +  "requested_start": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a / required
      Added value: +[
      +  "requested_start",
      +  "requested_end",
      +  "expected_days",
      +  "observed_days",
      +  "coverage_ratio",
      +  "missing_days",
      +  "measurement_count",
      +  "gaps",
      +  "recent_gap_days",
      +  "confidence"
      +]
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a / type
      Added value: +"object"
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_b / anyOf
      Removed value: -[
      -  {
      -    "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      -    "properties": {
      -      "confidence": {
      -        "type": "string"
      -      },
      -      "coverage_ratio": {
      -        "type": "number"
      -      },
      -      "expected_days": {
      -        "type": "integer"
      -      },
      -      "freshness_days": {
      -        "anyOf": [
      -          {
      -            "type": "integer"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "gaps": {
      -        "items": {
      -          "properties": {
      -            "days": {
      -              "type": "integer"
      -            },
      -            "end": {
      -              "type": "string"
      -            },
      -            "start": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "start",
      -            "end",
      -            "days"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "measurement_count": {
      -        "type": "integer"
      -      },
      -      "missing_days": {
      -        "type": "integer"
      -      },
      -      "observed_days": {
      -        "type": "integer"
      -      },
      -      "observed_end": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "observed_start": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "default": null
      -      },
      -      "recent_gap_days": {
      -        "type": "integer"
      -      },
      -      "requested_end": {
      -        "type": "string"
      -      },
      -      "requested_start": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "requested_start",
      -      "requested_end",
      -      "expected_days",
      -      "observed_days",
      -      "coverage_ratio",
      -      "missing_days",
      -      "measurement_count",
      -      "gaps",
      -      "recent_gap_days",
      -      "confidence"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_b / default
      Removed value: -null
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b / deprecated
      Added value: +true
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b / description
      Added value: +"DEPRECATED: identical to claim.evidence_b. Use claim.decision, not a standalone confidence field."
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b / properties
      Added value: +{
      +  "confidence": {
      +    "type": "string"
      +  },
      +  "coverage_ratio": {
      +    "type": "number"
      +  },
      +  "expected_days": {
      +    "type": "integer"
      +  },
      +  "freshness_days": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "gaps": {
      +    "items": {
      +      "properties": {
      +        "days": {
      +          "type": "integer"
      +        },
      +        "end": {
      +          "type": "string"
      +        },
      +        "start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "start",
      +        "end",
      +        "days"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "measurement_count": {
      +    "type": "integer"
      +  },
      +  "missing_days": {
      +    "type": "integer"
      +  },
      +  "observed_days": {
      +    "type": "integer"
      +  },
      +  "observed_end": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "observed_start": {
      +    "anyOf": [
      +      {
      +        "type": "string"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ],
      +    "default": null
      +  },
      +  "recent_gap_days": {
      +    "type": "integer"
      +  },
      +  "requested_end": {
      +    "type": "string"
      +  },
      +  "requested_start": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b / required
      Added value: +[
      +  "requested_start",
      +  "requested_end",
      +  "expected_days",
      +  "observed_days",
      +  "coverage_ratio",
      +  "missing_days",
      +  "measurement_count",
      +  "gaps",
      +  "recent_gap_days",
      +  "confidence"
      +]
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b / type
      Added value: +"object"
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / deprecated
      Added value: +true
    • changedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / description
      Previous value: -"Per-dimension evidence quality behind this result (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate."New value: +"DEPRECATED: identical to claim.profile. Use claim.decision instead."
    • removedOutput schema / properties / correlated_metrics / items / properties / sample_confidence
      Removed value: -{
      -  "type": "string"
      -}
    • changedOutput schema / properties / correlated_metrics / items / required
      Previous value: -[
      -  "evidence_profile",
      -  "claim_decision",
      -  "metric_a",
      -  "metric_b",
      -  "lag_days",
      -  "n",
      -  "sample_confidence"
      -]New value: +[
      +  "metric_a",
      +  "metric_b",
      +  "lag_days",
      +  "n",
      +  "claim",
      +  "evidence_a",
      +  "evidence_b",
      +  "evidence_profile",
      +  "claim_decision"
      +]
    • addedOutput schema / properties / evidence_profile / deprecated
      Added value: +true
    • changedOutput schema / properties / evidence_profile / description
      Previous value: -"Per-dimension evidence quality behind this result (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate."New value: +"DEPRECATED: identical to headline_claim.profile. Use headline_claim.decision instead."
    • addedOutput schema / properties / headline_claim
      Added value: +{
      +  "description": "Evidence and decision for the headline claim: this day's value against its 90-day baseline. Read headline_claim.decision before reporting it.",
      +  "properties": {
      +    "decision": {
      +      "description": "How strongly this claim may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it.",
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    "evidence": {
      +      "description": "Descriptive data coverage behind this claim.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "profile": {
      +      "description": "Per-dimension evidence quality behind this claim (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate.",
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "evidence",
      +    "profile",
      +    "decision"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / overall_decision
      Added value: +{
      +  "description": "The single decision governing this whole result: weakest-of-N over the headline claim (headline_claim.decision), the trend (trend_claim.decision), and every surfaced correlation's own decision. If any component is insufficient/suggestive, the composite is too — report overall_decision.tier and must_state rather than treating the headline claim as though the trend and correlations couldn't drag it down.",
      +  "properties": {
      +    "must_state": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "permitted_phrasing_class": {
      +      "type": "string"
      +    },
      +    "template": {
      +      "type": "string"
      +    },
      +    "tier": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tier",
      +    "permitted_phrasing_class",
      +    "must_state",
      +    "template"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / trend_claim
      Added value: +{
      +  "description": "Evidence and decision for the 30-day trend leading into this day, assessed separately from the headline claim. Read trend_claim.decision before reporting it.",
      +  "properties": {
      +    "decision": {
      +      "description": "How strongly this claim may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it.",
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    "evidence": {
      +      "description": "Descriptive data coverage behind this claim.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    "profile": {
      +      "description": "Per-dimension evidence quality behind this claim (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate.",
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "evidence",
      +    "profile",
      +    "decision"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / trend_claim_decision / deprecated
      Added value: +true
    • addedOutput schema / properties / trend_claim_decision / description
      Added value: +"DEPRECATED: identical to trend_claim.decision. Use trend_claim.decision instead."
    • removedOutput schema / properties / trend_evidence
      Removed value: -{
      -  "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      -  "properties": {
      -    "confidence": {
      -      "type": "string"
      -    },
      -    "coverage_ratio": {
      -      "type": "number"
      -    },
      -    "expected_days": {
      -      "type": "integer"
      -    },
      -    "freshness_days": {
      -      "anyOf": [
      -        {
      -          "type": "integer"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "gaps": {
      -      "items": {
      -        "properties": {
      -          "days": {
      -            "type": "integer"
      -          },
      -          "end": {
      -            "type": "string"
      -          },
      -          "start": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "start",
      -          "end",
      -          "days"
      -        ],
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "measurement_count": {
      -      "type": "integer"
      -    },
      -    "missing_days": {
      -      "type": "integer"
      -    },
      -    "observed_days": {
      -      "type": "integer"
      -    },
      -    "observed_end": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "observed_start": {
      -      "anyOf": [
      -        {
      -          "type": "string"
      -        },
      -        {
      -          "type": "null"
      -        }
      -      ],
      -      "default": null
      -    },
      -    "recent_gap_days": {
      -      "type": "integer"
      -    },
      -    "requested_end": {
      -      "type": "string"
      -    },
      -    "requested_start": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "requested_start",
      -    "requested_end",
      -    "expected_days",
      -    "observed_days",
      -    "coverage_ratio",
      -    "missing_days",
      -    "measurement_count",
      -    "gaps",
      -    "recent_gap_days",
      -    "confidence"
      -  ],
      -  "type": "object"
      -}
    • addedOutput schema / properties / trend_evidence_profile / deprecated
      Added value: +true
    • addedOutput schema / properties / trend_evidence_profile / description
      Added value: +"DEPRECATED: identical to trend_claim.profile. Use trend_claim.decision instead."
    • changedOutput schema / required
      Previous value: -[
      -  "evidence_profile",
      -  "claim_decision",
      -  "metric",
      -  "date",
      -  "baseline_range",
      -  "baseline",
      -  "is_anomaly",
      -  "trend",
      -  "correlated_metrics",
      -  "narrative_facts",
      -  "baseline_evidence",
      -  "trend_evidence",
      -  "trend_evidence_profile",
      -  "trend_claim_decision"
      -]New value: +[
      +  "metric",
      +  "date",
      +  "baseline_range",
      +  "baseline",
      +  "is_anomaly",
      +  "trend",
      +  "correlated_metrics",
      +  "narrative_facts",
      +  "headline_claim",
      +  "trend_claim",
      +  "evidence_profile",
      +  "claim_decision",
      +  "trend_evidence_profile",
      +  "trend_claim_decision",
      +  "overall_decision"
      +]
  6. Changed32 schema fields changedv1.0.23
    • removedOutput schema / properties / claim_decision / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "must_state": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "permitted_phrasing_class": {
      -        "type": "string"
      -      },
      -      "template": {
      -        "type": "string"
      -      },
      -      "tier": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tier",
      -      "permitted_phrasing_class",
      -      "must_state",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / claim_decision / default
      Removed value: -null
    • addedOutput schema / properties / claim_decision / properties
      Added value: +{
      +  "must_state": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "permitted_phrasing_class": {
      +    "type": "string"
      +  },
      +  "template": {
      +    "type": "string"
      +  },
      +  "tier": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / claim_decision / required
      Added value: +[
      +  "tier",
      +  "permitted_phrasing_class",
      +  "must_state",
      +  "template"
      +]
    • addedOutput schema / properties / claim_decision / type
      Added value: +"object"
    • removedOutput schema / properties / correlated_metrics / items / properties / claim_decision / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "must_state": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "permitted_phrasing_class": {
      -        "type": "string"
      -      },
      -      "template": {
      -        "type": "string"
      -      },
      -      "tier": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tier",
      -      "permitted_phrasing_class",
      -      "must_state",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / correlated_metrics / items / properties / claim_decision / default
      Removed value: -null
    • addedOutput schema / properties / correlated_metrics / items / properties / claim_decision / properties
      Added value: +{
      +  "must_state": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "permitted_phrasing_class": {
      +    "type": "string"
      +  },
      +  "template": {
      +    "type": "string"
      +  },
      +  "tier": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / claim_decision / required
      Added value: +[
      +  "tier",
      +  "permitted_phrasing_class",
      +  "must_state",
      +  "template"
      +]
    • addedOutput schema / properties / correlated_metrics / items / properties / claim_decision / type
      Added value: +"object"
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "analysis": {
      -        "type": "string"
      -      },
      -      "dimensions": {
      -        "items": {
      -          "properties": {
      -            "can_block": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "details": {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            "dimension": {
      -              "enum": [
      -                "sample",
      -                "temporal",
      -                "robustness",
      -                "missingness",
      -                "practical",
      -                "measurement_validity",
      -                "provenance"
      -              ],
      -              "type": "string"
      -            },
      -            "reason_codes": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "status": {
      -              "enum": [
      -                "adequate",
      -                "negligible",
      -                "not_assessed",
      -                "weak",
      -                "concern",
      -                "blocking"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "dimension",
      -            "status"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "effect": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "metric": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "metric",
      -      "analysis",
      -      "dimensions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / default
      Removed value: -null
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / properties
      Added value: +{
      +  "analysis": {
      +    "type": "string"
      +  },
      +  "dimensions": {
      +    "items": {
      +      "properties": {
      +        "can_block": {
      +          "default": true,
      +          "type": "boolean"
      +        },
      +        "details": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "dimension": {
      +          "enum": [
      +            "sample",
      +            "temporal",
      +            "robustness",
      +            "missingness",
      +            "practical",
      +            "measurement_validity",
      +            "provenance"
      +          ],
      +          "type": "string"
      +        },
      +        "reason_codes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "enum": [
      +            "adequate",
      +            "negligible",
      +            "not_assessed",
      +            "weak",
      +            "concern",
      +            "blocking"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "dimension",
      +        "status"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "effect": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "metric": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / required
      Added value: +[
      +  "metric",
      +  "analysis",
      +  "dimensions"
      +]
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_profile / type
      Added value: +"object"
    • changedOutput schema / properties / correlated_metrics / items / required
      Previous value: -[
      -  "metric_a",
      -  "metric_b",
      -  "lag_days",
      -  "n",
      -  "sample_confidence"
      -]New value: +[
      +  "evidence_profile",
      +  "claim_decision",
      +  "metric_a",
      +  "metric_b",
      +  "lag_days",
      +  "n",
      +  "sample_confidence"
      +]
    • removedOutput schema / properties / evidence_profile / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "analysis": {
      -        "type": "string"
      -      },
      -      "dimensions": {
      -        "items": {
      -          "properties": {
      -            "can_block": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "details": {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            "dimension": {
      -              "enum": [
      -                "sample",
      -                "temporal",
      -                "robustness",
      -                "missingness",
      -                "practical",
      -                "measurement_validity",
      -                "provenance"
      -              ],
      -              "type": "string"
      -            },
      -            "reason_codes": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "status": {
      -              "enum": [
      -                "adequate",
      -                "negligible",
      -                "not_assessed",
      -                "weak",
      -                "concern",
      -                "blocking"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "dimension",
      -            "status"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "effect": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "metric": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "metric",
      -      "analysis",
      -      "dimensions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / evidence_profile / default
      Removed value: -null
    • addedOutput schema / properties / evidence_profile / properties
      Added value: +{
      +  "analysis": {
      +    "type": "string"
      +  },
      +  "dimensions": {
      +    "items": {
      +      "properties": {
      +        "can_block": {
      +          "default": true,
      +          "type": "boolean"
      +        },
      +        "details": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "dimension": {
      +          "enum": [
      +            "sample",
      +            "temporal",
      +            "robustness",
      +            "missingness",
      +            "practical",
      +            "measurement_validity",
      +            "provenance"
      +          ],
      +          "type": "string"
      +        },
      +        "reason_codes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "enum": [
      +            "adequate",
      +            "negligible",
      +            "not_assessed",
      +            "weak",
      +            "concern",
      +            "blocking"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "dimension",
      +        "status"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "effect": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "metric": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / evidence_profile / required
      Added value: +[
      +  "metric",
      +  "analysis",
      +  "dimensions"
      +]
    • addedOutput schema / properties / evidence_profile / type
      Added value: +"object"
    • removedOutput schema / properties / trend_claim_decision / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "must_state": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "permitted_phrasing_class": {
      -        "type": "string"
      -      },
      -      "template": {
      -        "type": "string"
      -      },
      -      "tier": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tier",
      -      "permitted_phrasing_class",
      -      "must_state",
      -      "template"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / trend_claim_decision / default
      Removed value: -null
    • addedOutput schema / properties / trend_claim_decision / properties
      Added value: +{
      +  "must_state": {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  "permitted_phrasing_class": {
      +    "type": "string"
      +  },
      +  "template": {
      +    "type": "string"
      +  },
      +  "tier": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / trend_claim_decision / required
      Added value: +[
      +  "tier",
      +  "permitted_phrasing_class",
      +  "must_state",
      +  "template"
      +]
    • addedOutput schema / properties / trend_claim_decision / type
      Added value: +"object"
    • removedOutput schema / properties / trend_evidence_profile / anyOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "analysis": {
      -        "type": "string"
      -      },
      -      "dimensions": {
      -        "items": {
      -          "properties": {
      -            "can_block": {
      -              "default": true,
      -              "type": "boolean"
      -            },
      -            "details": {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            "dimension": {
      -              "enum": [
      -                "sample",
      -                "temporal",
      -                "robustness",
      -                "missingness",
      -                "practical",
      -                "measurement_validity",
      -                "provenance"
      -              ],
      -              "type": "string"
      -            },
      -            "reason_codes": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "status": {
      -              "enum": [
      -                "adequate",
      -                "negligible",
      -                "not_assessed",
      -                "weak",
      -                "concern",
      -                "blocking"
      -              ],
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "dimension",
      -            "status"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "effect": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "metric": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "metric",
      -      "analysis",
      -      "dimensions"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedOutput schema / properties / trend_evidence_profile / default
      Removed value: -null
    • addedOutput schema / properties / trend_evidence_profile / properties
      Added value: +{
      +  "analysis": {
      +    "type": "string"
      +  },
      +  "dimensions": {
      +    "items": {
      +      "properties": {
      +        "can_block": {
      +          "default": true,
      +          "type": "boolean"
      +        },
      +        "details": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "dimension": {
      +          "enum": [
      +            "sample",
      +            "temporal",
      +            "robustness",
      +            "missingness",
      +            "practical",
      +            "measurement_validity",
      +            "provenance"
      +          ],
      +          "type": "string"
      +        },
      +        "reason_codes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "status": {
      +          "enum": [
      +            "adequate",
      +            "negligible",
      +            "not_assessed",
      +            "weak",
      +            "concern",
      +            "blocking"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "dimension",
      +        "status"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  "effect": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "metric": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / trend_evidence_profile / required
      Added value: +[
      +  "metric",
      +  "analysis",
      +  "dimensions"
      +]
    • addedOutput schema / properties / trend_evidence_profile / type
      Added value: +"object"
    • changedOutput schema / required
      Previous value: -[
      -  "metric",
      -  "date",
      -  "baseline_range",
      -  "baseline",
      -  "is_anomaly",
      -  "trend",
      -  "correlated_metrics",
      -  "narrative_facts",
      -  "baseline_evidence",
      -  "trend_evidence"
      -]New value: +[
      +  "evidence_profile",
      +  "claim_decision",
      +  "metric",
      +  "date",
      +  "baseline_range",
      +  "baseline",
      +  "is_anomaly",
      +  "trend",
      +  "correlated_metrics",
      +  "narrative_facts",
      +  "baseline_evidence",
      +  "trend_evidence",
      +  "trend_evidence_profile",
      +  "trend_claim_decision"
      +]
  7. Changed6 schema fields changedv1.0.20
    • addedOutput schema / properties / claim_decision
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "How strongly this result may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it."
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / claim_decision
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "How strongly this result may be stated. tier is insufficient, suggestive, detectable_not_meaningful or supported; every entry in must_state has to be mentioned when reporting it."
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_profile
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Per-dimension evidence quality behind this result (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate."
      +}
    • addedOutput schema / properties / evidence_profile
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "Per-dimension evidence quality behind this result (sample, temporal, missingness, ...). Dimensions without an evaluator yet are 'not_assessed' and cap the claim, never count as adequate."
      +}
    • addedOutput schema / properties / trend_claim_decision
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "must_state": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "permitted_phrasing_class": {
      +          "type": "string"
      +        },
      +        "template": {
      +          "type": "string"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "permitted_phrasing_class",
      +        "must_state",
      +        "template"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / trend_evidence_profile
      Added value: +{
      +  "anyOf": [
      +    {
      +      "properties": {
      +        "analysis": {
      +          "type": "string"
      +        },
      +        "dimensions": {
      +          "items": {
      +            "properties": {
      +              "can_block": {
      +                "default": true,
      +                "type": "boolean"
      +              },
      +              "details": {
      +                "additionalProperties": true,
      +                "type": "object"
      +              },
      +              "dimension": {
      +                "enum": [
      +                  "sample",
      +                  "temporal",
      +                  "robustness",
      +                  "missingness",
      +                  "practical",
      +                  "measurement_validity",
      +                  "provenance"
      +                ],
      +                "type": "string"
      +              },
      +              "reason_codes": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "status": {
      +                "enum": [
      +                  "adequate",
      +                  "negligible",
      +                  "not_assessed",
      +                  "weak",
      +                  "concern",
      +                  "blocking"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "dimension",
      +              "status"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "effect": {
      +          "additionalProperties": true,
      +          "type": "object"
      +        },
      +        "metric": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "metric",
      +        "analysis",
      +        "dimensions"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  8. Changed3 schema fields changedv1.0.19
    • addedOutput schema / properties / conflicting_days
      Added value: +{
      +  "default": 0,
      +  "type": "integer"
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / sample_confidence
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / correlated_metrics / items / required
      Previous value: -[
      -  "metric_a",
      -  "metric_b",
      -  "lag_days",
      -  "n"
      -]New value: +[
      +  "metric_a",
      +  "metric_b",
      +  "lag_days",
      +  "n",
      +  "sample_confidence"
      +]
  9. Changed1 schema field changedv1.0.17
    • addedOutput schema / properties / trend / properties / span_days
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
  10. Changed5 schema fields changed
    • addedOutput schema / properties / baseline_evidence
      Added value: +{
      +  "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      +  "properties": {
      +    "confidence": {
      +      "type": "string"
      +    },
      +    "coverage_ratio": {
      +      "type": "number"
      +    },
      +    "expected_days": {
      +      "type": "integer"
      +    },
      +    "freshness_days": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "gaps": {
      +      "items": {
      +        "properties": {
      +          "days": {
      +            "type": "integer"
      +          },
      +          "end": {
      +            "type": "string"
      +          },
      +          "start": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "start",
      +          "end",
      +          "days"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "measurement_count": {
      +      "type": "integer"
      +    },
      +    "missing_days": {
      +      "type": "integer"
      +    },
      +    "observed_days": {
      +      "type": "integer"
      +    },
      +    "observed_end": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "observed_start": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "recent_gap_days": {
      +      "type": "integer"
      +    },
      +    "requested_end": {
      +      "type": "string"
      +    },
      +    "requested_start": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "requested_start",
      +    "requested_end",
      +    "expected_days",
      +    "observed_days",
      +    "coverage_ratio",
      +    "missing_days",
      +    "measurement_count",
      +    "gaps",
      +    "recent_gap_days",
      +    "confidence"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_a
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / correlated_metrics / items / properties / evidence_b
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      +      "properties": {
      +        "confidence": {
      +          "type": "string"
      +        },
      +        "coverage_ratio": {
      +          "type": "number"
      +        },
      +        "expected_days": {
      +          "type": "integer"
      +        },
      +        "freshness_days": {
      +          "anyOf": [
      +            {
      +              "type": "integer"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "gaps": {
      +          "items": {
      +            "properties": {
      +              "days": {
      +                "type": "integer"
      +              },
      +              "end": {
      +                "type": "string"
      +              },
      +              "start": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "start",
      +              "end",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "measurement_count": {
      +          "type": "integer"
      +        },
      +        "missing_days": {
      +          "type": "integer"
      +        },
      +        "observed_days": {
      +          "type": "integer"
      +        },
      +        "observed_end": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "observed_start": {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "default": null
      +        },
      +        "recent_gap_days": {
      +          "type": "integer"
      +        },
      +        "requested_end": {
      +          "type": "string"
      +        },
      +        "requested_start": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "requested_start",
      +        "requested_end",
      +        "expected_days",
      +        "observed_days",
      +        "coverage_ratio",
      +        "missing_days",
      +        "measurement_count",
      +        "gaps",
      +        "recent_gap_days",
      +        "confidence"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedOutput schema / properties / trend_evidence
      Added value: +{
      +  "description": "Coverage/quality of the data a single-metric analytical result is\nbased on. See evidence.build_evidence for how each field is computed.",
      +  "properties": {
      +    "confidence": {
      +      "type": "string"
      +    },
      +    "coverage_ratio": {
      +      "type": "number"
      +    },
      +    "expected_days": {
      +      "type": "integer"
      +    },
      +    "freshness_days": {
      +      "anyOf": [
      +        {
      +          "type": "integer"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "gaps": {
      +      "items": {
      +        "properties": {
      +          "days": {
      +            "type": "integer"
      +          },
      +          "end": {
      +            "type": "string"
      +          },
      +          "start": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "start",
      +          "end",
      +          "days"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "measurement_count": {
      +      "type": "integer"
      +    },
      +    "missing_days": {
      +      "type": "integer"
      +    },
      +    "observed_days": {
      +      "type": "integer"
      +    },
      +    "observed_end": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "observed_start": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "recent_gap_days": {
      +      "type": "integer"
      +    },
      +    "requested_end": {
      +      "type": "string"
      +    },
      +    "requested_start": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "requested_start",
      +    "requested_end",
      +    "expected_days",
      +    "observed_days",
      +    "coverage_ratio",
      +    "missing_days",
      +    "measurement_count",
      +    "gaps",
      +    "recent_gap_days",
      +    "confidence"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "metric",
      -  "date",
      -  "baseline_range",
      -  "baseline",
      -  "is_anomaly",
      -  "trend",
      -  "correlated_metrics",
      -  "narrative_facts"
      -]New value: +[
      +  "metric",
      +  "date",
      +  "baseline_range",
      +  "baseline",
      +  "is_anomaly",
      +  "trend",
      +  "correlated_metrics",
      +  "narrative_facts",
      +  "baseline_evidence",
      +  "trend_evidence"
      +]
  11. Addedv1.0.16
  12. Removedv1.0.15
  13. Changed1 schema field changedv0.3.0
    • addedOutput schema / properties / sessions
      Added value: +{
      +  "default": [],
      +  "items": {
      +    "properties": {
      +      "activity_type": {
      +        "type": "string"
      +      },
      +      "avg_heart_rate": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "created_at": {
      +        "type": "string"
      +      },
      +      "date": {
      +        "type": "string"
      +      },
      +      "duration_minutes": {
      +        "type": "integer"
      +      },
      +      "id": {
      +        "type": "integer"
      +      },
      +      "intensity": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "max_heart_rate": {
      +        "anyOf": [
      +          {
      +            "type": "integer"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "notes": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "source": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      },
      +      "start_time": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "date",
      +      "activity_type",
      +      "duration_minutes",
      +      "created_at"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  14. Addedv1.0.11

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint=false) and locality (openWorldHint=false), so the description correctly spends its words elsewhere: it discloses that the tool returns facts only and refuses to synthesize an explanation, and it adds a privacy warning that returned data becomes part of the conversation sent to the calling client's model. That privacy/data-egress disclosure is significant behavioral context an agent could not derive from any structured field.

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?

The purpose statement is front-loaded and the exclusions are bulleted rather than buried in prose, which makes the routing decision scannable. The privacy note runs three lines and is somewhat long relative to its operational importance, though it does earn its place as a genuine data-handling warning.

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?

An output schema exists, so the description is not obliged to document return values, and instead it correctly characterizes the bundle's composition and its intentional limitation (facts, not conclusions). For a two-required-parameter read tool with full annotation coverage, nothing an agent needs in order to select and call it correctly is missing.

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%, with `date` documented as YYYY-MM-DD and `metric` carrying its full enumerated value list, so the schema already does the heavy lifting. The description adds interpretive value by defining what the returned value is being compared against (a 90-day baseline) but offers no format or validation detail beyond the schema. Baseline 3 is the right score here.

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?

The description opens with a specific, quotable framing of the task it serves ("why did my <metric> look like that on <date>?") and then enumerates exactly what the bundle contains: that day's value against a 90-day baseline, anomaly qualification, incoming trend, and correlated metrics. This is concrete enough to distinguish it from every sibling named, including the four single-purpose tools it composes.

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?

It gives an explicit 'Do not use this tool when' section with two named conditions and routes each to specific alternatives (`get_recent_changes` for cross-metric scanning; `get_baseline`, `calculate_metric_trend`, `detect_metric_anomalies`, `find_metric_correlation` when only one component is needed). Both the negative cases and the substitute tools are stated outright, leaving nothing to inference.

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