Server definition
- Hash
- sha256:f2c240bd88caa8f2cf3c1ea82be94187aa3ef3e3877f516bb6828ace91c3b66a
- What it is
- What a remote MCP server returned when asked what it offers: 3 tools
The blob, as servednamed by its sha256
{
"instructions": "Read-only public stats for Telegram groups tracked by Limzo (https://limzo.com). Use list_groups to find or search groups, then get_group_stats with a group's public slug (the last part of its https://limzo.com/s/<slug> URL). Payloads never include verbatim member messages. Docs: https://limzo.com/docs/",
"tools": [
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_global_stats",
"outputSchema": {
"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"
},
"members_total": {
"description": "Distinct members ever tracked across all groups.",
"type": "integer"
},
"messages_7d": {
"type": "integer"
},
"messages_all": {
"type": "integer"
},
"messages_total": {
"description": "Messages analyzed across all groups, all time (durable — survives retention pruning).",
"type": "integer"
},
"public_groups": {
"description": "Public groups in the directory.",
"type": "integer"
},
"reactions_7d": {
"type": "integer"
},
"replies_7d": {
"type": "integer"
},
"spam_removed_total": {
"description": "Spam messages removed by moderation across all groups, all time.",
"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"
}
},
{
"description": "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/<slug> (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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"range": {
"description": "Stats window. Defaults to 7d. 30d/all require the group's paid plan; free groups silently fall back to 7d.",
"enum": [
"7d",
"30d",
"all"
],
"type": "string"
},
"slug": {
"description": "The group's public slug — the last part of its limzo.com/s/<slug> URL.",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "get_group_stats",
"outputSchema": {
"description": "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.",
"properties": {
"docs": {
"description": "Human-readable API documentation.",
"format": "uri",
"type": "string"
},
"generated_at": {
"format": "date-time",
"type": "string"
},
"group": {
"properties": {
"bot_in_group": {
"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"
},
"description": {
"description": "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.",
"type": [
"string",
"null"
]
},
"is_private": {
"description": "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.",
"type": "boolean"
},
"member_count": {
"description": "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.",
"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"
},
"languages": {
"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"
]
},
"league": {
"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"
]
},
"levels": {
"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"
},
"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"
},
"tracking_frozen": {
"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"
},
"tracking_paused": {
"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"
}
},
"type": "object"
}
},
"required": [
"ok",
"schema",
"generated_at",
"group",
"range",
"stats"
],
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"lang": {
"description": "ISO 639-1 language code (e.g. \"fa\", \"es\", \"en\"). Keeps groups whose main language it is (the detected top language, or the admin's chosen one when both are languages Limzo speaks) or where it is a meaningful share of the group.",
"type": "string"
},
"limit": {
"description": "Maximum groups to return. Defaults to 20, capped at 50.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"query": {
"description": "Keyword matched case-insensitively against group title, username, slug, and description. Omit to list the top groups by Limzo Score.",
"type": "string"
}
},
"type": "object"
},
"name": "list_groups",
"outputSchema": {
"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"
},
"language": {
"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"
]
},
"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"
},
"lang": {
"description": "The applied ISO 639-1 language filter, or null when not filtering by language.",
"type": [
"string",
"null"
]
},
"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"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:f2c240bd88caa8f2cf3c1ea82be94187aa3ef3e3877f516bb6828ace91c3b66a | sha256sum