Skip to main content
Glama

Customer Lifetime Value List

list_customers
Read-onlyIdempotent

List customers ranked by lifetime value (net profit after allocated overhead, summed across each customer's full order history) - the same source as the dashboard Customers page. start_date/end_date filter WHICH customers appear, by their first-order date; they do NOT clamp a customer's lifetime totals to that window. Customer name and email in the response are partially redacted. Each returned id identifies a customer record whose detail includes up to 200 recent orders.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dirNoSort direction, default 'desc'.
pageNoPage number, 1-based (default 1).
sortNoSort key: 'marginLtv' (net profit, default), 'revenueLtv', 'orderCount', or 'firstOrderAt'.
limitNoRows per page, 1 to 50 (default 25).
end_dateNoOnly include customers whose first order falls on or before this date (YYYY-MM-DD, tenant timezone). Omit for all-time.
start_dateNoOnly include customers whose first order falls on or after this date (YYYY-MM-DD, tenant timezone). Omit for all-time.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
_metaNo
filtersNo
summaryNo
_messageNo
currencyNo
customersNo
_truncatedNo
paginationNo
_tenant_contextNo
attribution_enabledNoWhen false, acquisition_channel and acquisition_country_code are unreliable and must not be reported as fact.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint), the description discloses important behavioral quirks: customer name and email are partially redacted, the date range only selects which customers appear rather than clamping their lifetime totals, and each id points to a detail record with up to 200 recent orders. This is exactly the kind of non-obvious behavior an agent needs to know.

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?

Three sentences with no filler. The core definition is front-loaded, followed by the most important semantic caveat, then response-level redaction and id behavior. Every sentence earns its place without repeating schema defaults.

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?

The tool has an output schema, so return-value structure does not need to be restated. The description supplies the missing context: metric definition, dashboard parity, date-filter semantics, redaction, and what the returned ids point to. Nothing critical is missing for an agent to call this correctly.

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?

The input schema already documents all six parameters with 100% coverage, so the baseline is 3. The description adds a valuable clarification that start_date/end_date filter by first-order date and do NOT clamp lifetime totals, which prevents an easy misuse not fully spelled out in the schema.

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?

The description uses a specific verb and resource: 'List customers ranked by lifetime value' and precisely defines the metric ('net profit after allocated overhead, summed across each customer's full order history'). It also distinguishes this tool by tying it to the dashboard Customers page and noting that each returned id maps to a customer detail record, which helps separate it from get_customer_detail and get_ltv_summary.

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 gives clear context for when to use it: it mirrors the dashboard Customers page and returns an LTV-ranked customer list. It does not explicitly name alternatives or exclusion conditions, but the dashboard-source statement and the precise filter semantics provide enough situational guidance.

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