Choosing a tool
The tool reference is exhaustive. This page is the map: question in, tool out.
The tool reference lists every tool with every argument. This page is the shorter thing an agent reads first: given the shape of a question, which tool answers it, in what order, and the handful of conventions that hold everywhere.
Question shape to tool
| The question sounds like | Call |
|---|---|
| How am I doing? Start here. | players_summary |
| Over a window, or since X compared with before | battles_performance (from/to, before_after, group_by: "week"; pass mode, or read the per-mode-group split, modes, it returns without one) |
| What decks do I play, and how do they do? | battles_decks (a page of decks, each one line of card names; next_offset for more), battles_decks({ deck_hash }) for one deck's cards in full, battles_query({ deck_hash }) for its battles |
| Show me the battles themselves; the workhorse | battles_query (filters, cursor, verbosity: "compact") |
| A link to one battle, to hand a person | the row's url from battles_query, the battle's public page; battles_query({ battle_id }) also takes the short id or the url |
| What day is it in the game? Season, war day, when it rolls | game_clock |
| My clan today: standings, who still has decks | war_current (decks_today can guide a nudge only while race_finished_at is null) |
| Every current member's W/L/D over a short window | clans_standings({ days: 1, min_battles: 1 }), or explicit from/to; each row carries the ladder net_trophies and the current_streak too, and one member's battle-by-battle detail is battles_performance |
| Which clanmates played this exact deck? | battles_decks for a deck_hash, then battles_query({ deck_hash }) without player_tag, and compare the returned tags with clans_roster; this is exact deck evidence, not a playstyle similarity score |
| Who has gone quiet? | clans_roster, reading last_seen_in_game beside last_recorded_battle |
| What is waiting for me in Clan, and how do I stand there? | clans_my_view (your own connection only: the policy summary, your own standing line and the Actions waiting for you, each with a link to decide it in Clan; never another member's line or a removal) |
| Who should be promoted, demoted or removed? | Elixir serves the facts and the clan decides: clans_participation (war decks, battles and donations per member per week), clans_standings (win rate and activity over a window, with who joined mid-window and whose battles were not recorded), and clans_roster (role, tenure, last_seen_in_game). Read a member's week with the recording note in view: a low count can be a recording gap. |
| What did every member do this week, and the weeks before? | clans_participation (battles, ranked battles and donations per member per week, and war decks used per race week, in one call) |
| How has the clan moved over the season: score, war trophies, members, the members' trophies? | clans_timeline (one point per game day, with the aggregates over the members' rows) |
| How has each member's trophies or rank moved day by day? | clans_members_timeline (every member's day series in one call; compact for first, last and delta) |
| Scout the bracket | war_rivals, then war_current({ clan_tag, live: true }) or clans_roster({ clan_tag, live: true }) for one rival |
| What does "LavaLoon" / "bridge spam" mean, or what is this deck called? | cards_archetype (name, or cards; nothing for the vocabulary) |
| Rarest badge, who holds one | badges_rarity, badges_holders |
| A name to a tag, or tags to names | players_search, players_names |
| What happened since I last looked? | elixir_timeline (items newest first and an entry per subject, then drill with the data tools) |
| How have I moved: trophies, rank, a lifetime counter, day by day? | players_timeline (one point per game day; metrics picks the series) |
| Which of my cards carry, which enemy cards beat me? | battles_cards (perspective: "mine" or "opponent"; sort: "losses" for the most battles lost first) |
| Who do I keep meeting, and how does it go? | battles_opponents (sort: "losses" for the opponents you lost to most first) |
| Two to four players side by side | battles_compare (mode, or read each player's per-mode-group split, window.modes) |
| Were my cards above or below my opponents' this window? | players_summary (mean_level_gap on each deck), battles_decks, battles_cards and battles_opponents rows (mean_level_gap); the record describes the gap and does not score it, see Methodology |
| How did this player or clan's members play week by week? | battles_trends with a segment |
| Card facts, earliest selected-history play, and who in my clan played or holds it | cards_card (one call; Cards) |
| The profile, the collection, how complete the record is | players_profile, players_collection, elixir_coverage |
| Past war weeks: final ranks, boat fame, one member's points and decks | war_history (seasons, or season_id and section_index for one week's whole roster) |
| What was on in the game: events, challenges, side modes, by day | game_events |
| Track someone, say who they are to you | elixir_track_player, elixir_track_clan, elixir_my_players, elixir_nickname |
| Resolve a human on an agent's surface to a player (agent connections only) | elixir_identify, elixir_my_identities |
| Something is missing or took too many calls | elixir_send_feedback; elixir_my_feedback says what happened to it |
| What the service holds and who fetches it | elixir_data_insights, elixir_collectors |
| How is this documented? | elixir_docs, elixir_examples, elixir_updates, elixir_changelog |
Read comparable before ranking: where a response carries it (clans_standings,
battles_decks), false means two rows were played in
different modes or against different level gaps, and the note names them.
Every recorded-data tool is unlimited within the daily call budget. The
tools that spend the live lane are live_fetch and the 4 with a live
flag; everything else reads the record.
Four sequences
How am I doing. players_summary for the headline (trophies, the fixed
last 30 days, the most-played deck), then battles_performance with a window
or before_after for the comparison the person actually asked about, then
battles_decks if the answer is about decks. Read meta.freshness_seconds
before quoting a number.
Scout a bracket. game_clock to know whether it is a battle day, then
war_current once for your own standings and the five clans in the race,
then war_rivals for what the record knows about each rival, then, for the
one that matters, war_current({ clan_tag, live: true }) or
clans_roster({ clan_tag, live: true }): a fresh read of any clan, recorded
or not, served at once if one is in hand, otherwise queued while the record
answers with live_status.state: "pending" and when to call again.
If a rival's recorded roster returns not_recorded, follow its exact
clans_roster({ clan_tag, live: true }) retry hint; live_pending means wait
retry_after_s and repeat, not that the roster is unobtainable. A live read
records that reading but does not start an ongoing clan watch.
Name to tag to drill. players_search({ query }) resolves a name (your
nicknames and clanmates rank first), then any player tool with the tag. In
the other direction, players_names resolves up to 100 tags without the
live lane, and players_profile({ live: true }) fetches one the record has
never named.
How have I moved. players_timeline for the series itself (trophies by
default; metrics picks Path of Legends, a lifetime counter or the clan
rank; one point per game day with day, kind and the stamps that wrote
it), then battles_performance({ group_by: "week" }) for the win rate and
mode split behind each stretch of it (clipped weeks say partial), and
battles_decks for the mean_level_gap behind each deck, so a move can be
read beside the card levels it was made with. Read
applied.window.crosses on every one: a season roll resets the seasonal
trophies and the ranked standing, so the two sides of it are not one series.
Conventions on one screen
- Omit
player_tagto mean the caller: a person's primary player, or whoeveron_behalf_ofmaps to on an agent connection. Omitclan_tagto mean the primary player's current clan (an agent's: the clan it acts for); when that clan is not recorded, or there is none, the call is refused with the fixing call in the hint, never answered for another clan. Nothing is looked up first. - Segment tools name a subject.
battles_trends,cards_cardandbadges_*require"mine"(your clan),{player_tag}or{clan_tag}. A clan read describes its current members. There is no record segment. - Windows are
from/to, ISO instants orYYYY-MM-DDresolved in the account's timezone; a date-onlytocovers that whole day. The daily series (players_timeline,clans_timeline,clans_members_timeline) run on game days and floor an instant to its day, saying so.daysandweeksare sugar;season(current,previous,2026-08or135) bounds one season on every windowed tool,elixir_timelineincluded, and is the default oncards_card. Every windowed response echoesapplied.windowwith asourceofargument,default,unbounded,seasonorfixed, theseasonit starts in andcrosses, every season roll inside it (a note fires when there is one); see Windows and timezones and Seasons. verbosity: "compact"is the one size control, accepted on every tool. It drops the bulk and keeps identities and counts (a tool with one size says so in a note); a result over the delivery cap answersresult_too_largenaming the arguments that narrow it.- Every response carries
notes[]anddocs. The notes are one-sentence caveats to repeat with the numbers;docsis apage#sectionforelixir_docswhere the formulas live. live: trueasks for a fresh read onplayers_profile,clans_roster,war_current,battles_query: served at once if a read inside the API's cache window is in hand, otherwise queued while the record answers now withlive_status.state: "pending"and when to call again.live_fetchis the raw catch-all and the last resort; it stores nothing, and refuses a battle log, which never fits the cap.timezoneon any windowed tool names an IANA zone for that call's date-only bounds and local labels, for agents serving people in several zones.- Errors are a closed set with a
hintnaming the next call; check the body, not only the transport flag. The codes are on the Protocol reference. - A heavy aggregation can return
query_timeoutrather than a partial answer. Retry after a few seconds, or narrowfrom/to; loweringlimitonly reduces output, not scan cost. Keep the request id if it persists.
Two tools read Clan, each for one kind of connection. A person's own
connection uses clans_my_view for that person's own view (the policy
summary, their standing line, the Actions waiting for them), for a player
they have verified; see Your own view.
An assigned agent with an explicit private-context grant uses clans_context
for its clan’s declared war intent and policy revision. It accepts no clan tag;
game reads and clan assignment alone do not grant this private access. See
Agent context.