Skip to main content
Glama

get_metrics

Read-onlyIdempotent

Get financial metrics/ratios for NZX companies. 46 ratios: profitability (incl. comprehensive_roe, oci_divergence), leverage (incl. paid_in_capital_ratio), cash flow, dividends, growth (incl. share_capital_growth), valuation, composite. Use for screening or comparison.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modeNoFor single ticker: "snapshot" (default) or "historical"
sortNoSort by metric (e.g. "pe_ratio", "roe", "dividend_yield")
yearNoYear or range filter
limitNoMax results
orderNo"asc" or "desc"
sectorNoFilter by sector (list mode only)
tickerNoSpecific ticker for detailed metrics with live valuation. Omit for list of all companies.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "description": "The tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or \"none found\"."
      +    },
      +    "meta": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "availability_status": {
      +          "description": "ok: complete payload. truncated: payload exceeded the transport cap and was cut. parse_failed: payload is text this server could not parse as JSON. error: the tool raised.",
      +          "enum": [
      +            "ok",
      +            "truncated",
      +            "parse_failed",
      +            "error"
      +          ],
      +          "type": "string"
      +        },
      +        "encoding": {
      +          "description": "toon = pipe-delimited tabular encoding; header row names the columns.",
      +          "enum": [
      +            "json",
      +            "toon"
      +          ],
      +          "type": "string"
      +        },
      +        "provenance": {
      +          "description": "Whether the figures can cite a source document. \"undeclared\" means no claim has been made for this endpoint yet — it is not a claim that the data is unsourced.",
      +          "enum": [
      +            "direct",
      +            "label",
      +            "reachable",
      +            "none",
      +            "undeclared"
      +          ],
      +          "type": "string"
      +        },
      +        "retrieved_at": {
      +          "description": "When this platform produced the answer — NOT the as-at date of the data.",
      +          "format": "date-time",
      +          "type": "string"
      +        },
      +        "warnings": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "retrieved_at",
      +        "availability_status",
      +        "provenance"
      +      ],
      +      "type": "object"
      +    },
      +    "schema_version": {
      +      "description": "Envelope contract version. Bumps only on a breaking shape change.",
      +      "type": "string"
      +    },
      +    "tool": {
      +      "description": "Tool that produced this result.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "schema_version",
      +    "tool",
      +    "data",
      +    "meta"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the breadth of metrics (46 ratios across categories), but it doesn't describe behavioral details like default modes, list-vs-single behavior, or result shapes beyond what the schema already provides.

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

Conciseness5/5

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

Two efficient sentences with no filler. The core function is front-loaded, and the ratio categories are compactly listed with representative examples. Every part of the description earns its place.

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?

Given the read-only annotations, full schema parameter coverage, and presence of an output schema, this definition gives an agent enough to select and call the tool correctly. The main gap is potential overlap with siblings like get_financials or get_performance, though the metric categories and 'screening or comparison' guidance mostly disambiguate it.

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%, so the parameters are already well documented there. The description adds context about the ratio families that may be relevant to sorting/filtering, but it does not add new meaning to individual parameters like mode, sort, year, or limit. Baseline 3 is appropriate.

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 identifies the resource ('financial metrics/ratios for NZX companies'), specifies the verb 'get', and enumerates ratio categories and example metrics. It is specific about what the tool returns, but it doesn't explicitly differentiate itself from similar siblings like get_financials, get_earnings, or get_performance.

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?

'Use for screening or comparison' gives a clear intended use case, and the ratio listing supports that framing. However, it does not name alternatives or state when not to use this tool instead of a sibling, so it falls short of full 5.

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.