ListTokens returns every token that can appear on a quote, on every chain, in one call.
Cache the response for the lifetime of a page load rather than calling it per quote, and refresh it when your app reloads. It changes when the operator lists or delists a token, not on a schedule.
Amount handling
decimals from the catalog is the only correct source for converting user input into amount_in.
Building a token picker
Pair the catalog withGetChains so the picker only offers what is currently quotable:
Single token lookup
GetTokenInfo resolves one token by chain and address, for cases where you have an address from elsewhere — a deep link, a user paste, a stored preference.
UNAVAILABLE rather than inventing metadata.
Tiers and slippage
tier classifies a token’s liquidity and feeds the default slippage applied when you omit slippage_bps. Stable assets get tighter defaults than long-tail ones. You can always override per quote; see Slippage.