{
  "automatic_evidence_credit": false,
  "captures": [],
  "change_log": [
    {
      "after_hash": "2ff72922211a8dab885a8133f26402103de93bc46276f102b6627ecc22b0f8f3",
      "before_hash": "2ff72922211a8dab885a8133f26402103de93bc46276f102b6627ecc22b0f8f3",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "6bdbcaa02c8d41488896092b5125065b328f323171c3b5c96afe568f45c6f483",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-17T13:59:51Z",
      "previous_entry_sha256": "3b4c2bafea202068ee93ec7dd0447b42d6fcbfb1a140958b7428e4c191e6e33a",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 33831,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "2ff72922211a8dab885a8133f26402103de93bc46276f102b6627ecc22b0f8f3",
      "before_hash": "5d42398b5349de6648a49efa0badd644589698099184a57f78ff01df60577538",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[canton_delegation]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[immigration_reasons]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[parliament_and_people]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[parliament_member]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[parliament_vote]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_commune].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 5
        },
        "taxonomy_version": "1.0.0",
        "total": 6,
        "truncated": false
      },
      "entry_sha256": "3b4c2bafea202068ee93ec7dd0447b42d6fcbfb1a140958b7428e4c191e6e33a",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-17T13:59:51Z",
      "previous_entry_sha256": "efeaf9a656a218e94b40a3e10788a5a6592bffca28bf7cb48b5299ef3e8003ea",
      "receipt_id": "6ac76b67-146a-55c3-9996-b9d29b7af3b8",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/6ac76b67-146a-55c3-9996-b9d29b7af3b8",
      "sequence": 33830,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "5d42398b5349de6648a49efa0badd644589698099184a57f78ff01df60577538",
      "before_hash": "7043c5fd8b79d3737ecc88d86e3f29e21122f7d602ab16930ee69feb8a355eeb",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "b3eacbf994afcff24b18e9e873706d3279d848ee16cf864e136ef02c326ecd25",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-15T10:10:37Z",
      "previous_entry_sha256": "ba88e1137ad78ed00edc490cc6b7d7e82be58cf4ec6fe25e7b86b7dcc6c84502",
      "receipt_id": "a6773163-bdde-557b-a51d-3a8e25a65a28",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/a6773163-bdde-557b-a51d-3a8e25a65a28",
      "sequence": 30956,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "7043c5fd8b79d3737ecc88d86e3f29e21122f7d602ab16930ee69feb8a355eeb",
      "before_hash": "7043c5fd8b79d3737ecc88d86e3f29e21122f7d602ab16930ee69feb8a355eeb",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "b96e4ae558468c36a8a9b11cb725e9db37772a050507e3ea4425d9f9eff73346",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-14T08:18:29Z",
      "previous_entry_sha256": "c7041b5a5b8f67650e6eee6cf5f1a490e71165b1b7fd2aec3de451ad08e55f13",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 29586,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "7043c5fd8b79d3737ecc88d86e3f29e21122f7d602ab16930ee69feb8a355eeb",
      "before_hash": "589794dedbdf1d72b221c3502fc9fbcd3751b223ee720d25f190e2941b05304f",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[mortgage_rates]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[sunday_shopping]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[dog_tax].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 2
        },
        "taxonomy_version": "1.0.0",
        "total": 3,
        "truncated": false
      },
      "entry_sha256": "c7041b5a5b8f67650e6eee6cf5f1a490e71165b1b7fd2aec3de451ad08e55f13",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-14T08:18:29Z",
      "previous_entry_sha256": "aff458bb74c3007f55459f15e487e34f2677812e216b8f5a0d23e0035f804639",
      "receipt_id": "1af25a5a-eef0-5ff3-a292-88bbe3b900d2",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/1af25a5a-eef0-5ff3-a292-88bbe3b900d2",
      "sequence": 29585,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "589794dedbdf1d72b221c3502fc9fbcd3751b223ee720d25f190e2941b05304f",
      "before_hash": "589794dedbdf1d72b221c3502fc9fbcd3751b223ee720d25f190e2941b05304f",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "fd6d8d2461e9183e278042047eb43e92c7cd63b73423b6ef18352bfccff9734a",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T06:23:57Z",
      "previous_entry_sha256": "439b943f81896e7f9c883fc80ec17b9610d5fa7d4b693966bba5f44bd3201d01",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 28321,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "589794dedbdf1d72b221c3502fc9fbcd3751b223ee720d25f190e2941b05304f",
      "before_hash": "e9367744b5a670cca698e198b9d117e626a362f583ec2ebbe9df65e5ff3f1066",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[dog_tax]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[federal_votes]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[how_many]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[waste_fees]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 5
        },
        "taxonomy_version": "1.0.0",
        "total": 5,
        "truncated": false
      },
      "entry_sha256": "439b943f81896e7f9c883fc80ec17b9610d5fa7d4b693966bba5f44bd3201d01",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-13T06:23:57Z",
      "previous_entry_sha256": "2171c8ab1e34162a49bd4e52f906558b8b0ce5d3f73f0e6dc75575c25396b4ba",
      "receipt_id": "195b9ddf-70bd-51e0-927e-7e2471aa5e33",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/195b9ddf-70bd-51e0-927e-7e2471aa5e33",
      "sequence": 28320,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "e9367744b5a670cca698e198b9d117e626a362f583ec2ebbe9df65e5ff3f1066",
      "before_hash": "e9367744b5a670cca698e198b9d117e626a362f583ec2ebbe9df65e5ff3f1066",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "c870e292f4119ea701f2d829eeddab678521520f84b3a85d80a2965b9085c570",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-12T04:27:50Z",
      "previous_entry_sha256": "fdb994f55b23fc1376e977ff2dc9099098aae2b012fa326d639d9108f94af96c",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 25892,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "e9367744b5a670cca698e198b9d117e626a362f583ec2ebbe9df65e5ff3f1066",
      "before_hash": "bfb446420cb7bdc4713804feb6a6dd1bf61d2e6d8f80e55fd8945592559337ed",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[data_freshness]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[fire_danger]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[imputed_rental_value]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[water_temperature]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 4
        },
        "taxonomy_version": "1.0.0",
        "total": 4,
        "truncated": false
      },
      "entry_sha256": "fdb994f55b23fc1376e977ff2dc9099098aae2b012fa326d639d9108f94af96c",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-12T04:27:50Z",
      "previous_entry_sha256": "df9a2028c64df4ca91fdcd64c1a0489883f769665c05fef8b81f808a7d56438c",
      "receipt_id": "a9fe67e3-2af7-5cee-bd67-d9231428f0fa",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/a9fe67e3-2af7-5cee-bd67-d9231428f0fa",
      "sequence": 25891,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "bfb446420cb7bdc4713804feb6a6dd1bf61d2e6d8f80e55fd8945592559337ed",
      "before_hash": "bfb446420cb7bdc4713804feb6a6dd1bf61d2e6d8f80e55fd8945592559337ed",
      "diff": {
        "changes": [
          {
            "compatibility_class": "INFO",
            "fact": "Declared provider, version, model, operator or AI self-disclosure changed",
            "kind": "DECLARED_INGREDIENTS_CHANGED",
            "path": "$.declared_ingredients_changed",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 0
        },
        "taxonomy_version": null,
        "total": 1,
        "truncated": false
      },
      "entry_sha256": "465064356bd94bfd93dc22693b0dd10fb6957c7b9448c1c3797612eeb1b40b86",
      "evidence_class": "FACT_CHANGE",
      "labels": [
        "DECLARED_INGREDIENTS_CHANGED"
      ],
      "observed_at_utc": "2026-10-11T02:29:17Z",
      "previous_entry_sha256": "8cc0f4ecade7f4983f286c1d336cca50a31f7fcde38c6bbbffff2d4586a46179",
      "receipt_id": null,
      "receipt_url": null,
      "sequence": 23792,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "bfb446420cb7bdc4713804feb6a6dd1bf61d2e6d8f80e55fd8945592559337ed",
      "before_hash": "ace01bf97e384a7dfc89bd90aab00a0f45dffe6fa1619c757056e3efdd5ce212",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[pollen]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[school_holidays]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[tax_deadlines]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_canton].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_commune].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_switzerland].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[rent_index].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 4,
          "NON_BREAKING": 4
        },
        "taxonomy_version": "1.0.0",
        "total": 8,
        "truncated": false
      },
      "entry_sha256": "8cc0f4ecade7f4983f286c1d336cca50a31f7fcde38c6bbbffff2d4586a46179",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-11T02:29:17Z",
      "previous_entry_sha256": "6f411ac6cbd24af6c33be505bd6d884f6bcddf5d860300e5311e9fb374b1b94d",
      "receipt_id": "129b44b9-a643-5201-b2d6-c34faedfc206",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/129b44b9-a643-5201-b2d6-c34faedfc206",
      "sequence": 23791,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "ace01bf97e384a7dfc89bd90aab00a0f45dffe6fa1619c757056e3efdd5ce212",
      "before_hash": "730141eda3e2cbb829778e112087f335a95427d4877b2f4b62adc23e4d694f20",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[ahv_pension]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[births_deaths]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_switzerland]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[rent_index]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_canton].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 4
        },
        "taxonomy_version": "1.0.0",
        "total": 5,
        "truncated": false
      },
      "entry_sha256": "2808e4f8fd5f1e6ab899d464110979224ea04ed78921d3fe9789c5ed24712e45",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-10T00:34:35Z",
      "previous_entry_sha256": "0197c9cf0272c24c55bb21ef981e9dc98281c4bc9b078052c7c826f650309f70",
      "receipt_id": "dfcfae5a-3b71-5d90-a8d5-c4c8eed08288",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/dfcfae5a-3b71-5d90-a8d5-c4c8eed08288",
      "sequence": 21365,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "730141eda3e2cbb829778e112087f335a95427d4877b2f4b62adc23e4d694f20",
      "before_hash": "983ae2f54bf23ffe8700c2541e9cbb0f04d908787c07e2e83a97f712aec1c3df",
      "diff": {
        "changes": [
          {
            "compatibility_class": "BREAKING",
            "fact": "tool removed",
            "kind": "TOOL_REMOVED",
            "path": "tools[book_consultation]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[asylum_statistics]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[capital_withdrawal_tax]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[family_reunification]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[naturalisation_canton_rules]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[public_holidays]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[which_permit]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[work_permit_quotas]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[get_commune].description",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "tool description changed",
            "kind": "TOOL_DESCRIPTION_CHANGED",
            "path": "tools[leaving_switzerland].description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 1,
          "INFO": 2,
          "NON_BREAKING": 7
        },
        "taxonomy_version": "1.0.0",
        "total": 10,
        "truncated": false
      },
      "entry_sha256": "cdf391829ae4b4e765ad33a3e230ee2cacefed8e1b1a574e8547774037e6dbbc",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-08T22:42:24Z",
      "previous_entry_sha256": "913619c593bef060abcd635372e71d45e555164becae7c753a6a0743b9019186",
      "receipt_id": "36c54d8f-2d6e-5ae7-8176-501d6f6c26b3",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/36c54d8f-2d6e-5ae7-8176-501d6f6c26b3",
      "sequence": 20551,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "983ae2f54bf23ffe8700c2541e9cbb0f04d908787c07e2e83a97f712aec1c3df",
      "before_hash": "19bd31917126eeff5df2685e24dbcce34dccb045ab57e73346cd879b3df472a9",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "version minor",
            "kind": "VERSION_MINOR",
            "path": "version",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "INFO",
            "fact": "description changed",
            "kind": "DESCRIPTION_CHANGED",
            "path": "description",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 1,
          "NON_BREAKING": 1
        },
        "taxonomy_version": "1.0.0",
        "total": 2,
        "truncated": false
      },
      "entry_sha256": "91ba3ee8f86fc7e22e17764058462f9247d7d51d5fbf0ed89be8d25ff5a35ccb",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED"
      ],
      "observed_at_utc": "2026-10-07T20:40:57Z",
      "previous_entry_sha256": "e4604588ea66cdbdd5088af55b305fa3e9c882b10357f795b510c0f678b7b93f",
      "receipt_id": "29357e6f-4102-57ff-a235-cf4b1e64961e",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/29357e6f-4102-57ff-a235-cf4b1e64961e",
      "sequence": 19329,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "19bd31917126eeff5df2685e24dbcce34dccb045ab57e73346cd879b3df472a9",
      "before_hash": "56139d2f4b1ff92aedb842dfcd5e113e6e09102519a0d52dec248f77243bcae8",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[leaving_switzerland]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[naturalisation_timing]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[pension_figures]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[permit_types]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[pillar3a_tax]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 5
        },
        "taxonomy_version": "1.0.0",
        "total": 5,
        "truncated": false
      },
      "entry_sha256": "0a9bf31659311a9c887c062f42e81ab1dbfef6f9caf7a229999de80a0bbc4789",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-06T18:49:00Z",
      "previous_entry_sha256": "372970092c93879530944a655accd437fe9ee6b2b962b6c7108508077fba3769",
      "receipt_id": "6bcd02c0-fda3-5557-a151-43325d526e38",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/6bcd02c0-fda3-5557-a151-43325d526e38",
      "sequence": 18657,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "56139d2f4b1ff92aedb842dfcd5e113e6e09102519a0d52dec248f77243bcae8",
      "before_hash": "e7aee05b33f0df247fdee33f10c7ed505d8d6ae82c041910901072fdb9dcc180",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[cheapest_health_insurer]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[health_deductible_advice]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[health_premium_increase]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[plan_move]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[switch_health_insurer]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[tax_by_commune]",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 6
        },
        "taxonomy_version": "1.0.0",
        "total": 6,
        "truncated": false
      },
      "entry_sha256": "19229e71bcaaf7bd1bffb2196c5272de8e32ee6720c615fe73414953649e322f",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-05T16:59:20Z",
      "previous_entry_sha256": "a8c08ec9fb2c92009cb40221d0c5e84d346623e6185ef6e351c0737a489391e4",
      "receipt_id": "31793fe5-f387-55d8-a1d2-5057e05d9425",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/31793fe5-f387-55d8-a1d2-5057e05d9425",
      "sequence": 17358,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    },
    {
      "after_hash": "e7aee05b33f0df247fdee33f10c7ed505d8d6ae82c041910901072fdb9dcc180",
      "before_hash": "a2e7c78e51370468cce36692dbe1f8f5670cc0da03e0642a075ab4201ed35250",
      "diff": {
        "changes": [
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[commute_cost]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[compare_health_insurers]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[ev_charging_near]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[fuel_prices_near]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_commune]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_dataset]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_electricity_price]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_family_tax_deductions]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_housing_costs]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_minimum_wage]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_payroll_rates]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_premium_subsidy]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_reference_rate]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[get_salary]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[household_budget]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[list_datasets]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "tool added",
            "kind": "TOOL_ADDED",
            "path": "tools[salary_by_occupation]",
            "security_relevant_field": false
          },
          {
            "compatibility_class": "NON_BREAKING",
            "fact": "capability changed",
            "kind": "CAPABILITY_CHANGED",
            "path": "capabilities",
            "security_relevant_field": false
          }
        ],
        "classified": true,
        "counts_by_class": {
          "BREAKING": 0,
          "INFO": 0,
          "NON_BREAKING": 18
        },
        "taxonomy_version": "1.0.0",
        "total": 18,
        "truncated": false
      },
      "entry_sha256": "53de85c88139696a718b0b89b86f97db8b394bf907783f4a6e828d8dfba673ee",
      "evidence_class": "MANIFEST_CHANGE",
      "labels": [
        "MANIFEST_CHANGED",
        "TOOL_LIST_OR_TOOL_TEXT_CHANGED"
      ],
      "observed_at_utc": "2026-10-03T13:08:59Z",
      "previous_entry_sha256": "4a7b272c2e734a1765d0a275f13b11f601953126af69d9b389c303dd88253981",
      "receipt_id": "0c26d3ef-63eb-5bd6-a2ca-f3884b867f37",
      "receipt_url": "https://www.gaipagents.com/v1/free/receipts/0c26d3ef-63eb-5bd6-a2ca-f3884b867f37",
      "sequence": 8532,
      "target_id": "obs_0837ca9c6f6227ef1b6f1110",
      "target_kind": "MCP_REMOTE",
      "target_locator": "https://swisslivingindex.ch/mcp"
    }
  ],
  "check_outcomes": {
    "ask": {
      "changed_since": "https://www.gaipagents.com/v1/free/observatory/changed-since?url=<endpoint>",
      "changes_and_reachability": "https://www.gaipagents.com/v1/free/changes/subscribe?url=<endpoint>",
      "conformance": "https://www.gaipagents.com/v1/free/conformance/check?url=<endpoint>"
    },
    "published": false,
    "why": "Outcomes of GAIP's own checks (whether the endpoint answered, HTTP status, response time, conformance findings) are given only to a caller who asks about the URL, never on a public page, list or feed. The same applies to every target."
  },
  "conformance": {
    "findings": "GIVEN_TO_CALLER_ONLY",
    "meaning": "The rule catalogue this manifest was read against at the observed time. The finding codes go only to a caller who checks the URL (check_outcomes.ask.conformance).",
    "observed_at_utc": "2026-10-17T13:59:51Z",
    "protocol": "MCP",
    "rule_catalogue_route": "/v1/free/knowledge/conformance-rules",
    "rule_catalogue_version": "1.0.0"
  },
  "corrections": {
    "contact": "https://www.gaipagents.com/contact",
    "exclusion": "https://www.gaipagents.com/v1/free/observatory/corrections/exclusion",
    "opt_out": "POST kind OPT_OUT to the route; the target is withdrawn from public view at once (a pause). The site's owner makes it permanent at https://www.gaipagents.com/v1/free/observatory/corrections/exclusion.",
    "queued_for_review": 0,
    "route": "https://www.gaipagents.com/v1/free/observatory/corrections"
  },
  "declared_derivations": {
    "data_appetite": {
      "categories": {
        "precise_location": {
          "fields": 4,
          "tools": 2
        }
      },
      "fields_read": 186,
      "observed_at_utc": "2026-10-17T13:59:51Z",
      "tools_read": 67
    },
    "dependency_domains": [],
    "last_observed_at_utc": "2026-10-17T13:59:51Z",
    "meaning": "Derived by GAIP from what this agent declared, at the stated time: the categories of data its tools' input fields ask for (counts, by keyword rules gaip.data-appetite-rules.v1), the outside domains its declarations point to, and the operator as the agent itself publishes it. Facts about declarations, not an assessment of the agent or its operator.",
    "operator": {
      "as_published": "ch.swisslivingindex",
      "source_kind": "registry_namespace_domain"
    },
    "rules_version": "gaip.data-appetite-rules.v1",
    "schema_version": "gaip.declared-derivations.v1"
  },
  "latest": {
    "baseline_at_utc": "2026-09-29T12:32:58Z",
    "manifest_sha256": "2ff72922211a8dab885a8133f26402103de93bc46276f102b6627ecc22b0f8f3",
    "observed_at_utc": "2026-10-17T13:59:51Z"
  },
  "metadata_signals": {
    "meaning": "Pattern rules are published only as aggregate rates across all observed targets (see the summary), never per party. GAIP issues no overall verdict and does not rank parties.",
    "overall_verdict": null,
    "per_target_results": null,
    "published": "AGGREGATE_ONLY_IN_SUMMARY",
    "rules": [
      {
        "rationale": "Zero-width, bidirectional-control and Unicode tag characters are not visible to a human reader but are read by language models. GAIP reports whether any occur; many have ordinary uses.",
        "rule_id": "OBS-SIG-001",
        "title": "Invisible or bidirectional-control Unicode characters in names or descriptions"
      },
      {
        "rationale": "Tool and skill descriptions are read by models. GAIP reports whether a description contains phrases shaped like instructions to a model (the patterns in GAIP's public conformance rule catalogue, plus the phrases listed in the Observatory method). Such phrases can be benign.",
        "rule_id": "OBS-SIG-002",
        "title": "Instruction-like text in descriptions"
      },
      {
        "rationale": "When a description refers to a tool name that only a different observed server publishes, a model using both servers may connect the two. GAIP reports whether such a reference occurs; shared names are common and often coincidental.",
        "rule_id": "OBS-SIG-003",
        "title": "Description names a tool published by a different observed server"
      },
      {
        "rationale": "Declared OAuth scopes whose names contain wildcard or whole-account wording (*, all, admin, root, full) request wide access by name. GAIP reports whether such a scope name is declared; it does not know what the scope grants.",
        "rule_id": "OBS-SIG-004",
        "title": "Declared authorization scopes with broad-access wording"
      }
    ],
    "third_party_scanners": [
      {
        "name": "Snyk agent-scan (formerly Invariant Labs mcp-scan)",
        "status": "NOT_RUN",
        "url": "https://github.com/snyk/agent-scan"
      },
      {
        "name": "Cisco AI Defense MCP Scanner",
        "status": "NOT_RUN",
        "url": "https://github.com/cisco-ai-defense/mcp-scanner"
      }
    ]
  },
  "method": "https://www.gaipagents.com/observatory",
  "notice": "Facts observed by GAIP at the stated time (UTC); they may be out of date. This is not an assessment of safety, quality, security, legality or trustworthiness of any party, and not a recommendation. To request a correction, add a right of reply or opt out, POST to https://www.gaipagents.com/v1/free/observatory/corrections or use https://www.gaipagents.com/contact.",
  "price_gbp": 0,
  "schema_version": "gaip.observatory.v1.target",
  "silent_changes_last_30_days": {
    "days": 30,
    "entries_read_at_most": 200,
    "kinds": [],
    "line": null,
    "meaning": "Weeks (ISO) in which GAIP recorded a change to the agent's declared tools or interface (tools added or removed, descriptions re-worded, input or output schema, behaviour labels, sign-in, terms or prices, endpoint host) and no declared version (registry or card version, serverInfo.version) moved that week. A week whose version movement is not recorded is not counted. Dated facts from the public change log; not an assessment of the agent.",
    "weeks": [],
    "weeks_with_silent_changes": 0
  },
  "snapshot": {
    "capabilities": [
      "resources",
      "tools"
    ],
    "description": "Official Swiss data for all 26 cantons and 2,100 communes: tax, rent, health premiums, fuel, jobs.",
    "name": "ch.swisslivingindex/swiss-living-index",
    "parts": [
      "registry_server_json",
      "mcp_initialize_tools_list"
    ],
    "protocol": "MCP",
    "protocolVersion": "2024-11-05",
    "public_copy": "Text excerpts of at most 300 characters; input schemas and security schemes as SHA-256 and size only.",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://swisslivingindex.ch/mcp"
      }
    ],
    "scopes": [],
    "serverInfo": {
      "name": "swiss-living-index",
      "version": "1.44.0"
    },
    "title": null,
    "tools": [
      {
        "annotations": {},
        "description": "Swiss AHV/AVS old-age pension (1st pillar): the 13th AHV pension (first paid December 2026, one twelfth of the year's old-age pensions, automatic, old-age pensions only, not counted for supplementary benefits), minimum and maximum pension and couples cap for 2026 and 2027, reference age and AHV 21 t",
        "inputSchema": {
          "bytes": 341,
          "published": "HASH_ONLY",
          "sha256": "cd9a50a5f1be01fa0c5692215ac0837e8ef7d071dd88dc7d794ca88a6a426cdb"
        },
        "name": "ahv_pension",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official Swiss asylum statistics of the State Secretariat for Migration (SEM, monthly, archived month by month): new asylum applications, completed cases, asylum grants, rejections, Dublin decisions, recognition and protection rates, applications and grants of protection status S, departures and rem",
        "inputSchema": {
          "bytes": 147,
          "published": "HASH_ONLY",
          "sha256": "ee30b0d7cbc8fc2971c38b2ceeeb8297191453c91b210a41a0d65997fbe6c06a"
        },
        "name": "asylum_statistics",
        "title": null
      },
      {
        "annotations": {},
        "description": "Births and deaths in Switzerland or one canton (geo = CH or a 2-letter canton code): yearly births and deaths since 1969, the last 36 months, deaths per week for the last 104 weeks with the BFS expected value and 99% band (mortality monitoring; latest weeks provisional), the month with most deaths o",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "a1a2ead239ce7bc135c22f6aefab958c81f36c0c414e1fd48ff2d56322931bf7"
        },
        "name": "births_deaths",
        "title": null
      },
      {
        "annotations": {},
        "description": "The members a Swiss canton sends to the Federal Parliament (its National Council seats and its one or two Council of States members), each with party, parliamentary group, seat number, year of birth and profile links; plus the delegation's count by group and by gender. Official source: Parliamentary",
        "inputSchema": {
          "bytes": 119,
          "published": "HASH_ONLY",
          "sha256": "65cc106ab086c2aeaec0a211bb6b6f6061de7d2bd7fe3d9e44c254c6cf3c98b5"
        },
        "name": "canton_delegation",
        "title": null
      },
      {
        "annotations": {},
        "description": "Tax on a lump-sum withdrawal from the pension fund (2nd pillar) or pillar 3a in every Swiss commune, from the official ESTV tax calculator: CHF 100,000, 250,000, 500,000 or 1,000,000, single or married, payment at 65, federal + cantonal + communal tax without church tax. Give a commune (name, postco",
        "inputSchema": {
          "bytes": 294,
          "published": "HASH_ONLY",
          "sha256": "b3f8767cc5e1b2069452bd2af48856605634adcb3360d5bad2710e1a7f8c8045"
        },
        "name": "capital_withdrawal_tax",
        "title": null
      },
      {
        "annotations": {},
        "description": "The cheapest basic health insurer (FOPH-approved premiums, next year) in every Swiss premium region, or for one canton, region (e.g. ZH-1) or commune: cheapest standard premium (adult 26+, free choice of doctor, CHF 300 deductible, with accident cover) and the lowest possible premium (any model, hig",
        "inputSchema": {
          "bytes": 274,
          "published": "HASH_ONLY",
          "sha256": "9202c3800260e771f7aeb0d43587eb7b39d82a03e2c77dc0fe890f97d7a60c2b"
        },
        "name": "cheapest_health_insurer",
        "title": null
      },
      {
        "annotations": {},
        "description": "Live income+wealth tax for a specific commune & household (official ESTV, year 2026). commune = name or postcode; income in CHF; married bool; children count; wealth in CHF.",
        "inputSchema": {
          "bytes": 204,
          "published": "HASH_ONLY",
          "sha256": "e67597b6b3e706f932209e8df0831e31b79ea15661b253ca4c82103b6824751b"
        },
        "name": "commune_tax",
        "title": null
      },
      {
        "annotations": {},
        "description": "Monthly commute cost between two Swiss places: by car at the official Swiss average fuel price (BFS) and by electric car at the home commune official electricity tariff (ElCom H4), plus the public-transport journey time (Swiss timetable). Distance defaults to straight line \u00d7 1.3 between the stations",
        "inputSchema": {
          "bytes": 450,
          "published": "HASH_ONLY",
          "sha256": "8a82c331c1ac573863aa985e7a217aa23008600e7832615285e3238d5c372802"
        },
        "name": "commute_cost",
        "title": null
      },
      {
        "annotations": {},
        "description": "Compare 2\u20134 cantons across all metrics. cantons = array of abbreviations.",
        "inputSchema": {
          "bytes": 108,
          "published": "HASH_ONLY",
          "sha256": "7844786cba191110131016575cd127f085e2019e2231dec697449dafc2abe170"
        },
        "name": "compare_cantons",
        "title": null
      },
      {
        "annotations": {},
        "description": "Every approved basic health-insurance premium (FOPH) for a commune or premium region: cheapest offers for an adult (26+), young adult (19\u201325) or child, by deductible, insurance model (standard, family doctor/HMO, telemedicine, other) and accident cover, with the insurer and product. year 2027 (next ",
        "inputSchema": {
          "bytes": 558,
          "published": "HASH_ONLY",
          "sha256": "e54d134a8fcc0b3113415536cecea80916c1a455791f3b10cbc3b63f199db784"
        },
        "name": "compare_health_insurers",
        "title": null
      },
      {
        "annotations": {},
        "description": "How current the Swiss Living Index data is: every scheduled official data source with where it runs (cloud, a Mac on the Swiss network, or the A5000 language-model machine), its cadence in days, the last successful check, the next due date and a status (current, due, overdue = more than twice its ca",
        "inputSchema": {
          "bytes": 132,
          "published": "HASH_ONLY",
          "sha256": "a508ddd6f8073f262b36f4a168a4960e31c795ad3e2ecf6705e0770da4e977a3"
        },
        "name": "data_freshness",
        "title": null
      },
      {
        "annotations": {},
        "description": "Yearly dog tax per Swiss commune from official sources where a canton has a uniform rate or publishes every commune: Vaud (cantonal CHF 100 plus each commune's tax), Lucerne and Aargau (CHF 120 everywhere), Basel-Stadt (CHF 160 / 150 / 120, each further dog double), Basel-Landschaft (each commune), ",
        "inputSchema": {
          "bytes": 113,
          "published": "HASH_ONLY",
          "sha256": "91799320d0beed46bece0df114c2dba1c6ed44fdd1ed070a64eef00b1c4e59d3"
        },
        "name": "dog_tax",
        "title": null
      },
      {
        "annotations": {},
        "description": "Estimate the net yearly CHF impact of moving between two Swiss communes for a household: live commune-level tax (official ESTV 2026) plus canton-average rent and health-premium differences. Positive savings = the move saves money. The flagship relocation calculation as a tool.",
        "inputSchema": {
          "bytes": 443,
          "published": "HASH_ONLY",
          "sha256": "1dba93d9a7b84861b15abbee43afd98a16622a8cd39a426949d17e517febd505"
        },
        "name": "estimate_net_move",
        "title": null
      },
      {
        "annotations": {},
        "description": "Live availability of public EV charging points in Switzerland (official SFOE feed, minutes old): national and per-canton availability and fast chargers; with place (postcode or locality) or lat/lon also the nearest points within km with their live status. No prices (no official register exists).",
        "inputSchema": {
          "bytes": 171,
          "published": "HASH_ONLY",
          "sha256": "78890a240c6d470abc886bf5c2f83cc18e9c64027668d55273ced53c1f39c5ef"
        },
        "name": "ev_charging_near",
        "title": null
      },
      {
        "annotations": {},
        "description": "Family reunification in Switzerland (AIG Art. 42 to 47, VZAE 73 to 73b): who can bring a spouse and children under 18, entitlement (Swiss citizens, C permit) or discretion (B, L), the conditions (living together, housing, no social assistance, language), the 5-year deadline (12 months for children o",
        "inputSchema": {
          "bytes": 133,
          "published": "HASH_ONLY",
          "sha256": "8f1d8a5f8bc54952815300a2ca3ef34c39cef8e790c0516813e9ea9d358e958a"
        },
        "name": "family_reunification",
        "title": null
      },
      {
        "annotations": {},
        "description": "Results of every Swiss federal vote since 1981 (FSO open data; official titles in DE FR IT RM EN): without arguments the list of vote days with every proposal and its national result (yes %, turnout, cantons for and against, accepted); with date (YYYY-MM-DD) that day with the result of every canton;",
        "inputSchema": {
          "bytes": 259,
          "published": "HASH_ONLY",
          "sha256": "851fa5e91570a5f59d35ecf6ae7e6eee81390ca2f07618f68f2f4ef17ed5e25b"
        },
        "name": "federal_votes",
        "title": null
      },
      {
        "annotations": {},
        "description": "Forest fire danger and fire bans in Switzerland from FOEN open data (waldbrandgefahr.ch; credit \u00abSource: FOEN\u00bb): for each of the 143 warning regions the danger level 1\u20135 and the canton's prevention measure 1\u20135 (no measures, warning, conditional ban, ban in and near the forest, absolute ban outdoors)",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "fire_danger",
        "title": null
      },
      {
        "annotations": {},
        "description": "Is the drive across the border worth it? Official station prices in France, Austria and Italy (live / daily official sources) near a Swiss place, ranked by net saving vs the official Swiss average price (BFS) after the fuel used for the round trip. place = postcode or locality (or lat/lon). Location",
        "inputSchema": {
          "bytes": 379,
          "published": "HASH_ONLY",
          "sha256": "87fafd5777daa2a38800801640896ecc09acfcd31b25de80e94e63b9a301ff49"
        },
        "name": "fuel_prices_near",
        "title": null
      },
      {
        "annotations": {},
        "description": "Get all metric values for one canton. canton = 2-letter abbreviation (e.g. ZH, GE, TI). rank 1 = lowest value for cost metrics (dir 'low', e.g. taxes/rent) and highest value for capacity/benefit metrics (dir 'high', e.g. sunshine/jobs). Ranks describe order under the stated scenario, not universal s",
        "inputSchema": {
          "bytes": 81,
          "published": "HASH_ONLY",
          "sha256": "6675e7a30177e14d67880d82b5421e68a0b8f74306f77ff2232249b02389b6fd"
        },
        "name": "get_canton",
        "title": null
      },
      {
        "annotations": {},
        "description": "Fact sheet for one Swiss commune (by name, BFS number or postcode); for communes with a one-pager also the president, council, administration contacts, departments, upcoming meetings, news, tenders and projects read from the commune website (with source and date): population, foreign residents, migr",
        "inputSchema": {
          "bytes": 83,
          "published": "HASH_ONLY",
          "sha256": "56ea93e5b512acd2d3150cfa86ec228b76d8baafae7a56e3d732fe5171536d0d"
        },
        "name": "get_commune",
        "title": null
      },
      {
        "annotations": {},
        "description": "Read one Swiss Living Index dataset (id from list_datasets), exactly as published on the site (official values, unchanged). Filter with canton (2-letter) and/or commune (name or BFS number), section (a top-level key), from_year / to_year. Large datasets return a size summary first so you can narrow ",
        "inputSchema": {
          "bytes": 302,
          "published": "HASH_ONLY",
          "sha256": "f75751dd673fdeb7cc74bde990b7095dc4a921dd8bd7eeeb67b10c29185d7064"
        },
        "name": "get_dataset",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official electricity tariff (ElCom) for a Swiss commune and its grid operator(s): total, energy, grid use, commune charges and federal levy in Rappen per kWh, for 2025\u20132027, and the yearly bill for a consumption profile (ElCom categories H1\u2013H8, default H4 = 5-room flat, 4500 kWh) or your own kWh.",
        "inputSchema": {
          "bytes": 268,
          "published": "HASH_ONLY",
          "sha256": "4a3d881b0094d4a004f576ebfada8d655528e392117369815ab823c071b4b54e"
        },
        "name": "get_electricity_price",
        "title": null
      },
      {
        "annotations": {},
        "description": "Swiss income-tax deductions for families (ESTV tax folder): maximum childcare (third-party care) deduction per child and the child deduction (Kinderabzug) rule for a canton, plus the federal values. canton = 2-letter abbreviation; omit for federal only.",
        "inputSchema": {
          "bytes": 59,
          "published": "HASH_ONLY",
          "sha256": "6d6a06462312988a0b0b7513b82a1052cd03d621f377c267b6b405a8fe6b0aba"
        },
        "name": "get_family_tax_deductions",
        "title": null
      },
      {
        "annotations": {},
        "description": "Average monthly housing costs per household in Switzerland (BFS household budget survey HABE): net rent or mortgage interest, ancillary costs (Nebenkosten: flat-rate charges, water, waste water, waste, upkeep), energy (electricity, gas/fuels, heating), with BFS quality grades. Latest year for Switze",
        "inputSchema": {
          "bytes": 59,
          "published": "HASH_ONLY",
          "sha256": "6d6a06462312988a0b0b7513b82a1052cd03d621f377c267b6b405a8fe6b0aba"
        },
        "name": "get_housing_costs",
        "title": null
      },
      {
        "annotations": {},
        "description": "Statutory cantonal minimum wages in Switzerland (official cantonal pages): hourly amount, valid from, history and the monthly equivalent at 40 hours. Only five cantons have one (BS, GE, JU, NE, TI); without canton the list of all five is returned. Elsewhere minimums apply only through collective or ",
        "inputSchema": {
          "bytes": 59,
          "published": "HASH_ONLY",
          "sha256": "6d6a06462312988a0b0b7513b82a1052cd03d621f377c267b6b405a8fe6b0aba"
        },
        "name": "get_minimum_wage",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official Swiss social-security payroll deductions for the current year (AHV/IV/EO, unemployment insurance ALV with ceiling, occupational pension BVG coordinated salary and age credits), as used for a gross-to-net salary estimate.",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "get_payroll_rates",
        "title": null
      },
      {
        "annotations": {},
        "description": "Health-insurance premium subsidies (Pr\u00e4mienverbilligung / r\u00e9duction des primes) per canton (FOPH KVSTAT): share of insured receiving a subsidy, average CHF per beneficiary and per household, subsidy as % of the mean premium, federal vs cantonal funding, plus the responsible cantonal office (name, ad",
        "inputSchema": {
          "bytes": 81,
          "published": "HASH_ONLY",
          "sha256": "6675e7a30177e14d67880d82b5421e68a0b8f74306f77ff2232249b02389b6fd"
        },
        "name": "get_premium_subsidy",
        "title": null
      },
      {
        "annotations": {},
        "description": "Swiss mortgage reference interest rate for rents (BWO/FOH): current rate, valid since, next publication dates, every change since 2008, and the rule for rent adjustments (VMWG Art. 13). Optional lease_rate (the rate in the lease) returns the quarter-point steps since then. Also returns the latest BF",
        "inputSchema": {
          "bytes": 125,
          "published": "HASH_ONLY",
          "sha256": "24eac743a6b8d030ae63680bd20b27a09651cb29e361cd8aa140323dd6394392"
        },
        "name": "get_reference_rate",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official gross monthly salaries in Switzerland (BFS Swiss Earnings Structure Survey LSE): median and P10/P25/P75/P90 for all employees, women and men, by major region and economic sector. canton (2-letter) is mapped to its BFS major region, because the FSO publishes salaries by major region only; se",
        "inputSchema": {
          "bytes": 200,
          "published": "HASH_ONLY",
          "sha256": "9b9fc2b62aaa3c8c755b4d37b763e43f9fc1aee09bf34988d55d2b278d00a42c"
        },
        "name": "get_salary",
        "title": null
      },
      {
        "annotations": {},
        "description": "The country level of the hierarchy Switzerland \u2192 26 cantons \u2192 communes: population and foreign share (BFS STATPOP), naturalisations per year 2011 onwards with ordinary vs facilitated and the most common former nationalities (official BFS country names in DE FR IT EN), every canton with population, f",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "get_switzerland",
        "title": null
      },
      {
        "annotations": {},
        "description": "Historical year-series for a metric in one canton (e.g. sunshine back to 1884, migration to 1981, rent to 2010). metric = key from list_metrics with history: rent_mean, net_migration_per_1000, foreigner_pct, sunshine_hours, balance_per_capita, beds_per_1000, jobs, unemployment_pct (SECO yearly avera",
        "inputSchema": {
          "bytes": 147,
          "published": "HASH_ONLY",
          "sha256": "2ed1197d3f8f23185d032c8a7440c8131d4e8f8653d49f050af2c83e37d3d83e"
        },
        "name": "get_trend",
        "title": null
      },
      {
        "annotations": {},
        "description": "Which health insurance deductible (franchise) pays off: for a commune or premium region, age group, model and expected yearly health costs, the yearly premiums plus cost sharing (deductible + 10 % up to CHF 700, children CHF 350, KVG) for every deductible, the cheapest choice and the break-even betw",
        "inputSchema": {
          "bytes": 665,
          "published": "HASH_ONLY",
          "sha256": "465d06077ac4a5b854ec1d087055603e5f1530fb61c5a9fd5b9a5e0b1db14567"
        },
        "name": "health_deductible_advice",
        "title": null
      },
      {
        "annotations": {},
        "description": "How much Swiss health insurance premiums rise next year: the FOPH official mean premium (all models and deductibles, as people chose them) for Switzerland and per canton, for adults, young adults (19\u201325) and children, previous year vs next year in CHF and %; plus the median change of each insurer's ",
        "inputSchema": {
          "bytes": 136,
          "published": "HASH_ONLY",
          "sha256": "fdbe5774d6fe57c55384e40f78a120ab6828f6df9648d727fdd5663d88a55fd3"
        },
        "name": "health_premium_increase",
        "title": null
      },
      {
        "annotations": {},
        "description": "What Swiss households spend per month (BFS household budget survey, official): income, social insurance, taxes, health premiums, food, restaurants, housing and energy, transport, leisure and more, for all households, singles, couples without children, families and retired couples.",
        "inputSchema": {
          "bytes": 156,
          "published": "HASH_ONLY",
          "sha256": "cfa94f8d7aad5d450f52c595215c895ab794626e0f560c4840f1d8578193f23a"
        },
        "name": "household_budget",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official answers to \u00abHow many \u2026 are there in Switzerland?\u00bb (the questions that reach Google Switzerland's top 10 every year): cantons, communes and districts (BFS commune register, per canton), permanent residents and foreign nationals (BFS STATPOP), Swiss abroad, cows, dairy cows and cattle (BFS fa",
        "inputSchema": {
          "bytes": 210,
          "published": "HASH_ONLY",
          "sha256": "5d87b2a6fef87b761df705677237f3dd58fb66fa90f4c6ccb513e91c4ca1615a"
        },
        "name": "how_many",
        "title": null
      },
      {
        "annotations": {},
        "description": "Why foreign nationals move to Switzerland: immigration into the permanent foreign resident population (permits B, C and L of 12 months or more) by reason (employment within / outside quotas, family reunification, education and training, residence without employment, recognised refugees, hardship cas",
        "inputSchema": {
          "bytes": 443,
          "published": "HASH_ONLY",
          "sha256": "c316277e438bbcf6e32535564aede8c0dc643310264c1acaf84d22a41558014e"
        },
        "name": "immigration_reasons",
        "title": null
      },
      {
        "annotations": {},
        "description": "Abolition of the imputed rental value (Eigenmietwert, valeur locative) on owner-occupied homes in Switzerland: in force 1 January 2029 (Federal Council decision of 1 April 2026); timeline from the 2017 parliamentary initiative to entry into force, the changes for owners as the federal administration",
        "inputSchema": {
          "bytes": 188,
          "published": "HASH_ONLY",
          "sha256": "39b2a37053f993fe9059f030afc3e4e9297a09550a18183315534459dc438350"
        },
        "name": "imputed_rental_value",
        "title": null
      },
      {
        "annotations": {},
        "description": "Leaving Switzerland: the official steps with their law articles: deregister with the commune at the latest 14 days before departure (VZAE 15), what happens to an L, B or C permit (AIG 61), keeping a C permit for up to 4 years on request (VZAE 79), residence for naturalisation counted as given up (B\u00fc",
        "inputSchema": {
          "bytes": 148,
          "published": "HASH_ONLY",
          "sha256": "314b36c5ed67a9a44d6a34aa349d958d727e2f2d447214b5954ba82ca24ab9b8"
        },
        "name": "leaving_switzerland",
        "title": null
      },
      {
        "annotations": {},
        "description": "Catalogue of EVERY dataset published by the Swiss Living Index (about 125: migration, births and first names, crime, public finances, cross-border commuters, vehicles, broadband, sustainability, naturalisations, permits, health care, housing, income, education and more), each with source, geography ",
        "inputSchema": {
          "bytes": 277,
          "published": "HASH_ONLY",
          "sha256": "5e8fe6c901ad64a8cf41141737ab5bd2d196b1df03e210cce613cdcdb0803fdf"
        },
        "name": "list_datasets",
        "title": null
      },
      {
        "annotations": {},
        "description": "List available metrics for the 26 Swiss cantons (key, label, unit, source, what higher/lower means).",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "list_metrics",
        "title": null
      },
      {
        "annotations": {},
        "description": "Swiss National Bank policy rate (current, since when, every change since June 2019), SARON, and the average interest rates Swiss banks publish for new mortgages at month end (SNB data portal): variable, fixed 2 / 5 / 10 years, SARON 3 years, with 0.25 quantile, median and 0.75 quantile across banks,",
        "inputSchema": {
          "bytes": 125,
          "published": "HASH_ONLY",
          "sha256": "fbc20bf0f13c7eaddf049fe688cd61592bdb044a1766614aa9fce98adca3f960"
        },
        "name": "mortgage_rates",
        "title": null
      },
      {
        "annotations": {},
        "description": "Cantonal conditions for ordinary Swiss naturalisation in each of the 26 cantons, on top of the federal rules (C permit, 10 years): minimum residence in the canton and the commune (2 to 5 years), language level spoken / written (federal minimum B1 / A2; 8 cantons require more), knowledge test (canton",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "naturalisation_canton_rules",
        "title": null
      },
      {
        "annotations": {},
        "description": "Checks the federal residence conditions for ordinary Swiss naturalisation (B\u00fcG Art. 9, 33) or facilitated naturalisation of a Swiss citizen's spouse (B\u00fcG Art. 21) from the years someone has lived in Switzerland: years between ages 8 and 18 count double (at least 6 actual years), temporary admission ",
        "inputSchema": {
          "bytes": 627,
          "published": "HASH_ONLY",
          "sha256": "7c9401209c085bca5fc8147fd227f84415c85573faad62ef4b5a556c628da051"
        },
        "name": "naturalisation_timing",
        "title": null
      },
      {
        "annotations": {},
        "description": "Parliament next to the people: for every National Council final vote of the current legislature whose bill later went to a popular vote, the chamber's result (yes, no, abstain, by group) next to the national popular result (yes %, accepted). Matched only on the exact title (the initiative title in \u00ab",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "parliament_and_people",
        "title": null
      },
      {
        "annotations": {},
        "description": "Members of the Swiss Federal Parliament (National Council 200, Council of States 46) from the Parliamentary Services' open data web service ws.parlament.ch, refreshed daily: council, canton, party, parliamentary group and function, seat number, career in both chambers since joining, year and place o",
        "inputSchema": {
          "bytes": 536,
          "published": "HASH_ONLY",
          "sha256": "271482fa5bee707dc5e7888b087af55a0e3539f67083b343de8af2b1e0fd7608"
        },
        "name": "parliament_member",
        "title": null
      },
      {
        "annotations": {},
        "description": "Votes of the Swiss National Council in the current legislature (Parliamentary Services, ws.parlament.ch; daily): every electronic vote with business number and title, bill, subject, what yes and no meant, time, totals (yes, no, abstain, excused, did not vote, presiding) and totals per parliamentary ",
        "inputSchema": {
          "bytes": 415,
          "published": "HASH_ONLY",
          "sha256": "1d216985c5ce5f71044474fdf50dc572cd8d3d76e64861a8d656a2361ef259a4"
        },
        "name": "parliament_vote",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official Swiss retirement-provision figures for the current year and, once decided, the next year: pillar 3a maximum deduction (with / without pension fund), AHV/IV old-age pension minimum and maximum per month and the married couple cap, BVG entry threshold and coordination deduction, minimum AHV c",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "pension_figures",
        "title": null
      },
      {
        "annotations": {},
        "description": "Swiss residence permits L, B, C, Ci, G, F, N, S (incl. the asylum statuses): what each permit is, the official rules (validity, renewal, C permit after 10 or 5 years, language levels, EU/EFTA 5-year list, moving within Switzerland) each with its law article (AIG, VZAE, B\u00fcG) or SEM page, and the numb",
        "inputSchema": {
          "bytes": 178,
          "published": "HASH_ONLY",
          "sha256": "2b7d7013f303a12ff8d6e658e16b70977350c6d8edd675f6261c8dc50db98c91"
        },
        "name": "permit_types",
        "title": null
      },
      {
        "annotations": {},
        "description": "Pillar 3a in a specific Swiss commune, from the official ESTV tax calculator: how much income tax a 3a payment saves (federal, cantonal and communal, without church tax) and how much tax a later capital withdrawal costs in the same commune. Defaults: the maximum 3a payment for the profile, no withdr",
        "inputSchema": {
          "bytes": 601,
          "published": "HASH_ONLY",
          "sha256": "0ad486747c5b37ef8f001c19588cf248a2b5eb56b5789065cd10666a8ddf4c84"
        },
        "name": "pillar3a_tax",
        "title": null
      },
      {
        "annotations": {},
        "description": "Workflow for \"I am moving from A to B in Switzerland: what changes for me?\" in one call. Combines: income tax at both places (live ESTV, if income given), the health premium region and cheapest insurer at both places (FOPH), the electricity bill at both places (ElCom), the commute to work from both ",
        "inputSchema": {
          "bytes": 629,
          "published": "HASH_ONLY",
          "sha256": "7ae2b6e0707063d00f19acf896856407c48e932f03ca79cbfd2aa843503f5bb9"
        },
        "name": "plan_move",
        "title": null
      },
      {
        "annotations": {},
        "description": "Pollen in Switzerland from the MeteoSwiss pollen network (open data, CC BY 4.0; credit \u00abSource: MeteoSwiss\u00bb): daily mean concentration (grains per m\u00b3, 6 to 6 UTC) of hazel, alder, birch, ash, beech, oak and grasses at the 15 stations for the last 14 days, and a pollen calendar derived from the last ",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "pollen",
        "title": null
      },
      {
        "annotations": {},
        "description": "Public holidays per Swiss canton (official SECO list of cantonal holidays equated with Sundays, Art. 20a ArG; 1 August federal): for a canton and year the dates with weekday, which fall on working days and the bridge days (Monday before a Tuesday holiday, Friday after a Thursday holiday). Cantons th",
        "inputSchema": {
          "bytes": 170,
          "published": "HASH_ONLY",
          "sha256": "e78540cd466ed54ded12ba5496c92572fe4ceed39ce1f3daec1ffb4573610a5f"
        },
        "name": "public_holidays",
        "title": null
      },
      {
        "annotations": {},
        "description": "Rank all cantons by a metric. metric = a key from list_metrics; order = \"high\" or \"low\" (default high).",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "3151d2623d80e7940f6ef11f09494622159f1d8170209e06c99302aff34dd6c0"
        },
        "name": "rank_by_metric",
        "title": null
      },
      {
        "annotations": {},
        "description": "Personal canton recommendation (\"Where should I live in Switzerland?\"): weight 5 categories 0\u20133 (cost = rent/premiums/electricity; tax = income tax/fiscal balance; work = jobs/unemployment/migration; env = sunshine/crime/vacancy; health = hospital capacity) and get all 26 cantons scored by the trans",
        "inputSchema": {
          "bytes": 474,
          "published": "HASH_ONLY",
          "sha256": "420a50f188c032eeb86b1c0494544ec4b562d7f689e272312183e555a9762d01"
        },
        "name": "recommend_canton",
        "title": null
      },
      {
        "annotations": {},
        "description": "Rent index per Swiss canton: BFS average rent of occupied rented flats (structural survey, existing rents, not asking rents) by canton and number of rooms with the 95% confidence interval, 2010 onwards, plus a size-standardised rent (DERIVED by Swiss Living Index: each canton weighted with one fixed",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "rent_index",
        "title": null
      },
      {
        "annotations": {},
        "description": "Official gross monthly salaries by occupation group (ISCO-08) and age band (up to 29, 30\u201349, 50+), median and P10\u2013P90, for all, women and men, by major region (BFS LSE). occupation = ISCO code or words (e.g. \"nurse\", \"engineer\", \"teacher\", \"IT\"); canton maps to its major region.",
        "inputSchema": {
          "bytes": 221,
          "published": "HASH_ONLY",
          "sha256": "1f441cfbde8840d174dafb74d07abb65a9cc3738c08894c208712612051a7264"
        },
        "name": "salary_by_occupation",
        "title": null
      },
      {
        "annotations": {},
        "description": "School holidays of the compulsory schools (Volksschule) in the 26 Swiss cantons for the current and next school year, read from each canton's own sources (not the EDK list): autumn, Christmas, sports/carnival, spring/Easter as first and last weekday off, summer start, who sets the dates (whole canto",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "school_holidays",
        "title": null
      },
      {
        "annotations": {},
        "description": "Find Swiss communes by name or postcode (official ESTV location register). Returns commune name, canton and postcode \u2014 use before commune_tax or estimate_net_move when the spelling is uncertain.",
        "inputSchema": {
          "bytes": 79,
          "published": "HASH_ONLY",
          "sha256": "1dc63095e8672403bbe40fa26719d175e695c0167f6daad6b9655f6506491f01"
        },
        "name": "search_commune",
        "title": null
      },
      {
        "annotations": {},
        "description": "Sunday shopping and shop opening hours in the 26 Swiss cantons from the official law texts (re-checked weekly): how many Sundays all shops may open per year (federal Labour Act: at most four without a permit, each canton decides), who decides (canton or commune), weekday and Saturday closing times, ",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "sunday_shopping",
        "title": null
      },
      {
        "annotations": {},
        "description": "How to switch basic health insurance in Switzerland: the deadline for next year (receipt by 30 November, the Friday before on a weekend) with the days left, the five steps, when a switch is blocked (debts reminded by 30 November and unpaid by 31 December), the 30 June option (standard model with ord",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "switch_health_insurer",
        "title": null
      },
      {
        "annotations": {},
        "description": "Income tax on a CHF 100,000 gross salary in every Swiss commune (federal + cantonal + communal, no church tax, no wealth), from the official ESTV/FTA tax calculator, for two households: single (35) and married couple with two children (one earner). Give a commune (name or BFS number) for its tax and",
        "inputSchema": {
          "bytes": 231,
          "published": "HASH_ONLY",
          "sha256": "7d1bf6f02532daf8f2813cb935213e5e9bc16e57cb4287bdc94c1a0d6835f0cb"
        },
        "name": "tax_by_commune",
        "title": null
      },
      {
        "annotations": {},
        "description": "Tax return filing rules for natural persons in the 26 Swiss cantons, read from each cantonal tax administration: ordinary filing deadline (or that the date printed on the return applies), deadline for the self-employed, free extension until, latest extension, extension fee, the online extension link",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "tax_deadlines",
        "title": null
      },
      {
        "annotations": {},
        "description": "The next Swiss federal vote dates and (once announced) the subjects on the ballot, in DE/FR/IT/EN (official Federal Chancellery / VoteInfo data).",
        "inputSchema": {
          "bytes": 33,
          "published": "HASH_ONLY",
          "sha256": "efddc7bd8bbcef73a14eb1ace1ffdaec81e518ef1e13c1e9271d0b8acb694a49"
        },
        "name": "upcoming_votes",
        "title": null
      },
      {
        "annotations": {},
        "description": "Waste fees of Swiss communes from official open data, where the canton publishes every commune: canton of Zurich (all communes, since 2000: yearly basic fee converted to a 4-room flat and price per 35-litre bag) and Basel-Landschaft (bag price, basic fee per household, dog tax). CHF incl. VAT. With ",
        "inputSchema": {
          "bytes": 113,
          "published": "HASH_ONLY",
          "sha256": "91799320d0beed46bece0df114c2dba1c6ed44fdd1ed070a64eef00b1c4e59d3"
        },
        "name": "waste_fees",
        "title": null
      },
      {
        "annotations": {},
        "description": "Water temperature in Switzerland: every FOEN river station measuring water temperature (raw data, latest reading, and where FOEN publishes it usual_c = median for this calendar day over the station's measuring years with usual_p25_c/usual_p75_c; credit \u00abSurface waters data: Hydrology Division, FOEN\u00bb",
        "inputSchema": {
          "bytes": 107,
          "published": "HASH_ONLY",
          "sha256": "504c614c05ac3e5a373788834ec02b9dae8344c9f7ce22088f48ae248c64dd0f"
        },
        "name": "water_temperature",
        "title": null
      },
      {
        "annotations": {},
        "description": "Which Swiss permit fits a person (the Swiss Living Index permit route finder as a tool): from nationality and plan (visit, work, commute from abroad, join family, study, retire, live without working, or already living here on a B permit) returns the permit (L, B, C, G or none), whether it is an enti",
        "inputSchema": {
          "bytes": 1123,
          "published": "HASH_ONLY",
          "sha256": "4ccee0a48647b8df0396f335bd749c1d2a081669ead01a34d4141c8fb202b24f"
        },
        "name": "which_permit",
        "title": null
      },
      {
        "annotations": {},
        "description": "Swiss work permit quotas for people from outside the EU/EFTA, set every year by the Federal Council (VZAE annexes 1 and 2): B and L permits per canton plus the federal reserve, and the separate quotas for EU/EFTA service providers over 90 days, UK nationals without acquired rights and US interns, wi",
        "inputSchema": {
          "bytes": 163,
          "published": "HASH_ONLY",
          "sha256": "a0bf4b908c2598ecc9188e466286452eedc92f55b613ba4b96c81cb1ef7a473c"
        },
        "name": "work_permit_quotas",
        "title": null
      }
    ],
    "version": "1.40.0"
  },
  "status_history": [
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "2ff72922211a8dab885a8133f26402103de93bc46276f102b6627ecc22b0f8f3",
      "observed_at_utc": "2026-10-17T13:59:51Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5d42398b5349de6648a49efa0badd644589698099184a57f78ff01df60577538",
      "observed_at_utc": "2026-10-16T12:04:10Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "5d42398b5349de6648a49efa0badd644589698099184a57f78ff01df60577538",
      "observed_at_utc": "2026-10-15T10:10:37Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "7043c5fd8b79d3737ecc88d86e3f29e21122f7d602ab16930ee69feb8a355eeb",
      "observed_at_utc": "2026-10-14T08:18:29Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "589794dedbdf1d72b221c3502fc9fbcd3751b223ee720d25f190e2941b05304f",
      "observed_at_utc": "2026-10-13T06:23:57Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "e9367744b5a670cca698e198b9d117e626a362f583ec2ebbe9df65e5ff3f1066",
      "observed_at_utc": "2026-10-12T04:27:50Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "bfb446420cb7bdc4713804feb6a6dd1bf61d2e6d8f80e55fd8945592559337ed",
      "observed_at_utc": "2026-10-11T02:29:17Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "ace01bf97e384a7dfc89bd90aab00a0f45dffe6fa1619c757056e3efdd5ce212",
      "observed_at_utc": "2026-10-10T00:34:35Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "730141eda3e2cbb829778e112087f335a95427d4877b2f4b62adc23e4d694f20",
      "observed_at_utc": "2026-10-08T22:42:24Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "983ae2f54bf23ffe8700c2541e9cbb0f04d908787c07e2e83a97f712aec1c3df",
      "observed_at_utc": "2026-10-07T20:40:57Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "19bd31917126eeff5df2685e24dbcce34dccb045ab57e73346cd879b3df472a9",
      "observed_at_utc": "2026-10-06T18:49:00Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "56139d2f4b1ff92aedb842dfcd5e113e6e09102519a0d52dec248f77243bcae8",
      "observed_at_utc": "2026-10-05T16:59:20Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "e7aee05b33f0df247fdee33f10c7ed505d8d6ae82c041910901072fdb9dcc180",
      "observed_at_utc": "2026-10-04T15:00:10Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "e7aee05b33f0df247fdee33f10c7ed505d8d6ae82c041910901072fdb9dcc180",
      "observed_at_utc": "2026-10-03T13:08:59Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "a2e7c78e51370468cce36692dbe1f8f5670cc0da03e0642a075ab4201ed35250",
      "observed_at_utc": "2026-10-02T11:10:05Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": false,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "a2e7c78e51370468cce36692dbe1f8f5670cc0da03e0642a075ab4201ed35250",
      "observed_at_utc": "2026-09-30T21:51:52Z",
      "protocol_version": "2024-11-05"
    },
    {
      "manifest_partial": null,
      "manifest_parts": [
        "registry_server_json",
        "mcp_initialize_tools_list"
      ],
      "manifest_sha256": "a2e7c78e51370468cce36692dbe1f8f5670cc0da03e0642a075ab4201ed35250",
      "observed_at_utc": "2026-09-29T12:32:58Z",
      "protocol_version": "2024-11-05"
    }
  ],
  "target": {
    "corrections_route": "https://www.gaipagents.com/v1/free/observatory/corrections",
    "first_seen_at_utc": "2026-09-29T07:08:54Z",
    "kind": "MCP_REMOTE",
    "last_observed_at_utc": "2026-10-17T13:59:51Z",
    "locator": "https://swisslivingindex.ch/mcp",
    "name": "ch.swisslivingindex/swiss-living-index",
    "source": "official-mcp-registry",
    "target_id": "obs_0837ca9c6f6227ef1b6f1110"
  }
}