Skip to main content
Glama

Limzo – Telegram Group Stats

Server Details

Read-only public statistics for Telegram groups tracked by Limzo (https://limzo.com), a group analytics bot. Two tools: get_global_stats (network-wide totals) and get_group_stats (activity, engagement, top members, achievements for a group by its public slug - the last part of its https://limzo.com/s/ URL; browse https://limzo.com/groups/ to find groups). Privacy-safe: payloads never include verbatim member messages. No authentication required. Docs: https://limzo.com/docs/

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

TDQS

A4.6/5.0

Scored across 3 tools

Disambiguation4/5

get_group_stats and list_groups are clearly distinct, but get_global_stats and list_groups both surface top groups by Limzo Score, so an agent could pick the wrong one for a 'top groups' request. The descriptions help disambiguate, but the overlap keeps this from being a perfect score.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern: get_global_stats, get_group_stats, list_groups. The verbs get and list are appropriate for their actions, and the scope is clear in each name.

Tool Count5/5

Three tools is at the low end but well-scoped for a read-only stats server: one for network-wide stats, one for a single group's stats, and one for directory discovery. Each tool earns its place with no redundancy.

Completeness4/5

The core surface is covered: global stats, per-group stats, and group discovery/search. The only notable gap is that list_groups exposes total_matches but no pagination parameter, so large result sets may be truncated without a way to page through them.

Available Tools

3 tools
get_global_statsGet network-wide Limzo totalsA
Read-only
Inspect

Call this for network-wide numbers across all public Telegram groups tracked by Limzo (group count, messages, active users, replies, reactions, karma — 7-day and all-time) plus durable lifetime totals (messages analyzed, members tracked, spam messages removed) and the current top groups by Limzo Score. For finding a specific group, prefer list_groups.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
docsNoHuman-readable API documentation.
statsYes
openapiNoMachine-readable OpenAPI document for the REST API.
top_groupsNoCurrent top public groups by Limzo Score.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds useful scope context: network-wide coverage, 7-day/all-time windows, durable lifetime totals, and top groups. It does not contradict annotations. Since the output schema exists, the lack of return format description is acceptable.

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?

The description is a single, front-loaded sentence listing key outputs, followed by one concise sentence for guidance. No wasted words; every clause adds information.

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 is simple (0 params) and has an output schema. The description thoroughly covers the returned data (metrics, timeframes, totals, top groups) and provides usage context. It is complete and self-sufficient.

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?

There are zero parameters and schema description coverage is 100% (vacuously). No parameter explanation is needed. The description adds meaning about what data is returned, which is beyond the empty 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 states a specific verb ('Call this for network-wide numbers') and clearly resources ('all public Telegram groups tracked by Limzo'), with an enumerated list of metrics. It is distinct from siblings: 'For finding a specific group, prefer list_groups' explicitly differentiates it.

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?

It provides an explicit alternative: 'For finding a specific group, prefer list_groups.' This gives clear when-to-use/when-not-to-use guidance and names the sibling tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_group_statsGet public stats for one Telegram groupA
Read-only
Inspect

Call this when the user asks about the activity, health, leaderboard, mood, or trends of a specific Telegram group tracked by Limzo. slug is the last part of the group's public page URL, limzo.com/s/ (e.g. "hipo"). Returns the curated limzo.public_stats/v1 JSON: messages, replies, active members, daily series, top members, mood, reactions, language mix, the Limzo Levels ladder (lifetime XP + badge tiers), and weekly-league standings when the group has the league enabled. Optional range: 7d (default), 30d, all — the wider ranges only serve real data for groups on a paid plan and otherwise silently fall back to 7d, so check range.key in the result. Never includes verbatim member messages. For a private group (one with no public t.me handle) the member identities, the group description and member_count are withheld too: aggregates plus an anonymised leaderboard are all it returns.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesThe group's public slug — the last part of its limzo.com/s/<slug> URL.
rangeNoStats window. Defaults to 7d. 30d/all require the group's paid plan; free groups silently fall back to 7d.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
docsNoHuman-readable API documentation.
groupYes
rangeYesThe range actually served — compare `key` with what you requested to detect the plan fallback.
statsYes
schemaYes
openapiNoMachine-readable OpenAPI document for the REST API.
generated_atYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the read-only annotation, it discloses that verbatim member messages are never included, that private groups withhold identities/description/member_count and return an anonymised leaderboard, and that wider ranges silently fall back to 7d unless the group is on a paid plan. These are important behavioral caveats an agent needs to set correct expectations.

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?

The trigger is front-loaded, every sentence carries distinct information, and the detailed return-field list and caveats are justified given the tool's complexity. Nothing feels redundant or padded.

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?

Given the annotations, parameter schema, and output-schema presence, the description fully covers when to call, what to pass, what to expect, and edge cases such as paid-plan fallback and private-group anonymisation. An agent has enough context to call the tool correctly without additional inference.

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 100%, so the baseline is 3, but the description adds actionable meaning: slug is tied to the URL pattern with an example, and range's default/paid-plan/fallback behavior is spelled out with the instruction to check range.key. That goes beyond simply restating parameter names.

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 opens with a clear trigger: 'Call this when the user asks about... activity, health, leaderboard, mood, or trends of a specific Telegram group' and the title states the resource as 'public stats for one Telegram group'. This clearly distinguishes it from global-stats or group-listing tools.

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?

It explicitly says when to call the tool and scopes it to a specific group, which separates it from the global/listing siblings. It does not name the alternatives directly or state explicit when-not-to-use conditions, but the trigger phrasing and 'specific group' scope are strong enough to make intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_groupsList or search public Telegram groupsA
Read-only
Inspect

Call this to discover Telegram groups tracked by Limzo — to browse the directory, filter by language, or find a group's slug for get_group_stats. Optional query filters case-insensitively over group title, username, slug, and description. Optional lang (ISO 639-1, e.g. "fa", "es") keeps only groups where that language is a meaningful share of what members write — the way to answer "find active Persian/Spanish groups". Omit both to list the top groups by Limzo Score. The directory covers PUBLIC groups only — a group with no t.me handle is never listed, though it may still have a /s/ page. Each row carries a language mix (primary language + top languages as percentages); rows also include slug, title, username, plan, member_count, 7-day messages and active members, score and page URLs, plus total_matches so you can tell when more groups matched than were returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoISO 639-1 language code (e.g. "fa", "es", "en"). Keeps only groups where that language is a meaningful share of the group.
limitNoMaximum groups to return. Defaults to 20, capped at 50.
queryNoKeyword matched case-insensitively against group title, username, slug, and description. Omit to list the top groups by Limzo Score.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
docsNoHuman-readable API documentation.
langNoThe applied ISO 639-1 language filter, or null when not filtering by language.
queryNoThe normalized search keyword, or null when listing top groups.
groupsYes
openapiNoMachine-readable OpenAPI document for the REST API.
total_matchesYesGroups that matched, before the limit was applied.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, so the description's job was to add context, and it does: the PUBLIC-groups-only coverage rule, the Limzo Score ranking when all filters are omitted, and the total_matches signal for truncated results. The 'meaningful share of what members write' qualifier for the lang filter is behavioral nuance the structured data cannot convey. Nothing contradicts the 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 dense but every clause earns its place -- purpose, param semantics, default behavior, coverage limitation, row contents, and truncation flag. It is front-loaded with the purpose and has no filler, though it sits near the upper bound of comfortable length for a 3-parameter tool.

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?

Given that an output schema covers return values and annotations cover the read-only safety profile, the description supplies everything else an agent needs: when to call it, param semantics, defaults, and behavioral caveats like public-only coverage and total_matches. The only omission -- an explicit word about get_global_stats -- does not undermine correct invocation.

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 100%, so the baseline is 3, but the description still adds real meaning: query 'filters case-insensitively over group title, username, slug, and description', lang is pinned to ISO 639-1 with a meaningful-share semantic and an example, and the omit-both default is spelled out. It enriches both filters rather than merely restating 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 states a specific verb and resource -- 'discover Telegram groups tracked by Limzo' -- and names its immediate use case of resolving a slug for get_group_stats, so an agent can place it in the workflow. It is clearly distinct from the sibling stats tools.

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 explicit contexts for calling it: browsing the directory, filtering by language, or finding a slug for get_group_stats, and even maps a natural-language request ('find active Persian/Spanish groups') to the lang parameter. It does not explicitly contrast itself with get_global_stats or state when to avoid it, so exclusions are left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedget_group_stats4 fields changed
      • changedOutput schema / description
        Previous value: -"Curated, versioned public stats payload. Never includes verbatim member messages."New value: +"Curated, versioned public stats payload. Never includes verbatim member messages. For a private group (one with no public t.me handle) the member identities, the group description and member_count are withheld too: aggregates plus an anonymised leaderboard are all it returns."
      • addedOutput schema / properties / group / properties / description / description
        Added value: +"The group description. On a private group this is null unless an admin wrote a public description specifically for this page, in which case that text is served instead of the Telegram one."
      • changedOutput schema / properties / group / properties / is_private / description
        Previous value: -"True when the group has no public t.me address. Private groups expose aggregates and the leaderboard only."New value: +"True when the group has no public t.me address. Private groups expose aggregate stats and an anonymised leaderboard only: member identities, verbatim content, the group description and member_count are all withheld, and the group is not listed in the public directory."
      • addedOutput schema / properties / group / properties / member_count / description
        Added value: +"Telegram member count. Always null for a private group — Limzo only knows it because the bot is in the chat, so it is not ours to publish."
  2. 1 tool update
    • Changedget_group_stats2 fields changed
      • addedOutput schema / properties / group / properties / bot_in_group
        Added value: +{
        +  "description": "False once Limzo has been removed from the chat. Every windowed figure then stops advancing and the page becomes a frozen archive; the data is kept for 90 days after removal, then the page returns 410.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / stats / properties / tracking_paused
        Added value: +{
        +  "description": "True when Limzo is no longer in the group, so nothing further will ever be counted. Unlike tracking_frozen (a monthly cap that lifts on the 1st) this only clears if the bot is re-added. Mirrors group.bot_in_group === false.",
        +  "type": "boolean"
        +}
  3. 1 tool update
    • Changedget_group_stats1 field changed
      • addedOutput schema / properties / stats / properties / tracking_frozen
        Added value: +{
        +  "description": "True while tracking is paused because the group used up its plan's monthly message allowance (resets on the 1st, UTC). While true, windowed stats undercount real activity — the group is NOT quiet.",
        +  "type": "boolean"
        +}
  4. 1 tool update
    • Changedget_global_stats3 fields changed
      • addedOutput schema / properties / stats / properties / members_total
        Added value: +{
        +  "description": "Distinct members ever tracked across all groups.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / stats / properties / messages_total
        Added value: +{
        +  "description": "Messages analyzed across all groups, all time (durable — survives retention pruning).",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / stats / properties / spam_removed_total
        Added value: +{
        +  "description": "Spam messages removed by moderation across all groups, all time.",
        +  "type": "integer"
        +}
  5. 1 tool update
    • Changedget_group_stats2 fields changed
      • addedOutput schema / properties / stats / properties / league
        Added value: +{
        +  "description": "Weekly league standings (this ISO week, resets Monday). Only present when the group has the league enabled; null otherwise. Tiers are activity percentile bands: diamond top 10%, platinum next 15%, gold next 25%, silver next 25%, bronze rest.",
        +  "properties": {
        +    "members": {
        +      "items": {
        +        "properties": {
        +          "messages": {
        +            "description": "Messages this ISO week.",
        +            "type": "integer"
        +          },
        +          "movement": {
        +            "description": "1 promoted vs last week, -1 relegated, 0 unchanged, null = no baseline yet.",
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "rank": {
        +            "description": "1-based position this week.",
        +            "type": "integer"
        +          },
        +          "tier": {
        +            "description": "bronze, silver, gold, platinum, or diamond.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "username": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "season": {
        +      "description": "ISO week key, e.g. \"2026-W30\".",
        +      "type": "string"
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / stats / properties / levels
        Added value: +{
        +  "description": "Limzo Levels — the group's lifetime-XP ladder (top 12 members). XP accrues from karma (helpful replies, reactions received, conversation starters), never from raw message volume alone. Tier names may be customised by the group.",
        +  "items": {
        +    "properties": {
        +      "level": {
        +        "description": "Current level (permanent, no decay).",
        +        "type": "integer"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "rank": {
        +        "description": "1-based position.",
        +        "type": "integer"
        +      },
        +      "tier": {
        +        "description": "Badge tier key: newcomer, regular, familiar, veteran, elite, legend.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "tier_title": {
        +        "description": "Display title for the tier (may be a group-custom name).",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "username": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "xp": {
        +        "description": "Lifetime XP (karma) in this group.",
        +        "type": "integer"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  6. 2 tool updates
    • Changedget_group_stats1 field changed
      • addedOutput schema / properties / stats / properties / languages
        Added value: +{
        +  "description": "How international the group is: its language mix, detected from the languages members actually write in (falling back to their app language for new or quiet groups). Null when there is not enough signal. Never derived from verbatim message text exposed over the API.",
        +  "properties": {
        +    "distinct": {
        +      "description": "Number of distinct languages detected.",
        +      "type": "integer"
        +    },
        +    "items": {
        +      "description": "Top languages by share, largest first; a trailing null-code \"other\" bucket may aggregate the long tail.",
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "description": "ISO 639-1 language code, or null for the aggregated \"other\" bucket.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "description": "Language name in English.",
        +            "type": "string"
        +          },
        +          "pct": {
        +            "description": "Share of the group, 0–100.",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "primary": {
        +      "description": "Dominant language as an ISO 639-1 code (e.g. \"fa\", \"es\", \"en\").",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedlist_groups3 fields changed
      • addedInput schema / properties / lang
        Added value: +{
        +  "description": "ISO 639-1 language code (e.g. \"fa\", \"es\", \"en\"). Keeps only groups where that language is a meaningful share of the group.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / groups / items / properties / language
        Added value: +{
        +  "description": "The group's language mix (primary language + top languages as percentages). Null when there is not enough signal.",
        +  "properties": {
        +    "distinct": {
        +      "description": "Number of distinct languages detected.",
        +      "type": "integer"
        +    },
        +    "items": {
        +      "items": {
        +        "properties": {
        +          "code": {
        +            "description": "ISO 639-1 language code, or null for the aggregated \"other\" bucket.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "pct": {
        +            "description": "Share of the group, 0–100.",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "primary": {
        +      "description": "Dominant language as an ISO 639-1 code.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / lang
        Added value: +{
        +  "description": "The applied ISO 639-1 language filter, or null when not filtering by language.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  7. 3 tool updates
    • Changedget_global_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Network-wide totals across all listed public groups.",
        +  "properties": {
        +    "docs": {
        +      "description": "Human-readable API documentation.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "ok": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "openapi": {
        +      "description": "Machine-readable OpenAPI document for the REST API.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "stats": {
        +      "properties": {
        +        "active_users_7d": {
        +          "type": "integer"
        +        },
        +        "karma_7d": {
        +          "type": "integer"
        +        },
        +        "messages_7d": {
        +          "type": "integer"
        +        },
        +        "messages_all": {
        +          "type": "integer"
        +        },
        +        "public_groups": {
        +          "description": "Public groups in the directory.",
        +          "type": "integer"
        +        },
        +        "reactions_7d": {
        +          "type": "integer"
        +        },
        +        "replies_7d": {
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "top_groups": {
        +      "description": "Current top public groups by Limzo Score.",
        +      "items": {
        +        "properties": {
        +          "active_users_7d": {
        +            "type": "integer"
        +          },
        +          "messages_7d": {
        +            "type": "integer"
        +          },
        +          "plan": {
        +            "enum": [
        +              "free",
        +              "pro",
        +              "community"
        +            ],
        +            "type": "string"
        +          },
        +          "score": {
        +            "type": "number"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "stats"
        +  ],
        +  "type": "object"
        +}
    • Changedget_group_stats1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Curated, versioned public stats payload. Never includes verbatim member messages.",
        +  "properties": {
        +    "docs": {
        +      "description": "Human-readable API documentation.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "generated_at": {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    "group": {
        +      "properties": {
        +        "description": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "is_private": {
        +          "description": "True when the group has no public t.me address. Private groups expose aggregates and the leaderboard only.",
        +          "type": "boolean"
        +        },
        +        "member_count": {
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "plan": {
        +          "enum": [
        +            "free",
        +            "pro",
        +            "community"
        +          ],
        +          "type": "string"
        +        },
        +        "slug": {
        +          "type": "string"
        +        },
        +        "telegram_url": {
        +          "format": "uri",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "title": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "url": {
        +          "description": "The human stats page for this group.",
        +          "format": "uri",
        +          "type": "string"
        +        },
        +        "username": {
        +          "description": "Telegram username without @, when the group is public on t.me.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "ok": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "openapi": {
        +      "description": "Machine-readable OpenAPI document for the REST API.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "range": {
        +      "description": "The range actually served — compare `key` with what you requested to detect the plan fallback.",
        +      "properties": {
        +        "days": {
        +          "description": "Length of the window in days.",
        +          "type": "integer"
        +        },
        +        "key": {
        +          "enum": [
        +            "7d",
        +            "30d",
        +            "all"
        +          ],
        +          "type": "string"
        +        },
        +        "label": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "schema": {
        +      "const": "limzo.public_stats/v1",
        +      "type": "string"
        +    },
        +    "stats": {
        +      "properties": {
        +        "active_users": {
        +          "description": "Unique posting members in the selected range.",
        +          "type": "integer"
        +        },
        +        "active_users_today": {
        +          "description": "Unique posting members so far today (UTC).",
        +          "type": "integer"
        +        },
        +        "daily": {
        +          "description": "Per-day series over the selected range.",
        +          "items": {
        +            "properties": {
        +              "active_users": {
        +                "type": "integer"
        +              },
        +              "day": {
        +                "format": "date",
        +                "type": "string"
        +              },
        +              "messages": {
        +                "type": "integer"
        +              },
        +              "replies": {
        +                "type": "integer"
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "lifetime_messages": {
        +          "description": "Messages since Limzo started tracking the group.",
        +          "type": "integer"
        +        },
        +        "messages": {
        +          "description": "Messages in the selected range.",
        +          "type": "integer"
        +        },
        +        "messages_today": {
        +          "description": "Messages so far today (UTC).",
        +          "type": "integer"
        +        },
        +        "mood": {
        +          "description": "Group mood derived from reactions. Null when there is not enough data.",
        +          "properties": {
        +            "emoji": {
        +              "type": "string"
        +            },
        +            "label": {
        +              "type": "string"
        +            },
        +            "positive_pct": {
        +              "description": "Share of positive reactions, 0–100.",
        +              "type": "number"
        +            }
        +          },
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "new_active_members": {
        +          "description": "Members who posted for the first time in the selected range.",
        +          "type": "integer"
        +        },
        +        "peak_hour_utc": {
        +          "description": "Busiest hour of day, UTC.",
        +          "maximum": 23,
        +          "minimum": 0,
        +          "type": [
        +            "integer",
        +            "null"
        +          ]
        +        },
        +        "reaction_magnet": {
        +          "description": "The member whose messages attracted the most reactions. Null when the range has no reaction data.",
        +          "properties": {
        +            "count": {
        +              "description": "Reactions in the selected range.",
        +              "type": "integer"
        +            },
        +            "name": {
        +              "description": "Display name as shown on the public page.",
        +              "type": "string"
        +            },
        +            "username": {
        +              "description": "Telegram username without @, when public.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "replies": {
        +          "description": "Replies in the selected range.",
        +          "type": "integer"
        +        },
        +        "stickers": {
        +          "description": "Stickers in the selected range.",
        +          "type": "integer"
        +        },
        +        "top_members": {
        +          "description": "Member leaderboard for the selected range.",
        +          "items": {
        +            "properties": {
        +              "messages": {
        +                "type": "integer"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "rank": {
        +                "description": "1-based position.",
        +                "type": "integer"
        +              },
        +              "replies": {
        +                "type": "integer"
        +              },
        +              "username": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "top_reactor": {
        +          "description": "A member singled out by reaction activity. Null when the range has no reaction data.",
        +          "properties": {
        +            "count": {
        +              "description": "Reactions in the selected range.",
        +              "type": "integer"
        +            },
        +            "name": {
        +              "description": "Display name as shown on the public page.",
        +              "type": "string"
        +            },
        +            "username": {
        +              "description": "Telegram username without @, when public.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "type": [
        +            "object",
        +            "null"
        +          ]
        +        },
        +        "tracked_since_days": {
        +          "description": "Days since tracking started.",
        +          "type": "integer"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "schema",
        +    "generated_at",
        +    "group",
        +    "range",
        +    "stats"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_groups1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Compact directory rows for discovering groups. Sorted by Limzo Score.",
        +  "properties": {
        +    "docs": {
        +      "description": "Human-readable API documentation.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "groups": {
        +      "items": {
        +        "properties": {
        +          "active_users_7d": {
        +            "type": "integer"
        +          },
        +          "member_count": {
        +            "type": [
        +              "integer",
        +              "null"
        +            ]
        +          },
        +          "messages_7d": {
        +            "type": "integer"
        +          },
        +          "plan": {
        +            "enum": [
        +              "free",
        +              "pro",
        +              "community"
        +            ],
        +            "type": "string"
        +          },
        +          "score": {
        +            "description": "Limzo Score — the directory ranking metric.",
        +            "type": "number"
        +          },
        +          "slug": {
        +            "description": "Use with /s/{slug}.json or the get_group_stats MCP tool.",
        +            "type": "string"
        +          },
        +          "stats_json": {
        +            "description": "Full curated stats payload for this group.",
        +            "format": "uri",
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "url": {
        +            "description": "The human stats page for this group.",
        +            "format": "uri",
        +            "type": "string"
        +          },
        +          "username": {
        +            "description": "Telegram username without @, when the group is public on t.me.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "ok": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "openapi": {
        +      "description": "Machine-readable OpenAPI document for the REST API.",
        +      "format": "uri",
        +      "type": "string"
        +    },
        +    "query": {
        +      "description": "The normalized search keyword, or null when listing top groups.",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "total_matches": {
        +      "description": "Groups that matched, before the limit was applied.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "total_matches",
        +    "groups"
        +  ],
        +  "type": "object"
        +}
  8. 1 tool update
    • Addedlist_groups
  9. 2 tool updates
    • First observedget_global_stats
    • First observedget_group_stats

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables detection and analysis of pre-public product launches through web search, content extraction, AI-powered scoring, and automated alerting. Provides comprehensive tools for surfacing stealth startup signals before they trend publicly.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Analyze LinkedIn & email outreach campaigns, track pipeline performance, and review lead conversations for RevOps, Sales Managers, and SDR teams.
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources