Skip to main content
Glama
Fino-wind

Vaultbeat MCP Server

Compare two periods

compare_metric_periods
Read-onlyIdempotent

Compare two periods of a health metric series—newest days vs earlier days or custom windows—to see mean, median, min, max, and differences.

Instructions

Compare two periods of one series: the newest days vs the days before, or two named windows.

To compare CALENDAR periods — "this semester vs the summer", "before and after I started training" — pass period and baseline, each "YYYY-MM-DD..YYYY-MM-DD" (an open end is allowed: "2026-09-01.."). days is then ignored. Without them, the rule below applies.

"Before" means the next-oldest days WITH DATA, so a gap makes the earlier window older rather than emptier — read previous.first_day / previous.last_day to see which period you actually got, and quote them.

Returns both windows' mean/median/min/max and the differences. It does not say which window is better; that depends on the metric and on the person.

Carries a coverage block over the days the arithmetic used: quote coverage.days_covered and coverage.span_days beside any number here. coverage.window_satisfied: false alone does NOT mean a short history — it is also false when older days exist beyond the window; coverage.more_available tells the two apart.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
daysNo
freshNo
periodNo
seriesYes
partnerNo
baselineNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv0.9.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / baseline
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Baseline"
      +}
    • removedInput schema / properties / owner
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Owner"
      -}
    • addedInput schema / properties / partner
      Added value: +{
      +  "default": false,
      +  "title": "Partner",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / period
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Period"
      +}
  2. First observedv0.8.1

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: it defines what 'before' means (next-oldest days WITH DATA, so gaps push the window older rather than empty), warns that the tool does not judge which window is better, and explains the ambiguous `coverage.window_satisfied: false` case with `coverage.more_available` as the disambiguator. That is genuine non-obvious behavior disclosure.

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

Conciseness4/5

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

Front-loaded with the core rule before the calendar-period exception, and every sentence carries information (format, precedence, gap semantics, coverage caveat). It is long, but the length is justified by the tool's conditional logic; minor repetition of 'quote' guidance.

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

Completeness4/5

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

An output schema exists, so explaining return values is not strictly required, yet the description usefully frames them (mean/median/min/max plus differences, coverage block) with interpretation caveats. It is nearly complete for a complex tool, with the only real hole being the undocumented `fresh` and `partner` flags.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning. It does well for `period`/`baseline` (exact 'YYYY-MM-DD..YYYY-MM-DD' format, open-end allowed) and `days` (ignored when windows are given), but `fresh` and `partner` are completely undocumented in both schema and description, and `series` is only implied. Two of six parameters are opaque, so this is partial compensation.

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?

Opens with a specific verb and resource ('Compare two periods of one series') and immediately distinguishes the two operating modes (newest `days` vs prior `days`, or two named windows). An agent can tell this apart from get_metric_trend or correlate_metric_series without opening the schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: use `period`/`baseline` for calendar-style comparisons ('this semester vs the summer', 'before and after I started training') and fall back to `days` otherwise, with the precedence rule stated ('`days` is then ignored'). No inference required.

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