Contract
4.0.0
Tool contract 4.0.0
The batched major (docs/reviews/2026-09-19-INTERFACE-REVIEW.md Part 5.3, Phase 6): the names and shapes the additive releases 3.14.0 to 3.18.0 doubled are settled to one, with no deprecation window (every client of this server is first-party and was updated in the same pass).
Nothing new is served; every retired name has its replacement under breaking. The first call after reconnecting should re-fetch tools/list: elixir_feedback is elixir_send_feedback, and the six segment tools refuse a call without segment.
Breaking
players_timeline.series[].dateremoved (day, the same YYYY-MM-DD game day, 3.17.0).battles_query.battles[].arenais{id, name}(was the name string;arena_idfolded in).players_profile.snapshot.lifetimecarries the snake_case keys only (battle_count,wins,losses,three_crown_wins,star_points,exp_points,collection_level, ...); the camelCase twinsbattleCount,bestTrophies,threeCrownWins,starPoints,expPoints,collectionLevelare gone. One shape withclans_rosterandplayers_timeline.battles_performancegroup_by: 'mode'removed (game_modeis the named game mode;weekunchanged).clans_standings.members[].trophy_netremoved (net_trophies, the namebattles_performanceuses).- The series'
pol_leaguemetric (players_timeline,clans_members_timeline) isleague_number, the battle row's name: themetricsargument acceptsleague_numberand refusespol_league, and the point carriesleague_number(the profile'spath_of_legendobject keeps the API's ownleagueNumber). clans_participation.weeks[].completeremoved (partial, true on the current week, the shape the weekly and monthly buckets use).elixir_coverage.completeness_last_7_days.average_ratiois a number (was a three-decimal string) andincomplete_days(always null) removed.war_current.nominal_period_elapsedremoved (period.started_atandday_ends_atsay the same).game_events.events[].days_seenremoved (game_days_seen, 3.17.0).clans_roster.members[].lifetime.as_ofremoved (profile_observed_at, the same instant).segmentis REQUIRED onbattles_meta_decks,battles_meta_cards,battles_trends,cards_synergy,badges_rarityandbadges_holders: a call without it isbad_request(classinput) with a hint naming'mine','corpus'and the object; the omitted-segment note is gone with the default.elixir_feedbackiselixir_send_feedback(the write-tool naming rule;elixir_my_feedbackunchanged).