Skip to main content
Glama

GetOperationMetrics

Read-onlyIdempotent

Top operations by usage/health for a graph over a time window, as compact CSV. Columns: start timestamp, end exclusive timestamp, operation name, request count, request latency p50 ms, request latency p99 ms, request with error count. Ranked by orderBy descending: default REQUEST_COUNT (busiest); REQUEST_WITH_ERROR_COUNT for most error-prone, REQUEST_LATENCY_P99_MS for slowest. variantName scopes to one or more variants (omit for all). clients scopes to one or more clients; omit clientVersion to match every version of that client, and use GetClientMetrics to discover the names a graph sees. Keep the default resolution of ENTIRE_RANGE for totals and top-N, which gives one row per operation ranked over the whole window. DAY/HOUR/MINUTE give one row per operation per bucket ranked within each bucket, so a window total then needs a per-operation sum plus a limit big enough to cover every bucket; too small a limit silently undercounts. Only HOUR and MINUTE accept a to of now, so use them for bursts in the last 24 hours. Avoid MONTH: it labels buckets by calendar month, not by the requested window.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYesThe ending timestamp for the report. Must be in the format: 2025-01-01T08:00:00Z (ISO 8601).
fromYesThe starting timestamp for the report. Must be in the format: 2025-01-01T00:00:00Z (ISO 8601).
limitNoMaximum number of records to return (default: 100, max 10000).
clientsNo
graphIdYes
orderByNoREQUEST_COUNT
resolutionNoThe resolution of the time groups for the report. This resolution will affect the range of times that can be used for the 'from' and 'to' timestamps: - For the MINUTE resolution, the total time between 'from' and 'to' must be no more than 1 day, and the 'from' time must be no earlier than 30 days ago. - For the HOUR resolution, the total time between 'from' and 'to' must be no more than 7 days, and the 'from' time must be no earlier than 90 days ago. - For the DAY, MONTH, and ENTIRE_RANGE resolutions, the 'from' time must be no earlier than 549 days ago (approx 18 months), and the 'to' time must be no later than 1 day ago. If these criteria are not met, this will return a REQUEST_INVALID error.ENTIRE_RANGE
variantNameNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataNo
errorsNo
extensionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changed
    • addedInput schema / definitions / OperationInsightsTimeseriesReportClientFilterInInput / properties / clientName / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / definitions / OperationInsightsTimeseriesReportClientFilterInInput / properties / clientName / type
      Removed value: -"string"
    • addedInput schema / definitions / OperationInsightsTimeseriesReportClientFilterInInput / properties / clientVersion / anyOf
      Added value: +[
      +  {
      +    "type": "string"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / definitions / OperationInsightsTimeseriesReportClientFilterInInput / properties / clientVersion / type
      Removed value: -"string"
    • addedInput schema / properties / clients / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "$ref": "#/definitions/OperationInsightsTimeseriesReportClientFilterInInput"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / clients / items
      Removed value: -{
      -  "oneOf": [
      -    {
      -      "$ref": "#/definitions/OperationInsightsTimeseriesReportClientFilterInInput"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • removedInput schema / properties / clients / type
      Removed value: -"array"
    • addedInput schema / properties / limit / anyOf
      Added value: +[
      +  {
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / limit / default
      Added value: +50
    • removedInput schema / properties / limit / type
      Removed value: -"integer"
    • removedInput schema / properties / orderBy / $ref
      Removed value: -"#/definitions/OperationInsightsTimeseriesReportMetric"
    • addedInput schema / properties / orderBy / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/definitions/OperationInsightsTimeseriesReportMetric"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / orderBy / default
      Added value: +"REQUEST_COUNT"
    • removedInput schema / properties / resolution / $ref
      Removed value: -"#/definitions/TimeseriesReportResolution"
    • addedInput schema / properties / resolution / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/definitions/TimeseriesReportResolution"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / resolution / default
      Added value: +"ENTIRE_RANGE"
    • addedInput schema / properties / variantName / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / variantName / items
      Removed value: -{
      -  "oneOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ]
      -}
    • removedInput schema / properties / variantName / type
      Removed value: -"array"
    • addedOutput schema / properties / data / properties / graph / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "operationInsightsTimeseriesReport": {
      +        "description": " Returns a timeseries of operation metrics across a specified time range for this graph. This will return specified metrics (request count,\n avg latency, etc) grouped by time and the specified dimensions (query ID, query name, client name, etc). This API is rate limited and only\n allows a small number of requests per minute, and will return a RATE_LIMIT_EXCEEDED error if too many requests are made for a graph. If a\nrequest to this field times out, we recommend that you try a shorter time range or fewer dimensions.",
      +        "properties": {
      +          "csv": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "description": "A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics."
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "operationInsightsTimeseriesReport"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedOutput schema / properties / data / properties / graph / oneOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "operationInsightsTimeseriesReport": {
      -        "description": " Returns a timeseries of operation metrics across a specified time range for this graph. This will return specified metrics (request count,\n avg latency, etc) grouped by time and the specified dimensions (query ID, query name, client name, etc). This API is rate limited and only\n allows a small number of requests per minute, and will return a RATE_LIMIT_EXCEEDED error if too many requests are made for a graph. If a\nrequest to this field times out, we recommend that you try a shorter time range or fewer dimensions.",
      -        "properties": {
      -          "csv": {
      -            "description": "A CSV representation of the results. This includes a header and rows that have a column for start and end timestamp and all requested dimensions and metrics.",
      -            "oneOf": [
      -              {
      -                "type": "string"
      -              },
      -              {
      -                "type": "null"
      -              }
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "operationInsightsTimeseriesReport"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
  2. Changed4 schema fields changed
    • addedInput schema / definitions / OperationInsightsTimeseriesReportClientFilterInInput
      Added value: +{
      +  "description": "The named type and version of the clients to include or exclude in the operation timeseries report.",
      +  "properties": {
      +    "clientName": {
      +      "description": "The client name.",
      +      "type": "string"
      +    },
      +    "clientVersion": {
      +      "description": "The client version.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / definitions / TimeseriesReportResolution
      Added value: +{
      +  "description": "The size of each time bucket in a timeseries report.\n\nValues:\nDAY: One-day buckets.\nENTIRE_RANGE: Single bucket containing the entire time range.\nHOUR: One-hour buckets.\nMINUTE: One-minute buckets.\nMONTH: One-month buckets.",
      +  "enum": [
      +    "DAY",
      +    "ENTIRE_RANGE",
      +    "HOUR",
      +    "MINUTE",
      +    "MONTH"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / clients
      Added value: +{
      +  "items": {
      +    "oneOf": [
      +      {
      +        "$ref": "#/definitions/OperationInsightsTimeseriesReportClientFilterInInput"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / resolution
      Added value: +{
      +  "$ref": "#/definitions/TimeseriesReportResolution",
      +  "description": "The resolution of the time groups for the report. This resolution will affect the range of times that can be used for the 'from' and\n'to' timestamps:\n- For the MINUTE resolution, the total time between 'from' and 'to' must be no more than 1 day, and the 'from' time must be no earlier than 30 days ago.\n- For the HOUR resolution, the total time between 'from' and 'to' must be no more than 7 days, and the 'from' time must be no earlier than 90 days ago.\n- For the DAY, MONTH, and ENTIRE_RANGE resolutions, the 'from' time must be no earlier than 549 days ago (approx 18 months), and the 'to' time must be no later than 1 day ago.\nIf these criteria are not met, this will return a REQUEST_INVALID error."
      +}
  3. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds substantial behavioral detail: CSV output format, exact columns, default ranking, silent undercounting with small limits, and the MONTH calendar-bucket quirk. No contradiction with annotations.

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 description is longer than average but dense and purposeful. It front-loads the core purpose and output format, then adds necessary operational context. A small amount of reorganization could improve scannability, but every sentence contributes meaning.

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

Completeness5/5

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

For a tool with 8 parameters and complex resolution/ranking behavior, the description covers the important operational decisions, edge cases, and failure modes. Since an output schema exists, the lack of detailed return-value documentation is acceptable. It is complete enough for an agent to invoke correctly.

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

Parameters5/5

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

Schema coverage is only 50%, but the description compensates thoroughly. It explains orderBy values and defaults, variantName scoping, clients/clientVersion behavior, resolution trade-offs, limit pitfalls, and the special now constraint for HOUR/MINUTE. This goes well beyond the schema's bare parameter names.

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

Purpose4/5

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

The description clearly states it returns top operations by usage/health for a graph over a time window as compact CSV. It identifies the resource, output format, and ranking semantics. However, it does not explicitly differentiate itself from the sibling tool GetTopOperations, which likely serves a similar purpose.

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?

Provides explicit usage guidance: keep ENTIRE_RANGE for totals, use HOUR/MINUTE for recent bursts, avoid MONTH, and watch limit undercounting. It also directs users to GetClientMetrics for discovering client names, giving concrete context for when and how to use the tool correctly.

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