Skip to main content
Glama

Schedule report

schedule_report
DestructiveIdempotent

Schedule one saved analysis to be emailed as a digest (CSV attached) to workspace members on a daily / weekly / monthly cadence (UTC); a dashboard cannot be scheduled — choose or save one panel as an analysis first. One schedule per report: calling again replaces every field, so re-pass conditions and recipients to keep them. day_of_week (0=Sun) applies weekly, day_of_month (1–28) monthly; recipients default to you. conditions (email only when it's worth it: an array of ≤5 {target, op, value}) hold the digest unless the data warrants it: target is "row_count" or one of the report's aggregation aliases, op one of gt|gte|lt|lte|eq|neq, value a number; it sends when ANY condition is met, evaluated against that run's result (mode "any"), else that occurrence is silently skipped. Omit conditions to always send. Returns the schedule.

When to use: The user wants a saved analysis emailed on a schedule — 'email me this every Monday'.

Example: Email the pipeline report to the sales team every Monday at 8am.

Input Schema

NameRequiredDescriptionDefault
hourNoHour of day to send, 0–23 in UTC (default 8).
enabledNoWhether the schedule is active (default true); pass false to keep the schedule but stop sending.
frequencyYesCadence of the digest: daily, weekly (with day_of_week) or monthly (with day_of_month); every run fires at `hour` UTC.
report_idYesThe saved analysis to schedule, by id (uuid); one schedule per report, so calling again replaces it. Dashboards and segments are refused.
conditionsNoUp to 5 {target, op, value} send conditions — target is "row_count" or an aggregation alias, op is gt|gte|lt|lte|eq|neq, value a number; omit to always send.
recipientsNoWorkspace member user ids (uuids) to email; defaults to just you, and any id that is not a member is refused.
day_of_weekNoWeekly only: day to send, 0=Sunday … 6=Saturday; defaults to Monday when omitted. Ignored for daily and monthly.
day_of_monthNoMonthly only: day to send, 1–28 (so every month has it); defaults to the 1st when omitted. Ignored for daily and weekly.

Output Schema

NameRequiredDescriptionDefault
scheduleNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  2. Changed2 schema fields changed
    • removedInput schema / properties / recipients / items / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedInput schema / properties / report_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  3. Changed17 schema fields changed
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • removedOutput schema / additionalProperties
      Removed value: -{}
    • removedOutput schema / properties / schedule / additionalProperties
      Removed value: -{}
    • changedOutput schema / properties / schedule / properties / conditions / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "op": {
      -          "enum": [
      -            "gt",
      -            "gte",
      -            "lt",
      -            "lte",
      -            "eq",
      -            "neq"
      -          ],
      -          "type": "string"
      -        },
      -        "target": {
      -          "minLength": 1,
      -          "type": "string"
      -        },
      -        "value": {
      -          "type": "number"
      -        }
      -      },
      -      "required": [
      -        "target",
      -        "op",
      -        "value"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "properties": {
      +        "op": {
      +          "enum": [
      +            "gt",
      +            "gte",
      +            "lt",
      +            "lte",
      +            "eq",
      +            "neq"
      +          ],
      +          "type": "string"
      +        },
      +        "target": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "value": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "target",
      +        "op",
      +        "value"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / schedule / properties / day_of_month / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / schedule / properties / day_of_month / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / schedule / properties / day_of_month / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / schedule / properties / day_of_month / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / schedule / properties / day_of_week / anyOf
      Removed value: -[
      -  {
      -    "maximum": 9007199254740991,
      -    "minimum": -9007199254740991,
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / schedule / properties / day_of_week / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / schedule / properties / day_of_week / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / schedule / properties / day_of_week / type
      Added value: +[
      +  "integer",
      +  "null"
      +]
    • removedOutput schema / properties / schedule / properties / id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedOutput schema / properties / schedule / properties / last_run_at / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / schedule / properties / last_run_at / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / schedule / properties / report_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    • removedOutput schema / properties / schedule / properties / workspace_id / pattern
      Removed value: -"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  4. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that one schedule exists per report and re-calling replaces every field (consistent with idempotentHint=true and destructiveHint=true), that non-member recipients are refused, that skipped occurrences are silently dropped, and the ANY-condition send semantics. This is rich operational context an agent needs before mutating.

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?

Dense but front-loaded: the core behavior paragraph comes first, then 'When to use' and an example. Some redundancy with the schema (e.g. 'one schedule per report: calling again replaces every field') but the length is justified by the 8-parameter, nested-condition surface.

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?

With an output schema present (returns the schedule) and annotations covering safety, the description fills the remaining gaps: defaults, replace semantics, refusal conditions, and condition-evaluation behavior are all covered. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100% so the baseline is 3, but the description adds real meaning: it explains that conditions fire when ANY is met, that type is 'any', that a failing run is silently skipped, that omitting conditions always sends, and clarifies day_of_week/day_of_month applicability beyond the schema's per-field notes.

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

Purpose5/5

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

States a specific verb+resource (schedule a saved analysis as an emailed digest) with clear scope: cadence, CSV attachment, UTC. It also distinguishes itself from the report-rendering siblings by noting that a dashboard cannot be scheduled and one panel must be saved as an analysis first.

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

Usage Guidelines4/5

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

Has an explicit 'When to use' line plus a concrete example ('Email the pipeline report to the sales team every Monday at 8am') and a hard exclusion (dashboards, not analyses). It does not cross-reference the sibling tools run_report/export_report/show_report, so routing between the report family is left to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources