[{'Text': 'Edited point-topic-mcp/src/point_topic_mcp/tools/gbs_tools.py:\n\n```diff\n@@ -38,6 +38,92 @@\n # Stage names that MODIFY data — rejected by read_gbs\n _GBS_WRITE_STAGES = {"$out", "$merge"}\n \n+# Cheatsheet injected into read_gbs docstring — agent instructions, live state, and pipeline templates.\n+_GBS_CHEATSHEET = """\n+GBS CHEATSHEET\n+==============\n+\n+Always provide the admin URL after adding a statistic:\n+  https://pt-research-app.vercel.app/operators/{operator_id}/statistics\n+\n+Current period: 2026Q1  |  Previous: 2025Q4  |  Tariffs: 2026Q2\n+\n+Key people:\n+  veronica.speiser@point-topic.com — 177 recs since May (UK ops)\n+  aliciamenendezbuick@gmail.com    — 56 recs (global sweep)\n+  gbs-agent                        — automated\n+\n+COLLECTION FIELDS:\n+\n+Statistics:\n+  operatorId (ObjectId), period (YYYYQN), type (broadband|mobile|iptv),\n+  tech (free text), channel (Infrastructure|Retail),\n+  domain (Residential|Business|Total), subscribers (int),\n+  state (1=pending, 2=approved, 3=published), createdBy (email)\n+\n+Operator:\n+  name (string), country (string), technologies (string[]), isArchived (bool)\n+\n+GlobalVariables:\n+  currentStatsPeriod (string), currentTariffsPeriod (string)\n+\n+PIPELINE TEMPLATES:\n+\n+0. Resolve current period:\n+  [{"$match": {"isCurrent": true}}, {"$project": {"currentStatsPeriod": 1}}]\n+\n+1. Country coverage (replaces old get_status):\n+  [{"$match": {"country": "United Kingdom", "isArchived": {"$ne": true}}},\n+   {"$lookup": {"from": "Statistics", "let": {"oid": "$_id"},\n+     "pipeline": [{"$match": {"$expr": {"$eq": ["$operatorId", "$$oid"]}}},\n+       {"$match": {"period": "2026Q1", "type": "broadband"}}],\n+     "as": "stats"}},\n+   {"$addFields": {"statCount": {"$size": "$stats"}}},\n+   {"$project": {"name": 1, "statCount": 1}}, {"$sort": {"statCount": -1}}]\n+\n+2. Operator drill-down (get OID first from Operator by name):\n+  [{"$match": {"operatorId": {"$oid": "<OID>"}, "period": "2026Q1"}},\n+   {"$project": {"tech": 1, "channel": 1, "domain": 1, "subscribers": 1, "state": 1}}]\n+\n+3. Gap analysis — techs from previous period missing in current:\n+  [{"$match": {"operatorId": {"$oid": "<OID>"}, "period": "2025Q4"}},\n+   {"$group": {"_id": null, "techs": {"$addToSet": "$tech"}}}]\n+\n+4. Recent activity:\n+  [{"$match": {"type": "broadband", "createdAt": {"$gte": {"$date": "<DATE>"}}}},\n+   {"$group": {"_id": "$createdBy", "count": {"$sum": 1}}}]\n+\n+5. Period progress (all operators with data in current period):\n+  [{"$match": {"period": "2026Q1", "type": "broadband", "is_archived": {"$ne": true}}},\n+   {"$group": {"_id": "$operator", "count": {"$sum": 1},\n+     "techs": {"$addToSet": "$tech"}, "states": {"$addToSet": "$state"}}},\n+   {"$sort": {"count": -1}}]\n+\n+6. Countries with data this quarter:\n+  [{"$match": {"period": "2026Q1", "type": "broadband"}},\n+   {"$group": {"_id": "$country", "count": {"$sum": 1}}},\n+   {"$sort": {"count": -1}}]\n+\n+7. EJSON syntax: ObjectId={"$oid": "..."}, Date={"$date": "..."}\n+\n+8. Full operator history (all periods, compact):\n+  [{"$match": {"name": "<NAME>", "country": "<COUNTRY>"}},\n+   {"$lookup": {"from": "Statistics", "let": {"oid": "$_id"},\n+     "pipeline": [{"$match": {"$expr": {"$eq": ["$operatorId", "$$oid"]}}},\n+       {"$group": {"_id": "$period", "count": {"$sum": 1},\n+         "techs": {"$addToSet": "$tech"}}}, {"$sort": {"_id": -1}}],\n+     "as": "period_summary"}}]\n+\n+BT FAMILY:\n+  BT Group (662ff7a3f9d5751ffbf300f6) — 4 active techs, only 1 record in 2026Q1\n+  BT Wholesale Business — separate operator, fully entered\n+\n+RULES:\n+- Never guess subscriber numbers — tool can only report what\'s entered\n+- Use $lookup/$in not N+1 calls (each mongosh spawn = ~200ms)\n+- Always check previous complete period for carry-forward gaps\n+"""\n+\n if check_env_vars("gbs_tools", ["PT_RESEARCH_DATABASE_URI"]):\n \n     VALID_TYPES = ["broadband", "mobile", "iptv"]\n\n```'}]