Skip to main content
Glama

custom_metrics_read

Read-onlyIdempotent

Read the custom analytics metrics of an agent (values the AI extracts from each conversation or call, e.g. customer_satisfaction, booked_meeting). Actions: list, get (metricId), data (aggregated values for one metricKey in a time range: averages/sums for numbers, counts for boolean/enum/string), all_data (same for every metric). Time range defaults to the last 30 days; startTs/endTs are unix seconds. includeTimeSeries adds per-day points.

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": {
      "action": "<action>",
      "agentId": "<agentId>"
    },
    "name": "custom_metrics_read"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNocompact (default) = light mode: long text is cut and bulky blobs are replaced by a size marker. full = complete API response.
endTsNoUnix seconds. Default: now.
limitNoFor list. Default 50, max 100.
actionYes
agentIdYes
startTsNoUnix seconds. Default: 30 days ago.
metricIdNoRequired for get.
metricKeyNoRequired for data (the metric key, not its id).
startAfterIdNoFor list pagination.
includeTimeSeriesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. Beyond that, the description adds real behavioral context: the default 30-day window, that timestamps are unix seconds, and how values are aggregated per type (averages/sums for numbers, counts for boolean/enum/string) – aggregation semantics the annotations cannot express.

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?

It is a single dense paragraph, but it is front-loaded with the resource definition followed by a compact action list, then time-range and time-series notes. Every sentence carries information; the only minor cost is that the action breakdown reads as a run-on list rather than separate lines.

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?

For a 10-param, four-action read tool with no output schema, the description supplies the missing shape information: what each action returns conceptually (definitions vs. aggregated values vs. per-day points) and the default time window. Pagination details are left entirely to the schema, but that is a minor gap for a read-only tool.

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?

With 70% schema coverage, the description still adds value by clarifying two easy-to-confuse params: metricId is for get while metricKey ("the metric key, not its id") is for data. It also restates the startTs/endTs default window and the includeTimeSeries effect, complementing the schema rather than duplicating it.

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

Purpose5/5

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

States a specific verb and resource ("Read the custom analytics metrics of an agent") and immediately grounds it with concrete examples (customer_satisfaction, booked_meeting). The four actions (list, get, data, all_data) are each scoped, so an agent can distinguish a metric-definition read from an aggregated-value read 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 Guidelines4/5

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

The description effectively tells the agent which action to pick for which goal: list/get for definitions, data for one metricKey, all_data for every metric, and includeTimeSeries for per-day points. It does not, however, point away from adjacent tools such as query_conversations or generate_lead_funnel when the underlying need is conversational data rather than custom metrics.

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