Skip to main content
Glama

Get cohorts and LTV

get_cohorts
Read-onlyIdempotent

Cohort & LTV analytics. A cohort is everything that entered on the same day (or week): subject=clicks follows a traffic day — cumulative LTV/ROI per click, repeat conversions and how much of the payoff had landed by day N, with revenue attributed back to the day of the CLICK (standard reports attribute it to the day the conversion arrived); subject=registration follows sign-ups (Lead) to their deposits; subject=ftd follows first deposits (Sale) to their redeposits (Upsell) — the deposit / repeat-purchase vocabulary: summary.arpu = LTV per FTD, returns_per_entity = redeposits per FTD, active_rate = FTD→redeposit rate, summary.ladder = LTV earned inside D0 / D1-7 / D8-30 / D31-90, life_days = redeposits by day of life; subject=push follows a subscriber base; subject=pwa follows PWA installs. split_by returns a second table whose rows are one dimension value instead of a day (each row carries its own ladder, active_rate and returns_per_entity — the channel comparison). Cells a cohort has not reached yet are null.

Input Schema

NameRequiredDescriptionDefault
osNo
ispNo
pwaNoPWA id
cityNo
siteNoPlacement / zone id as passed by the ad network
sub1NoFilter by sub1
sub2NoFilter by sub2
sub3NoFilter by sub3
sub4NoFilter by sub4
sub5NoFilter by sub5
sub6NoFilter by sub6
sub7NoFilter by sub7
sub8NoFilter by sub8
sub9NoFilter by sub9
userNoWorkspace member id(s), comma-separated — the campaign owner at click time (needs the "See statistics per team member" permission; ignored otherwise)
offerNoOffer id
sub10NoFilter by sub10
sub11NoFilter by sub11
sub12NoFilter by sub12
sub13NoFilter by sub13
sub14NoFilter by sub14
sub15NoFilter by sub15
deviceNomobile / tablet / desktop
periodNoReporting period (default 7days). Use 'custom' with date_from/date_to.
sourceNoTraffic source id
browserNo
countryNoCountry ISO alpha-2 code, e.g. ES
date_toNoYYYY-MM-DD (with period=custom)
horizonNoDays/weeks after the cohort day to return (default 30 / 12, max 90 / 26)
landingNoLanding id
subjectNoWhat a cohort is made of (default clicks)
campaignNoCampaign ALIAS (the short code, not the numeric id)
creativeNoCreative id from the click URL
languageNo
pwa_tagsNoComma-separated tag ids — pwas carrying any of them
referrerNo
split_byNoAlso return a matrix whose rows are this dimension
utm_termNoExact utm_term value from the click URL
date_fromNoYYYY-MM-DD (with period=custom)
pwa_groupNoPwa group id
smartlinkNoSmartlink id
source_idNoSource id as passed by the ad network
offer_tagsNoComma-separated tag ids — offers carrying any of them
utm_mediumNoExact utm_medium value from the click URL
utm_sourceNoExact utm_source value from the click URL
ad_campaignNoThe ad network's own campaign id (external_campaign_id)
aff_networkNoAffiliate network id
granularityNoCohort granularity (default day)
offer_groupNoOffer group id
source_tagsNoComma-separated tag ids — sources carrying any of them
unique_onlyNoCount unique clicks only
utm_contentNoExact utm_content value from the click URL
exclude_botsNoExclude bot traffic (bots are counted by default)
landing_tagsNoComma-separated tag ids — landings carrying any of them
source_groupNoSource group id
utm_campaignNoExact utm_campaign value from the click URL
campaign_tagsNoComma-separated tag ids — campaigns carrying any of them
landing_groupNoLanding group id
campaign_groupNoCampaign group id
smartlink_tagsNoComma-separated tag ids — smartlinks carrying any of them
connection_typeNo
smartlink_groupNoSmartlink group id

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the read-only, idempotent, non-destructive profile, so the description's burden is lighter. It adds genuinely non-obvious behavior: revenue is attributed back to the day of the CLICK rather than the conversion day, and cells for cohort days not yet reached are null — both of which change how results should be read. No mention of cost/row limits or latency for a 62-parameter query.

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?

Front-loaded with the one-line purpose before the per-subject detail, and roughly 180 words is defensible for a tool with 62 optional parameters and no output schema. The sentences are long and heavily parenthetical, which costs some scannability, but little is filler.

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?

Covers the conceptual model, subject enumeration, split_by behavior, null semantics and output field meanings — the parts an agent cannot recover from the schema, and it needs to since no output schema exists. Gaps are secondary: no guidance on combining filters, on horizon defaults versus granularity, or on result size for a 62-parameter query.

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 89%, so the baseline is 3, and the description earns above it by adding meaning to the enums: what each subject actually cohorts on, what split_by produces (a second table whose rows are a dimension value, each with its own ladder/active_rate/returns_per_entity), and the horizon concept of 'payoff landed by day N'. Since there is no output schema, naming summary.arpu, returns_per_entity, active_rate, summary.ladder and life_days is a real contribution to interpreting results.

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?

Opens with a specific domain statement ('Cohort & LTV analytics') and then defines what a cohort is for each subject value (clicks, registration, ftd, push, pwa), which lets an agent tell it apart from generic reporting siblings like get_statistics or get_report. It never explicitly names those siblings as alternatives, so differentiation is implicit rather than stated.

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?

Gives strong subject-selection guidance: clicks for traffic-day ROI, registration for Lead-to-deposit, ftd for Sale-to-redeposit, push for subscriber base, pwa for installs. Also explains when split_by is worth setting (channel comparison against a day-row table). It stops short of stating when NOT to use this tool versus get_report/get_push_analytics.

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