[{'Text': 'Edited point-topic-mcp/src/point_topic_mcp/tools/gbs_tools.py:\n\n```diff\n@@ -82,31 +82,116 @@\n \n     def get_gbs_status(\n         country: str,\n-        operator: str,\n-        period: str,\n+        operator: str = "",\n+        period: str = "",\n         ctx=None,\n     ) -> str:\n         """\n-        Get GBS status for a country/operator/period: what exists, gaps, staleness.\n+        Get GBS status summary for a country or operator.\n+\n+        TWO MODES:\n+        1. Country overview (operator="") — aggregated summary of all operators in a\n+           country: how many have data, how many are missing data, top-level gaps.\n+        2. Operator detail (operator given) — deep dive into one operator\'s coverage,\n+           gaps by type/tech/channel/domain, and staleness vs current period.\n+\n+        Period auto-detects from GlobalVariables.currentStatsPeriod if omitted.\n \n         Args:\n             country: Country name (exact match, e.g. "United Kingdom" not "UK")\n-            operator: Operator name (exact match, case-sensitive)\n-            period: Quarter string (e.g. "2025Q1", "2024Q4")\n+            operator: Operator name (exact match, case-sensitive). Leave empty for\n+                      country-wide overview.\n+            period: Quarter string (e.g. "2025Q1", "2024Q4"). Auto-detects from\n+                    GlobalVariables if omitted.\n \n         Returns:\n-            Summary of existing statistics, missing combinations (gaps), and\n-            staleness vs current stats period.\n+            Summary of GBS data coverage showing what exists, what\'s missing,\n+            and overall completeness.\n         """\n+        # Resolve current period from GlobalVariables\n+        gv = mongo.find_global_variables_current()\n+        current_period = gv.get("currentStatsPeriod", "unknown") if gv else "unknown"\n+\n+        # Auto-detect period if not provided\n+        if not period:\n+            period = current_period\n+\n+        # ── MODE 1: Country-wide aggregated summary ──\n+        if not operator:\n+            if not country:\n+                return "Error: Provide at least \'country\' (or both \'country\' and \'operator\')."\n+\n+            ops = mongo.find_operators(country)\n+            if not ops:\n+                return f"No operators found for country \'{country}\'."\n+\n+            # Sort operators by name\n+            ops_sorted = sorted(ops, key=lambda o: o.get("name", "").lower())\n+\n+            # Build per-operator summary\n+            total_ops = len(ops_sorted)\n+            ops_with_data = 0\n+            ops_without_data = 0\n+            operator_summaries: list[str] = []\n+\n+            # Overall stats across all operators\n+            total_stats_count = 0\n+\n+            for op in ops_sorted:\n+                op_name = op.get("name", "?")\n+                op_id = mongo._oid_from_doc(op)\n+                techs = op.get("technologies", [])\n+\n+                existing = mongo.find_statistics(op_id, period)\n+                stat_count = len(existing)\n+                total_stats_count += stat_count\n+\n+                if stat_count > 0:\n+                    ops_with_data += 1\n+                    # Breakdown by type\n+                    by_type: dict[str, int] = {}\n+                    state_names = {1: "pending", 2: "approved", 3: "published"}\n+                    by_state: dict[int, int] = {}\n+                    for s in existing:\n+                        tp = s.get("type", "unknown")\n+                        by_type[tp] = by_type.get(tp, 0) + 1\n+                        st = s.get("state", 1)\n+                        by_state[st] = by_state.get(st, 0) + 1\n+                    type_breakdown = ", ".join(f"{k}: {v}" for k, v in sorted(by_type.items()))\n+                    state_breakdown = ", ".join(f"{state_names.get(k, k)}: {v}" for k, v in sorted(by_state.items()))\n+                    operator_summaries.append(\n+                        f"  ✓ {op_name} | techs: {len(techs)} | stats: {stat_count} "\n+                        f"| types: {type_breakdown}"\n+                    )\n+                else:\n+                    ops_without_data += 1\n+                    operator_summaries.append(\n+                        f"  ✗ {op_name} | techs: {len(techs)} | stats: 0 — NO DATA for {period}"\n+                    )\n+\n+            # Count how many operators have which types covered overall\n+            coverage_rate = round((ops_with_data / total_ops) * 100) if total_ops > 0 else 0\n+\n+            lines = [\n+                f"GBS Country Summary: {country}",\n+                f"Current period: {current_period}  (showing: {period})",\n+                f"Operators: {total_ops} total | {ops_with_data} with data | "\n+                f"{ops_without_data} without data | {total_stats_count} total records",\n+                f"Coverage: {coverage_rate}% of operators have data for {period}",\n+                "",\n+                "Per-operator breakdown:",\n+            ]\n+            lines.extend(operator_summaries)\n+\n+            return "\\n".join(lines)\n+\n+        # ── MODE 2: Single operator deep dive ──\n         op = mongo.find_one_operator(operator, country)\n         if not op:\n             return f"Operator not found: \'{operator}\' in \'{country}\'. Check name and country match exactly."\n \n         operator_id = mongo._oid_from_doc(op)\n         technologies = op.get("technologies", [])\n-\n-        gv = mongo.find_global_variables_current()\n-        current_period = gv.get("currentStatsPeriod", "unknown") if gv else "unknown"\n \n         existing = mongo.find_statistics(operator_id, period)\n \n@@ -147,13 +232,17 @@\n         else:\n             staleness = f"older than current ({current_period})"\n \n+        # Expected combinations per operator\n+        total_expected = len(VALID_TYPES) * len(technologies) * len(VALID_CHANNELS) * len(VALID_DOMAINS)\n+        coverage_pct = round(((total_expected - total_gaps) / total_expected) * 100) if total_expected > 0 else 0\n+\n         # Build output\n         lines = [\n             f"GBS status: {operator} ({country}) — {period}",\n             f"operator_id: {operator_id}",\n             f"technologies: {\', \'.join(technologies)}",\n             "",\n-            f"Existing: {len(existing)} records",\n+            f"Existing: {len(existing)} records  (of {total_expected} expected — {coverage_pct}% coverage)",\n         ]\n \n         if by_type:\n\n```'}]