Skip to main content
Glama

Read your game state

get_snapshot
Read-onlyIdempotent

Read this session's current, cached Snapshot (docs/protocol.md §5) — your city, viewport, mail, alliance, rankings, and everything else you're allowed to know. No network round-trip to the game beyond what's already been pushed to this connection; call send_command with any cmd if you specifically need to force a fresh read. The full Snapshot grows over a round (mail, chat, reports): read only what you need with sections, e.g. ["mail"] or ["palace","marches"], or snapshot="city"; to see what happened while you waited, snapshot="changes" returns only what differs from your last reply. Every key is described in docs/protocol.md §5 (the agentickingdoms://docs/protocol resource).

Input Schema

NameRequiredDescriptionDefault
sectionsNooptional list of the Snapshot's top-level keys to return (the properties of snapshot in this tool's outputSchema, e.g. mail, palace, chat, alliance), overriding snapshot; now is always included
snapshotNohow much of the Snapshot to return: full (default) the whole Snapshot; changes only what changed since this connection's last reply, in the changes field; city only now, config_hash, map_size, player, city, marches, rallies and notices; none only connected and events

Output Schema

NameRequiredDescriptionDefault
eventsNo
changesNoWhat changed in your Snapshot since the last tool result on this connection that carried snapshot data (snapshot="changes", send_command's default): the same keys as the Snapshot, only the ones that differ. city, player and viewport hold only their changed fields. A list of things with an id (mail, marches, quests, city.queues...) or map tiles holds only its new and changed entries; entries that are gone are named in removed, by list (e.g. {"marches":["m1"],"viewport.tiles":["12,40"]}). A key that is gone altogether is null. Nothing listed means nothing changed. For the whole Snapshot call get_snapshot.
snapshotNoThe Snapshot (docs/protocol.md §5), cut down as the snapshot/sections arguments asked. Every key is described in docs/protocol.md §5 (the agentickingdoms://docs/protocol resource).
connectedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • removedOutput schema / $defs
      Removed value: -{
      -  "BattleMods": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "atk_mult": {
      -        "type": "number"
      -      },
      -      "attack": {
      -        "type": "integer"
      -      },
      -      "boost_pct": {
      -        "type": "number"
      -      },
      -      "embassy_pct": {
      -        "type": "number"
      -      },
      -      "endurance_pct": {
      -        "type": "number"
      -      },
      -      "event_pct": {
      -        "type": "number"
      -      },
      -      "health": {
      -        "type": "integer"
      -      },
      -      "health_mult": {
      -        "type": "number"
      -      },
      -      "hero": {
      -        "type": "boolean"
      -      },
      -      "hero_atk_pct": {
      -        "type": "number"
      -      },
      -      "hero_def_pct": {
      -        "type": "number"
      -      },
      -      "hero_hp_pct": {
      -        "type": "number"
      -      },
      -      "player_id": {
      -        "type": "string"
      -      },
      -      "power": {
      -        "type": "integer"
      -      },
      -      "title_atk_pct": {
      -        "type": "number"
      -      },
      -      "title_def_pct": {
      -        "type": "number"
      -      },
      -      "title_hp_pct": {
      -        "type": "number"
      -      },
      -      "title_id": {
      -        "type": "string"
      -      },
      -      "titles": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "atk_share_pct": {
      -              "type": "number"
      -            },
      -            "health_share_pct": {
      -              "type": "number"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "title_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "title_id",
      -            "atk_share_pct",
      -            "health_share_pct"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "trap_atk_share_pct": {
      -        "type": "number"
      -      },
      -      "trap_counter_pct": {
      -        "type": "number"
      -      },
      -      "trap_mult": {
      -        "type": "number"
      -      },
      -      "trap_vs": {
      -        "type": "string"
      -      },
      -      "vip_pct": {
      -        "type": "number"
      -      },
      -      "wall_level": {
      -        "type": "integer"
      -      },
      -      "wall_troops": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "atk_mult",
      -      "health_mult",
      -      "attack",
      -      "health",
      -      "power"
      -    ],
      -    "type": "object"
      -  },
      -  "BlackMarketSlot": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "bought": {
      -        "type": "boolean"
      -      },
      -      "item_id": {
      -        "type": "string"
      -      },
      -      "token_cost": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "item_id",
      -      "token_cost",
      -      "bought"
      -    ],
      -    "type": "object"
      -  },
      -  "LeagueStanding": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "ends_at": {
      -        "type": "integer"
      -      },
      -      "gained": {
      -        "type": "integer"
      -      },
      -      "league_index": {
      -        "type": "integer"
      -      },
      -      "member_count": {
      -        "type": "integer"
      -      },
      -      "min_size": {
      -        "type": "integer"
      -      },
      -      "rank": {
      -        "type": "integer"
      -      },
      -      "rank_change": {
      -        "type": "integer"
      -      },
      -      "tier": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tier",
      -      "league_index",
      -      "rank",
      -      "member_count",
      -      "ends_at",
      -      "gained"
      -    ],
      -    "type": "object"
      -  },
      -  "March": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "arrive_at": {
      -        "type": "integer"
      -      },
      -      "ends_at": {
      -        "type": "integer"
      -      },
      -      "from_x": {
      -        "type": "integer"
      -      },
      -      "from_y": {
      -        "type": "integer"
      -      },
      -      "gather_loot": {
      -        "anyOf": [
      -          {
      -            "type": "null"
      -          },
      -          {
      -            "$ref": "#/$defs/Resources"
      -          }
      -        ]
      -      },
      -      "gather_until": {
      -        "type": "integer"
      -      },
      -      "hero": {
      -        "type": "boolean"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "type": "string"
      -      },
      -      "loot": {
      -        "anyOf": [
      -          {
      -            "type": "null"
      -          },
      -          {
      -            "$ref": "#/$defs/Resources"
      -          }
      -        ]
      -      },
      -      "owner_alliance_tag": {
      -        "type": "string"
      -      },
      -      "owner_id": {
      -        "type": "string"
      -      },
      -      "owner_name": {
      -        "type": "string"
      -      },
      -      "rally_id": {
      -        "type": "string"
      -      },
      -      "return_at": {
      -        "type": "integer"
      -      },
      -      "slot_free_at": {
      -        "type": "integer"
      -      },
      -      "start_at": {
      -        "type": "integer"
      -      },
      -      "state": {
      -        "type": "string"
      -      },
      -      "target_x": {
      -        "type": "integer"
      -      },
      -      "target_y": {
      -        "type": "integer"
      -      },
      -      "to_x": {
      -        "type": "integer"
      -      },
      -      "to_y": {
      -        "type": "integer"
      -      },
      -      "troop_count": {
      -        "type": [
      -          "null",
      -          "integer"
      -        ]
      -      },
      -      "troops": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "troops_by_role": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "troops_hidden": {
      -        "type": "boolean"
      -      },
      -      "wounded": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "x": {
      -        "type": "integer"
      -      },
      -      "y": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "owner_id",
      -      "kind",
      -      "state",
      -      "from_x",
      -      "from_y",
      -      "to_x",
      -      "to_y",
      -      "target_x",
      -      "target_y"
      -    ],
      -    "type": "object"
      -  },
      -  "NextCost": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "blocked": {
      -        "type": "string"
      -      },
      -      "blueprint_count": {
      -        "type": "integer"
      -      },
      -      "blueprint_item": {
      -        "type": "string"
      -      },
      -      "effects": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "key": {
      -              "type": "string"
      -            },
      -            "next": {
      -              "type": "integer"
      -            },
      -            "now": {
      -              "type": "integer"
      -            },
      -            "resource": {
      -              "type": "string"
      -            },
      -            "scale": {
      -              "type": "integer"
      -            },
      -            "unit": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "key",
      -            "now",
      -            "next"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "food": {
      -        "type": "integer"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "locked": {
      -        "type": "boolean"
      -      },
      -      "need_th": {
      -        "type": "integer"
      -      },
      -      "ore": {
      -        "type": "integer"
      -      },
      -      "requires": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "have": {
      -              "type": "integer"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "level",
      -            "have"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "seconds": {
      -        "type": "integer"
      -      },
      -      "silver": {
      -        "type": "integer"
      -      },
      -      "slot": {
      -        "type": "integer"
      -      },
      -      "stone": {
      -        "type": "integer"
      -      },
      -      "unlocks": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "need_th": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "kind",
      -            "id"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "wood": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "slot",
      -      "food",
      -      "wood",
      -      "stone",
      -      "ore",
      -      "silver",
      -      "seconds"
      -    ],
      -    "type": "object"
      -  },
      -  "ReportArmy": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "alliance_tag": {
      -        "type": "string"
      -      },
      -      "killed": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "loot": {
      -        "anyOf": [
      -          {
      -            "type": "null"
      -          },
      -          {
      -            "$ref": "#/$defs/Resources"
      -          }
      -        ]
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "player_id": {
      -        "type": "string"
      -      },
      -      "remaining": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "sent": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "wounded": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "player_id"
      -    ],
      -    "type": "object"
      -  },
      -  "Resources": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "food": {
      -        "type": "integer"
      -      },
      -      "ore": {
      -        "type": "integer"
      -      },
      -      "silver": {
      -        "type": "integer"
      -      },
      -      "stone": {
      -        "type": "integer"
      -      },
      -      "wood": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "food",
      -      "wood",
      -      "stone",
      -      "ore",
      -      "silver"
      -    ],
      -    "type": "object"
      -  },
      -  "SideRow": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "held_ms": {
      -        "type": "integer"
      -      },
      -      "might": {
      -        "type": "integer"
      -      },
      -      "players": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "players",
      -      "might",
      -      "held_ms"
      -    ],
      -    "type": "object"
      -  },
      -  "WarMachineSnap": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "level": {
      -        "type": "integer"
      -      },
      -      "next_cost": {
      -        "type": "integer"
      -      },
      -      "skill_points": {
      -        "type": "integer"
      -      },
      -      "skills": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "xp": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "level",
      -      "xp",
      -      "next_cost",
      -      "skill_points"
      -    ],
      -    "type": "object"
      -  }
      -}
    • removedOutput schema / properties / snapshot / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / snapshot / description
      Previous value: -"The Snapshot (docs/protocol.md §5)."New value: +"The Snapshot (docs/protocol.md §5), cut down as the snapshot/sections arguments asked. Every key is described in docs/protocol.md §5 (the agentickingdoms://docs/protocol resource)."
    • removedOutput schema / properties / snapshot / properties
      Removed value: -{
      -  "active_events": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "effect": {
      -          "additionalProperties": {
      -            "type": "number"
      -          },
      -          "type": "object"
      -        },
      -        "ends_at": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "windows": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "duration_minutes": {
      -                "type": "integer"
      -              },
      -              "start_hour": {
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "start_hour",
      -              "duration_minutes"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "name",
      -        "ends_at"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "ai_player_ids": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "alliance": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "active_research_id": {
      -        "type": "string"
      -      },
      -      "announcement": {
      -        "type": "string"
      -      },
      -      "announcement_at": {
      -        "type": "integer"
      -      },
      -      "announcement_by": {
      -        "type": "string"
      -      },
      -      "applications": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "applied_at": {
      -              "type": "integer"
      -            },
      -            "might": {
      -              "type": "integer"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "player_name": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "player_name",
      -            "might",
      -            "applied_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "auto_accept_might": {
      -        "type": "integer"
      -      },
      -      "battlemarks": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "created_at": {
      -              "type": "integer"
      -            },
      -            "expires_at": {
      -              "type": "integer"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "marked_by": {
      -              "type": "string"
      -            },
      -            "marked_by_name": {
      -              "type": "string"
      -            },
      -            "note": {
      -              "type": "string"
      -            },
      -            "x": {
      -              "type": "integer"
      -            },
      -            "y": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "x",
      -            "y",
      -            "marked_by",
      -            "created_at",
      -            "expires_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "can_edit_profile": {
      -        "type": "boolean"
      -      },
      -      "can_rename": {
      -        "type": "boolean"
      -      },
      -      "contributions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "silver": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "silver"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "description": {
      -        "type": "string"
      -      },
      -      "description_at": {
      -        "type": "integer"
      -      },
      -      "description_by": {
      -        "type": "string"
      -      },
      -      "donation_tax_pct": {
      -        "type": "number"
      -      },
      -      "gift_level": {
      -        "type": "integer"
      -      },
      -      "help_requests": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "expires_at": {
      -              "type": "integer"
      -            },
      -            "finish_at": {
      -              "type": "integer"
      -            },
      -            "finished": {
      -              "type": "boolean"
      -            },
      -            "helpable": {
      -              "type": "boolean"
      -            },
      -            "helpers": {
      -              "type": "integer"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "type": "integer"
      -            },
      -            "own": {
      -              "type": "boolean"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "player_name": {
      -              "type": "string"
      -            },
      -            "queue_id": {
      -              "type": "string"
      -            },
      -            "viewer_helped": {
      -              "type": "boolean"
      -            },
      -            "what": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "player_name",
      -            "queue_id",
      -            "finish_at",
      -            "helpable"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "helpable": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "asked": {
      -              "type": "boolean"
      -            },
      -            "finish_at": {
      -              "type": "integer"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "type": "integer"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "player_name": {
      -              "type": "string"
      -            },
      -            "queue_id": {
      -              "type": "string"
      -            },
      -            "what": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "player_name",
      -            "queue_id",
      -            "finish_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "leader_id": {
      -        "type": "string"
      -      },
      -      "log": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "at_ms": {
      -              "type": "integer"
      -            },
      -            "by_id": {
      -              "type": "string"
      -            },
      -            "by_name": {
      -              "type": "string"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "params": {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "at_ms",
      -            "kind"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "loyalty_rates": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "camp_amount": {
      -            "type": "integer"
      -          },
      -          "camp_chance_pct": {
      -            "type": "number"
      -          },
      -          "camp_daily_cap": {
      -            "type": "integer"
      -          },
      -          "camp_loyalty_left": {
      -            "type": "integer"
      -          },
      -          "donation_daily_cap": {
      -            "type": "integer"
      -          },
      -          "donation_loyalty_left": {
      -            "type": "integer"
      -          },
      -          "help_daily_cap": {
      -            "type": "integer"
      -          },
      -          "help_seconds": {
      -            "type": "integer"
      -          },
      -          "helps_paid_left": {
      -            "type": "integer"
      -          },
      -          "per_100_silver": {
      -            "type": "number"
      -          },
      -          "per_help": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "per_100_silver",
      -          "per_help",
      -          "help_daily_cap",
      -          "helps_paid_left",
      -          "help_seconds",
      -          "camp_chance_pct",
      -          "camp_amount",
      -          "donation_loyalty_left",
      -          "camp_loyalty_left"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "member_cap": {
      -        "type": "integer"
      -      },
      -      "member_count": {
      -        "type": "integer"
      -      },
      -      "member_invite_enabled": {
      -        "type": "boolean"
      -      },
      -      "members": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "ai": {
      -              "type": "boolean"
      -            },
      -            "avatar": {
      -              "type": "integer"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "last_seen_at": {
      -              "type": "integer"
      -            },
      -            "might": {
      -              "type": "integer"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "online": {
      -              "type": "boolean"
      -            },
      -            "role": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "name",
      -            "kind",
      -            "role",
      -            "might"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "power": {
      -        "type": "integer"
      -      },
      -      "purchase_gift_diamonds": {
      -        "type": "integer"
      -      },
      -      "purchase_gift_loyalty": {
      -        "type": "integer"
      -      },
      -      "rank": {
      -        "type": "integer"
      -      },
      -      "rank_total": {
      -        "type": "integer"
      -      },
      -      "reinforce_requests": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "arrive_at": {
      -              "type": "integer"
      -            },
      -            "attacker": {
      -              "type": "string"
      -            },
      -            "helpers": {
      -              "type": "integer"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "player_name": {
      -              "type": "string"
      -            },
      -            "room": {
      -              "type": "integer"
      -            },
      -            "viewer_helped": {
      -              "type": "boolean"
      -            },
      -            "viewer_sending": {
      -              "type": "boolean"
      -            },
      -            "x": {
      -              "type": "integer"
      -            },
      -            "y": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "player_name",
      -            "attacker",
      -            "x",
      -            "y",
      -            "arrive_at",
      -            "room"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "rename_ready_at": {
      -        "type": "integer"
      -      },
      -      "research": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "research_progress": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "sent_invites": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "at": {
      -              "type": "integer"
      -            },
      -            "by_id": {
      -              "type": "string"
      -            },
      -            "by_name": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "name",
      -            "at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "tag": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "name",
      -      "tag",
      -      "leader_id",
      -      "members",
      -      "power",
      -      "member_cap",
      -      "member_count",
      -      "gift_level",
      -      "donation_tax_pct"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "alliance_directory": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "admits_now": {
      -          "type": "boolean"
      -        },
      -        "applied": {
      -          "type": "boolean"
      -        },
      -        "auto_accept_might": {
      -          "type": "integer"
      -        },
      -        "description": {
      -          "type": "string"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "leaders_seen_at": {
      -          "type": "integer"
      -        },
      -        "member_cap": {
      -          "type": "integer"
      -        },
      -        "member_count": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "power": {
      -          "type": "integer"
      -        },
      -        "rank": {
      -          "type": "integer"
      -        },
      -        "tag": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "name",
      -        "tag",
      -        "power",
      -        "member_count",
      -        "member_cap"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "alliance_league": {
      -    "anyOf": [
      -      {
      -        "type": "null"
      -      },
      -      {
      -        "$ref": "#/$defs/LeagueStanding"
      -      }
      -    ]
      -  },
      -  "alliance_rankings": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "id": {
      -          "type": "string"
      -        },
      -        "member_count": {
      -          "type": "integer"
      -        },
      -        "might": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "rank": {
      -          "type": "integer"
      -        },
      -        "tag": {
      -          "type": "string"
      -        },
      -        "you": {
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "name",
      -        "tag",
      -        "might",
      -        "rank",
      -        "member_count"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "bookmarks": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "created_at": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "label": {
      -          "type": "string"
      -        },
      -        "title": {
      -          "type": "string"
      -        },
      -        "x": {
      -          "type": "integer"
      -        },
      -        "y": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "x",
      -        "y",
      -        "title",
      -        "label",
      -        "created_at"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "chat": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_tag": {
      -          "type": "string"
      -        },
      -        "at": {
      -          "type": "integer"
      -        },
      -        "avatar": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "params": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "room": {
      -          "type": "string"
      -        },
      -        "sender": {
      -          "type": "string"
      -        },
      -        "sticker_emoji": {
      -          "type": "string"
      -        },
      -        "sticker_id": {
      -          "type": "string"
      -        },
      -        "system": {
      -          "type": "boolean"
      -        },
      -        "text": {
      -          "type": "string"
      -        },
      -        "text_key": {
      -          "type": "string"
      -        },
      -        "title_id": {
      -          "type": "string"
      -        },
      -        "vip": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "room",
      -        "sender",
      -        "text",
      -        "at"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "city": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "anti_scout_until": {
      -        "type": "integer"
      -      },
      -      "buildings": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "damaged": {
      -              "type": "boolean"
      -            },
      -            "damaged_at": {
      -              "type": "integer"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "type": "integer"
      -            },
      -            "repair_cost": {
      -              "anyOf": [
      -                {
      -                  "type": "null"
      -                },
      -                {
      -                  "$ref": "#/$defs/Resources"
      -                }
      -              ]
      -            },
      -            "repair_seconds": {
      -              "type": "integer"
      -            },
      -            "self_repair_at": {
      -              "type": "integer"
      -            },
      -            "slot": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "level",
      -            "slot"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "can_upgrade": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "id": {
      -              "type": "string"
      -            },
      -            "new": {
      -              "type": "boolean"
      -            },
      -            "slot": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "slot"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "deconstruct_refund": {
      -        "items": {
      -          "$ref": "#/$defs/NextCost"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "fake_army_until": {
      -        "type": "integer"
      -      },
      -      "guests": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alliance_tag": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "troops": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "wounded": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "troops"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "incoming": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alliance_tag": {
      -              "type": "string"
      -            },
      -            "arrive_at": {
      -              "type": "integer"
      -            },
      -            "combat_boost_pct": {
      -              "type": "integer"
      -            },
      -            "exact": {
      -              "type": "boolean"
      -            },
      -            "friendly": {
      -              "type": "boolean"
      -            },
      -            "hero": {
      -              "type": [
      -                "null",
      -                "boolean"
      -              ]
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "owner_id": {
      -              "type": "string"
      -            },
      -            "owner_name": {
      -              "type": "string"
      -            },
      -            "troop_count": {
      -              "type": [
      -                "null",
      -                "integer"
      -              ]
      -            },
      -            "troops": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "troops_by_role": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            }
      -          },
      -          "required": [
      -            "owner_id",
      -            "arrive_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "items": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "new_player_auto_shield": {
      -        "type": "boolean"
      -      },
      -      "next_costs": {
      -        "items": {
      -          "$ref": "#/$defs/NextCost"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "pending": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "amount": {
      -              "type": "integer"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "slot": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "slot",
      -            "kind",
      -            "amount"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "prisoners": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alliance_tag": {
      -              "type": "string"
      -            },
      -            "captured_at": {
      -              "type": "integer"
      -            },
      -            "hero_id": {
      -              "type": "string"
      -            },
      -            "hero_level": {
      -              "type": "integer"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "ransom": {
      -              "type": "integer"
      -            },
      -            "release_at": {
      -              "type": "integer"
      -            },
      -            "release_reward": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "hero_id",
      -            "captured_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "prod_per_hour": {
      -        "$ref": "#/$defs/Resources"
      -      },
      -      "protect": {
      -        "$ref": "#/$defs/Resources"
      -      },
      -      "queues": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "finish_at": {
      -              "type": "integer"
      -            },
      -            "id": {
      -              "type": "string"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "label": {
      -              "type": "string"
      -            },
      -            "march_id": {
      -              "type": "string"
      -            },
      -            "march_state": {
      -              "type": "string"
      -            },
      -            "rally_id": {
      -              "type": "string"
      -            },
      -            "slot": {
      -              "type": [
      -                "null",
      -                "integer"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "kind",
      -            "finish_at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "repair": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "crews": {
      -            "type": "integer"
      -          },
      -          "crews_busy": {
      -            "type": "integer"
      -          },
      -          "damaged": {
      -            "type": "integer"
      -          },
      -          "damaged_effect_pct": {
      -            "type": "number"
      -          },
      -          "engineer_cap": {
      -            "type": "integer"
      -          },
      -          "engineers": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "engineers",
      -          "engineer_cap",
      -          "crews",
      -          "crews_busy",
      -          "damaged",
      -          "damaged_effect_pct"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "resources": {
      -        "$ref": "#/$defs/Resources"
      -      },
      -      "shield_blocked_attempts": {
      -        "type": "integer"
      -      },
      -      "shield_until": {
      -        "type": "integer"
      -      },
      -      "skin_id": {
      -        "type": "string"
      -      },
      -      "stationed": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alliance_tag": {
      -              "type": "string"
      -            },
      -            "host_id": {
      -              "type": "string"
      -            },
      -            "host_name": {
      -              "type": "string"
      -            },
      -            "troops": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "wounded": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "x": {
      -              "type": "integer"
      -            },
      -            "y": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "host_id",
      -            "x",
      -            "y",
      -            "troops"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "troop_count": {
      -        "type": "integer"
      -      },
      -      "troops": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "upkeep_food": {
      -        "type": "integer"
      -      },
      -      "warehouse_cap": {
      -        "type": "integer"
      -      },
      -      "wounded": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "x": {
      -        "type": "integer"
      -      },
      -      "y": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "x",
      -      "y",
      -      "shield_until",
      -      "resources",
      -      "buildings",
      -      "queues",
      -      "troops",
      -      "wounded",
      -      "troop_count",
      -      "skin_id",
      -      "can_upgrade",
      -      "protect",
      -      "prod_per_hour",
      -      "upkeep_food"
      -    ],
      -    "type": "object"
      -  },
      -  "config_hash": {
      -    "type": "string"
      -  },
      -  "feedback": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "body": {
      -          "type": "string"
      -        },
      -        "created_at": {
      -          "type": "integer"
      -        },
      -        "excerpt": {
      -          "type": "string"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "message_at": {
      -          "type": "integer"
      -        },
      -        "player_id": {
      -          "type": "string"
      -        },
      -        "player_name": {
      -          "type": "string"
      -        },
      -        "read": {
      -          "type": "boolean"
      -        },
      -        "reason": {
      -          "type": "string"
      -        },
      -        "replies": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "author": {
      -                "type": "string"
      -              },
      -              "body": {
      -                "type": "string"
      -              },
      -              "created_at": {
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "author",
      -              "body",
      -              "created_at"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "room": {
      -          "type": "string"
      -        },
      -        "subject": {
      -          "type": "string"
      -        },
      -        "target_name": {
      -          "type": "string"
      -        },
      -        "target_player_id": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "player_id",
      -        "player_name",
      -        "kind",
      -        "subject",
      -        "body",
      -        "created_at",
      -        "read"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "founder_player_ids": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "gifts": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "created_at": {
      -          "type": "integer"
      -        },
      -        "diamond_reward": {
      -          "type": "integer"
      -        },
      -        "expires_at": {
      -          "type": "integer"
      -        },
      -        "from_player_name": {
      -          "type": "string"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "loyalty_reward": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "from_player_name",
      -        "created_at",
      -        "expires_at",
      -        "diamond_reward",
      -        "loyalty_reward"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "ground": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "base": {
      -        "type": "string"
      -      },
      -      "h": {
      -        "type": "number"
      -      },
      -      "m": {
      -        "type": "integer"
      -      },
      -      "ppu": {
      -        "items": {
      -          "type": "number"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "tile": {
      -        "type": "integer"
      -      },
      -      "version": {
      -        "type": "string"
      -      },
      -      "w": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "base",
      -      "version",
      -      "m",
      -      "tile",
      -      "ppu",
      -      "w",
      -      "h"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "invites": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_id": {
      -          "type": "string"
      -        },
      -        "description": {
      -          "type": "string"
      -        },
      -        "gift_level": {
      -          "type": "integer"
      -        },
      -        "member_cap": {
      -          "type": "integer"
      -        },
      -        "member_count": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "power": {
      -          "type": "integer"
      -        },
      -        "rank": {
      -          "type": "integer"
      -        },
      -        "tag": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "alliance_id",
      -        "name",
      -        "tag"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "league": {
      -    "anyOf": [
      -      {
      -        "type": "null"
      -      },
      -      {
      -        "$ref": "#/$defs/LeagueStanding"
      -      }
      -    ]
      -  },
      -  "mail": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_id": {
      -          "type": "string"
      -        },
      -        "attacker": {
      -          "type": "string"
      -        },
      -        "attacker_armies": {
      -          "items": {
      -            "$ref": "#/$defs/ReportArmy"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "attacker_hero": {
      -          "type": "boolean"
      -        },
      -        "attacker_hero_level": {
      -          "type": "integer"
      -        },
      -        "attacker_hero_mult": {
      -          "type": "number"
      -        },
      -        "attacker_killed": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "attacker_kind": {
      -          "type": "string"
      -        },
      -        "attacker_level": {
      -          "type": "integer"
      -        },
      -        "attacker_mods": {
      -          "anyOf": [
      -            {
      -              "type": "null"
      -            },
      -            {
      -              "$ref": "#/$defs/BattleMods"
      -            }
      -          ]
      -        },
      -        "attacker_sent": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "attacker_strength": {
      -          "type": "integer"
      -        },
      -        "attacker_wounded": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "body": {
      -          "type": "string"
      -        },
      -        "body_key": {
      -          "type": "string"
      -        },
      -        "buildings_damaged": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "created_at": {
      -          "type": "integer"
      -        },
      -        "defender": {
      -          "type": "string"
      -        },
      -        "defender_armies": {
      -          "items": {
      -            "$ref": "#/$defs/ReportArmy"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "defender_hero": {
      -          "type": "boolean"
      -        },
      -        "defender_hero_home": {
      -          "type": "boolean"
      -        },
      -        "defender_hero_level": {
      -          "type": "integer"
      -        },
      -        "defender_hero_state": {
      -          "type": "string"
      -        },
      -        "defender_killed": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "defender_kind": {
      -          "type": "string"
      -        },
      -        "defender_level": {
      -          "type": "integer"
      -        },
      -        "defender_lootable": {
      -          "anyOf": [
      -            {
      -              "type": "null"
      -            },
      -            {
      -              "$ref": "#/$defs/Resources"
      -            }
      -          ]
      -        },
      -        "defender_losses": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "defender_might": {
      -          "type": "integer"
      -        },
      -        "defender_mods": {
      -          "anyOf": [
      -            {
      -              "type": "null"
      -            },
      -            {
      -              "$ref": "#/$defs/BattleMods"
      -            }
      -          ]
      -        },
      -        "defender_name": {
      -          "type": "string"
      -        },
      -        "defender_power": {
      -          "type": "integer"
      -        },
      -        "defender_remaining": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "defender_strength": {
      -          "type": "integer"
      -        },
      -        "defender_tag": {
      -          "type": "string"
      -        },
      -        "defender_troops": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "defender_troops_known": {
      -          "type": "boolean"
      -        },
      -        "defender_wall_level": {
      -          "type": "integer"
      -        },
      -        "defender_wall_power": {
      -          "type": "integer"
      -        },
      -        "defender_wall_troops": {
      -          "type": "integer"
      -        },
      -        "defender_wounded": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "hero_xp": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "loot": {
      -          "anyOf": [
      -            {
      -              "type": "null"
      -            },
      -            {
      -              "$ref": "#/$defs/Resources"
      -            }
      -          ]
      -        },
      -        "loot_capacity": {
      -          "type": "integer"
      -        },
      -        "loot_capped": {
      -          "type": "boolean"
      -        },
      -        "loot_items": {
      -          "additionalProperties": {
      -            "type": "integer"
      -          },
      -          "type": "object"
      -        },
      -        "loot_share": {
      -          "anyOf": [
      -            {
      -              "type": "null"
      -            },
      -            {
      -              "$ref": "#/$defs/Resources"
      -            }
      -          ]
      -        },
      -        "node_amount": {
      -          "type": "integer"
      -        },
      -        "node_max_amount": {
      -          "type": "integer"
      -        },
      -        "outcome": {
      -          "type": "string"
      -        },
      -        "params": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "relocated": {
      -          "type": "boolean"
      -        },
      -        "relocated_x": {
      -          "type": "integer"
      -        },
      -        "relocated_y": {
      -          "type": "integer"
      -        },
      -        "replay": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "allies": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "frames": {
      -              "items": {
      -                "additionalProperties": false,
      -                "properties": {
      -                  "a": {
      -                    "additionalProperties": {
      -                      "type": "integer"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "d": {
      -                    "additionalProperties": {
      -                      "type": "integer"
      -                    },
      -                    "type": "object"
      -                  },
      -                  "round": {
      -                    "type": "integer"
      -                  }
      -                },
      -                "required": [
      -                  "round",
      -                  "a",
      -                  "d"
      -                ],
      -                "type": "object"
      -              },
      -              "type": [
      -                "null",
      -                "array"
      -              ]
      -            },
      -            "rounds": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "rounds",
      -            "frames"
      -          ],
      -          "type": [
      -            "null",
      -            "object"
      -          ]
      -        },
      -        "side": {
      -          "type": "string"
      -        },
      -        "subject": {
      -          "type": "string"
      -        },
      -        "subject_key": {
      -          "type": "string"
      -        },
      -        "tutorial": {
      -          "type": "boolean"
      -        },
      -        "unread": {
      -          "type": "boolean"
      -        },
      -        "wall_damage": {
      -          "type": "integer"
      -        },
      -        "win": {
      -          "type": "boolean"
      -        },
      -        "x": {
      -          "type": "integer"
      -        },
      -        "y": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "kind",
      -        "subject",
      -        "unread",
      -        "created_at",
      -        "win"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "mail_unread": {
      -    "type": "integer"
      -  },
      -  "maintenance": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "active": {
      -        "type": "boolean"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "starts_at_ms": {
      -        "type": "integer"
      -      },
      -      "until_ms": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "active",
      -      "message"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "map_size": {
      -    "type": "integer"
      -  },
      -  "marches": {
      -    "items": {
      -      "$ref": "#/$defs/March"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "moderation": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "ban_reason": {
      -        "type": "string"
      -      },
      -      "banned_until": {
      -        "type": "integer"
      -      },
      -      "chat_muted_until": {
      -        "type": "integer"
      -      },
      -      "warnings": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "at": {
      -              "type": "integer"
      -            },
      -            "text": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "at",
      -            "text"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      }
      -    },
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "muted_player_ids": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "muted_players": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_tag": {
      -          "type": "string"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "name"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "notices": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "at": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "params": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "kind",
      -        "at"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "now": {
      -    "type": "integer"
      -  },
      -  "palace": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "alliance_id": {
      -        "type": "string"
      -      },
      -      "boost_pcts": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "contest_ends_ms": {
      -        "type": "integer"
      -      },
      -      "contested_since_ms": {
      -        "type": "integer"
      -      },
      -      "court": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "since_ms": {
      -              "type": "integer"
      -            },
      -            "tag": {
      -              "type": "string"
      -            },
      -            "title_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "title_id",
      -            "player_id",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "court_log": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "action": {
      -              "type": "string"
      -            },
      -            "at_ms": {
      -              "type": "integer"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "tag": {
      -              "type": "string"
      -            },
      -            "title_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "at_ms",
      -            "action"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "garrison": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "alliance_tag": {
      -              "type": "string"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "player_id": {
      -              "type": "string"
      -            },
      -            "troops": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "player_id",
      -            "name",
      -            "troops"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "garrison_cap": {
      -        "type": "integer"
      -      },
      -      "garrison_hidden": {
      -        "type": "boolean"
      -      },
      -      "garrison_troops": {
      -        "type": "integer"
      -      },
      -      "hold_hours": {
      -        "type": "integer"
      -      },
      -      "king_alliance_tag": {
      -        "type": "string"
      -      },
      -      "king_id": {
      -        "type": "string"
      -      },
      -      "king_name": {
      -        "type": "string"
      -      },
      -      "kingdom_boosts": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "might_bonus": {
      -        "type": "integer"
      -      },
      -      "owner_alliance_tag": {
      -        "type": "string"
      -      },
      -      "owner_id": {
      -        "type": "string"
      -      },
      -      "owner_name": {
      -        "type": "string"
      -      },
      -      "protected": {
      -        "type": "boolean"
      -      },
      -      "protected_until_ms": {
      -        "type": "integer"
      -      },
      -      "protection_hours": {
      -        "type": "integer"
      -      },
      -      "rotation_step_hours": {
      -        "type": "integer"
      -      },
      -      "rotation_steps": {
      -        "type": "integer"
      -      },
      -      "x": {
      -        "type": "integer"
      -      },
      -      "y": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "x",
      -      "y",
      -      "hold_hours",
      -      "protection_hours",
      -      "rotation_step_hours",
      -      "rotation_steps",
      -      "might_bonus"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "player": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "active_days": {
      -        "type": "integer"
      -      },
      -      "ai": {
      -        "type": "boolean"
      -      },
      -      "alliance_id": {
      -        "type": [
      -          "null",
      -          "string"
      -        ]
      -      },
      -      "alliance_store_bought": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "avatar": {
      -        "type": "integer"
      -      },
      -      "black_market": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "rotates_at": {
      -            "type": "integer"
      -          },
      -          "slots": {
      -            "items": {
      -              "$ref": "#/$defs/BlackMarketSlot"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          },
      -          "tokens": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "tokens",
      -          "slots"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "black_market_preview": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "daily_tokens": {
      -            "type": "integer"
      -          },
      -          "rotates_at": {
      -            "type": "integer"
      -          },
      -          "slots": {
      -            "items": {
      -              "$ref": "#/$defs/BlackMarketSlot"
      -            },
      -            "type": [
      -              "null",
      -              "array"
      -            ]
      -          },
      -          "slots_per_week": {
      -            "type": "integer"
      -          },
      -          "unlock_cost": {
      -            "type": "integer"
      -          },
      -          "unlock_item": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "unlock_item",
      -          "unlock_cost",
      -          "daily_tokens",
      -          "slots_per_week",
      -          "slots",
      -          "rotates_at"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "combat_boost_pct": {
      -        "type": "number"
      -      },
      -      "combat_boost_until": {
      -        "type": "integer"
      -      },
      -      "diamond_pass": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "claimed_today": {
      -            "type": "boolean"
      -          },
      -          "daily": {
      -            "type": "integer"
      -          },
      -          "days_left": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "daily",
      -          "days_left",
      -          "claimed_today"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "diamonds": {
      -        "type": "integer"
      -      },
      -      "dragon": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "level": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "level"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "dragon_pets": {
      -        "additionalProperties": {
      -          "$ref": "#/$defs/WarMachineSnap"
      -        },
      -        "type": "object"
      -      },
      -      "hero": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "atk_pct": {
      -            "type": "integer"
      -          },
      -          "bonus": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "atk_pct": {
      -                "type": "number"
      -              },
      -              "base_atk_pct": {
      -                "type": "number"
      -              },
      -              "gear_atk_pct": {
      -                "type": "number"
      -              },
      -              "gear_hp_pct": {
      -                "type": "number"
      -              },
      -              "hp_pct": {
      -                "type": "number"
      -              },
      -              "level_atk_pct": {
      -                "type": "number"
      -              },
      -              "odds_mult": {
      -                "type": "number"
      -              },
      -              "skill_atk_pct": {
      -                "type": "number"
      -              },
      -              "skill_hp_pct": {
      -                "type": "number"
      -              }
      -            },
      -            "required": [
      -              "base_atk_pct",
      -              "level_atk_pct",
      -              "skill_atk_pct",
      -              "gear_atk_pct",
      -              "atk_pct",
      -              "skill_hp_pct",
      -              "gear_hp_pct",
      -              "hp_pct",
      -              "odds_mult"
      -            ],
      -            "type": [
      -              "null",
      -              "object"
      -            ]
      -          },
      -          "captured": {
      -            "type": "boolean"
      -          },
      -          "captured_by": {
      -            "type": "string"
      -          },
      -          "captured_by_tag": {
      -            "type": "string"
      -          },
      -          "free_reset": {
      -            "type": "boolean"
      -          },
      -          "gear": {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          "home": {
      -            "type": "boolean"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "level": {
      -            "type": "integer"
      -          },
      -          "march_atk_pct": {
      -            "type": "number"
      -          },
      -          "march_hp_pct": {
      -            "type": "number"
      -          },
      -          "max_level": {
      -            "type": "integer"
      -          },
      -          "odds_mult": {
      -            "type": "number"
      -          },
      -          "portrait": {
      -            "type": "integer"
      -          },
      -          "ransom": {
      -            "type": "integer"
      -          },
      -          "release_at": {
      -            "type": "integer"
      -          },
      -          "skill_points": {
      -            "type": "integer"
      -          },
      -          "skills": {
      -            "additionalProperties": {
      -              "type": "integer"
      -            },
      -            "type": "object"
      -          },
      -          "xp": {
      -            "type": "integer"
      -          },
      -          "xp_next": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "level",
      -          "xp",
      -          "home",
      -          "skill_points"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "kind": {
      -        "type": "string"
      -      },
      -      "loyalty": {
      -        "type": "integer"
      -      },
      -      "march_size": {
      -        "type": "integer"
      -      },
      -      "march_size_info": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "hero_pct": {
      -            "type": "number"
      -          },
      -          "kingdom_boost_pct": {
      -            "type": "integer"
      -          },
      -          "next_total": {
      -            "type": "integer"
      -          },
      -          "next_town_hall_level": {
      -            "type": "integer"
      -          },
      -          "research_pct": {
      -            "type": "number"
      -          },
      -          "research_tech_id": {
      -            "type": "string"
      -          },
      -          "total": {
      -            "type": "integer"
      -          },
      -          "town_hall": {
      -            "type": "integer"
      -          },
      -          "town_hall_level": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "town_hall_level",
      -          "town_hall",
      -          "total"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "march_slots": {
      -        "type": "integer"
      -      },
      -      "march_slots_used": {
      -        "type": "integer"
      -      },
      -      "might": {
      -        "type": "integer"
      -      },
      -      "might_rank": {
      -        "type": "integer"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "prod_boost_pct": {
      -        "type": "number"
      -      },
      -      "prod_boost_until": {
      -        "type": "integer"
      -      },
      -      "queue_caps": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "build": {
      -            "type": "integer"
      -          },
      -          "build_rental_until": {
      -            "type": "integer"
      -          },
      -          "craft": {
      -            "type": "integer"
      -          },
      -          "hospital": {
      -            "type": "integer"
      -          },
      -          "research": {
      -            "type": "integer"
      -          },
      -          "research_rental_until": {
      -            "type": "integer"
      -          },
      -          "train": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "build",
      -          "train",
      -          "research"
      -        ],
      -        "type": "object"
      -      },
      -      "rally_size": {
      -        "type": "integer"
      -      },
      -      "rename_cost": {
      -        "type": "integer"
      -      },
      -      "rename_free": {
      -        "type": "boolean"
      -      },
      -      "shield_block": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "code": {
      -            "type": "string"
      -          },
      -          "message": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "code"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "tech": {
      -        "additionalProperties": {
      -          "type": "integer"
      -        },
      -        "type": "object"
      -      },
      -      "title": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "effects": {
      -            "additionalProperties": {
      -              "type": "number"
      -            },
      -            "type": "object"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "additionalProperties": {
      -              "type": "string"
      -            },
      -            "type": "object"
      -          },
      -          "since_ms": {
      -            "type": "integer"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "kind"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "title_id": {
      -        "type": "string"
      -      },
      -      "vip": {
      -        "type": "integer"
      -      },
      -      "vip_benefits": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "combat_pct": {
      -            "type": "number"
      -          },
      -          "construction_free_seconds": {
      -            "type": "integer"
      -          },
      -          "gather_speed_pct": {
      -            "type": "number"
      -          },
      -          "march_speed_pct": {
      -            "type": "number"
      -          },
      -          "prod_mult": {
      -            "type": "number"
      -          },
      -          "queues": {
      -            "type": "integer"
      -          },
      -          "research_speed_pct": {
      -            "type": "number"
      -          },
      -          "train_speed_pct": {
      -            "type": "number"
      -          },
      -          "troop_hp_pct": {
      -            "type": "number"
      -          },
      -          "unlocks": {
      -            "additionalProperties": {
      -              "type": "boolean"
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "prod_mult",
      -          "march_speed_pct",
      -          "train_speed_pct",
      -          "gather_speed_pct",
      -          "combat_pct",
      -          "construction_free_seconds",
      -          "queues"
      -        ],
      -        "type": [
      -          "null",
      -          "object"
      -        ]
      -      },
      -      "vip_duration_pct": {
      -        "type": "integer"
      -      },
      -      "vip_login_streak": {
      -        "type": "integer"
      -      },
      -      "vip_next_cost": {
      -        "type": "integer"
      -      },
      -      "vip_tier": {
      -        "type": "string"
      -      },
      -      "vip_tier_points": {
      -        "type": "integer"
      -      },
      -      "vip_until": {
      -        "type": "integer"
      -      },
      -      "war_machines": {
      -        "additionalProperties": {
      -          "$ref": "#/$defs/WarMachineSnap"
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "name",
      -      "kind",
      -      "alliance_id",
      -      "vip",
      -      "diamonds",
      -      "might",
      -      "might_rank",
      -      "rename_cost",
      -      "queue_caps",
      -      "march_slots",
      -      "march_slots_used",
      -      "march_size"
      -    ],
      -    "type": "object"
      -  },
      -  "point_event_tiers": {
      -    "additionalProperties": {
      -      "items": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "points": {
      -            "type": "integer"
      -          },
      -          "reward": {
      -            "additionalProperties": true,
      -            "type": "object"
      -          }
      -        },
      -        "required": [
      -          "points"
      -        ],
      -        "type": "object"
      -      },
      -      "type": [
      -        "null",
      -        "array"
      -      ]
      -    },
      -    "type": "object"
      -  },
      -  "point_events": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "ends_at": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "points": {
      -          "type": "integer"
      -        },
      -        "tiers_reached": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "kind",
      -        "ends_at",
      -        "points",
      -        "tiers_reached"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "quests": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "claimed": {
      -          "type": "boolean"
      -        },
      -        "done": {
      -          "type": "boolean"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "progress": {
      -          "type": "integer"
      -        },
      -        "rarity": {
      -          "type": "string"
      -        },
      -        "reward": {
      -          "additionalProperties": true,
      -          "type": "object"
      -        },
      -        "target": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "done",
      -        "claimed"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "rallies": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_id": {
      -          "type": "string"
      -        },
      -        "arrive_at": {
      -          "type": "integer"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "launch_at": {
      -          "type": "integer"
      -        },
      -        "leader_id": {
      -          "type": "string"
      -        },
      -        "leader_name": {
      -          "type": "string"
      -        },
      -        "leader_tag": {
      -          "type": "string"
      -        },
      -        "march_id": {
      -          "type": "string"
      -        },
      -        "slot": {
      -          "type": "integer"
      -        },
      -        "state": {
      -          "type": "string"
      -        },
      -        "target_kind": {
      -          "type": "string"
      -        },
      -        "target_name": {
      -          "type": "string"
      -        },
      -        "target_tag": {
      -          "type": "string"
      -        },
      -        "troop_cap": {
      -          "type": "integer"
      -        },
      -        "troops": {
      -          "type": "integer"
      -        },
      -        "waves": {
      -          "items": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "name": {
      -                "type": "string"
      -              },
      -              "player_id": {
      -                "type": "string"
      -              },
      -              "troops": {
      -                "additionalProperties": {
      -                  "type": "integer"
      -                },
      -                "type": "object"
      -              }
      -            },
      -            "required": [
      -              "player_id"
      -            ],
      -            "type": "object"
      -          },
      -          "type": [
      -            "null",
      -            "array"
      -          ]
      -        },
      -        "x": {
      -          "type": "integer"
      -        },
      -        "y": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "alliance_id",
      -        "leader_id",
      -        "x",
      -        "y",
      -        "slot",
      -        "launch_at",
      -        "state",
      -        "waves"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "rankings": {
      -    "items": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "alliance_tag": {
      -          "type": "string"
      -        },
      -        "id": {
      -          "type": "string"
      -        },
      -        "might": {
      -          "type": "integer"
      -        },
      -        "name": {
      -          "type": "string"
      -        },
      -        "rank": {
      -          "type": "integer"
      -        },
      -        "you": {
      -          "type": "boolean"
      -        }
      -      },
      -      "required": [
      -        "id",
      -        "name",
      -        "might",
      -        "rank"
      -      ],
      -      "type": "object"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "rate_limits": {
      -    "additionalProperties": {
      -      "additionalProperties": false,
      -      "properties": {
      -        "min_gap_ms": {
      -          "type": "integer"
      -        },
      -        "n": {
      -          "type": "integer"
      -        },
      -        "next_allowed_at_ms": {
      -          "type": "integer"
      -        },
      -        "remaining": {
      -          "type": "integer"
      -        },
      -        "reset_at": {
      -          "type": "integer"
      -        },
      -        "window_seconds": {
      -          "type": "integer"
      -        }
      -      },
      -      "required": [
      -        "n",
      -        "window_seconds",
      -        "remaining"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "object"
      -  },
      -  "reported_chat": {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": [
      -      "null",
      -      "array"
      -    ]
      -  },
      -  "sides": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "ai": {
      -        "$ref": "#/$defs/SideRow"
      -      },
      -      "holder": {
      -        "type": "string"
      -      },
      -      "holder_since_ms": {
      -        "type": "integer"
      -      },
      -      "human": {
      -        "$ref": "#/$defs/SideRow"
      -      }
      -    },
      -    "required": [
      -      "human",
      -      "ai"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "tutorial": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "active": {
      -        "type": "boolean"
      -      },
      -      "chapter": {
      -        "type": "string"
      -      },
      -      "chapters": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "done_log": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "at": {
      -              "type": "integer"
      -            },
      -            "chapter": {
      -              "type": "string"
      -            },
      -            "index": {
      -              "type": "integer"
      -            },
      -            "reward": {
      -              "additionalProperties": true,
      -              "type": "object"
      -            },
      -            "step_id": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "index",
      -            "step_id",
      -            "at"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "remaining_diamonds": {
      -        "type": "integer"
      -      },
      -      "remaining_steps": {
      -        "type": "integer"
      -      },
      -      "require": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "reward": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      },
      -      "step_id": {
      -        "type": "string"
      -      },
      -      "step_index": {
      -        "type": "integer"
      -      },
      -      "total_steps": {
      -        "type": "integer"
      -      },
      -      "ui_ack": {
      -        "type": "string"
      -      },
      -      "ui_alliance_found": {
      -        "type": "boolean"
      -      },
      -      "ui_alliance_id": {
      -        "type": "string"
      -      },
      -      "ui_alliance_name": {
      -        "type": "string"
      -      },
      -      "ui_alliance_tag": {
      -        "type": "string"
      -      },
      -      "ui_block_except": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "ui_building": {
      -        "type": "string"
      -      },
      -      "ui_focus": {
      -        "type": "string"
      -      },
      -      "ui_focus_x": {
      -        "type": [
      -          "null",
      -          "integer"
      -        ]
      -      },
      -      "ui_focus_y": {
      -        "type": [
      -          "null",
      -          "integer"
      -        ]
      -      },
      -      "ui_queue": {
      -        "type": "string"
      -      },
      -      "ui_skippable": {
      -        "type": "boolean"
      -      },
      -      "ui_target": {
      -        "type": "string"
      -      },
      -      "ui_targets": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "welcomed": {
      -        "type": "boolean"
      -      }
      -    },
      -    "required": [
      -      "step_id",
      -      "step_index",
      -      "total_steps",
      -      "active",
      -      "welcomed",
      -      "remaining_steps",
      -      "remaining_diamonds"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "tutorial_graduation": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "at": {
      -        "type": "integer"
      -      },
      -      "full": {
      -        "type": "boolean"
      -      },
      -      "reward": {
      -        "additionalProperties": true,
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "at",
      -      "full"
      -    ],
      -    "type": [
      -      "null",
      -      "object"
      -    ]
      -  },
      -  "viewport": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "h": {
      -        "type": "integer"
      -      },
      -      "marches": {
      -        "items": {
      -          "$ref": "#/$defs/March"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "tiles": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "amount": {
      -              "type": "integer"
      -            },
      -            "camp_loot": {
      -              "anyOf": [
      -                {
      -                  "type": "null"
      -                },
      -                {
      -                  "$ref": "#/$defs/Resources"
      -                }
      -              ]
      -            },
      -            "camp_max_level": {
      -              "type": "integer"
      -            },
      -            "camp_might": {
      -              "type": "integer"
      -            },
      -            "camp_name": {
      -              "type": "string"
      -            },
      -            "camp_raid_radius": {
      -              "type": "integer"
      -            },
      -            "camp_troops": {
      -              "additionalProperties": {
      -                "type": "integer"
      -              },
      -              "type": "object"
      -            },
      -            "camp_warband": {
      -              "type": "integer"
      -            },
      -            "camp_zone": {
      -              "type": "string"
      -            },
      -            "embassy_room": {
      -              "type": [
      -                "null",
      -                "integer"
      -              ]
      -            },
      -            "grow_at": {
      -              "type": "integer"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "level": {
      -              "type": "integer"
      -            },
      -            "max_amount": {
      -              "type": "integer"
      -            },
      -            "node_id": {
      -              "type": "string"
      -            },
      -            "occupant_alliance_tag": {
      -              "type": "string"
      -            },
      -            "occupant_hero": {
      -              "type": "boolean"
      -            },
      -            "occupant_id": {
      -              "type": "string"
      -            },
      -            "occupant_name": {
      -              "type": "string"
      -            },
      -            "occupant_troops": {
      -              "type": "integer"
      -            },
      -            "occupant_troops_hidden": {
      -              "type": "boolean"
      -            },
      -            "owner_alliance_id": {
      -              "type": "string"
      -            },
      -            "owner_alliance_tag": {
      -              "type": "string"
      -            },
      -            "owner_id": {
      -              "type": "string"
      -            },
      -            "owner_name": {
      -              "type": "string"
      -            },
      -            "raid_at": {
      -              "type": "integer"
      -            },
      -            "shielded": {
      -              "type": "boolean"
      -            },
      -            "x": {
      -              "type": "integer"
      -            },
      -            "y": {
      -              "type": "integer"
      -            }
      -          },
      -          "required": [
      -            "x",
      -            "y",
      -            "kind"
      -          ],
      -          "type": "object"
      -        },
      -        "type": [
      -          "null",
      -          "array"
      -        ]
      -      },
      -      "w": {
      -        "type": "integer"
      -      },
      -      "x0": {
      -        "type": "integer"
      -      },
      -      "y0": {
      -        "type": "integer"
      -      }
      -    },
      -    "required": [
      -      "tiles"
      -    ],
      -    "type": "object"
      -  }
      -}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent, and the description goes well beyond them: it discloses that the read is cached and pushed, that the Snapshot grows over a round, that 'changes' diffs against the connection's last reply, and that send_command is the escape hatch for a forced fresh read. That is exactly the staleness semantics an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core statement, then scoping and delta modes. Slightly run-on with chained em-dash clauses, and docs/protocol.md §5 is cited twice, which is one reference too many, but no sentence is dead weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained; the description still covers caching, growth, and delta behavior. For a two-optional-parameter read tool, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents the full/sections/changes/city/none modes and the 'overriding snapshot' precedence. The description adds only illustrative examples like ["mail"] and ["palace","marches"], so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Read this session's current, cached Snapshot') and enumerates the contents (city, viewport, mail, alliance, rankings). It also distinguishes itself from send_command, so the agent can separate this from the network-command sibling without inspecting either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing: use send_command 'if you specifically need to force a fresh read', use sections 'read only what you need', snapshot="changes" 'to see what happened while you waited'. It names the alternatives and the conditions that select them.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources