{"serverId":"mcp-registry/com.rbxinvest/market-data","tools":[{"name":"explain_term","fixed":{"name":"explain_term","description":"The glossary of every figure, column, label and badge on rbxinvest.com, in plain words: what it means, how the site works it out, an everyday analogy, and the catch (RAP, Price, Copies, Remaining, Total Value and Market Cap, Avg price, Vol, Demand, Growth, Score, Chance of profit, Est. Profit, Sell Around, Est. Demand, Buy Limit, 40% Eligible, Resellable, sale status, Deal %, the creator scores and performance tiles, portfolio figures, the Market Data charts, release cohorts, collections). Pass ","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":120,"description":"The label or the question, e.g. \"RAP\", \"is a score of 80 good\", \"deal %\". Omit for the index."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"What a number or label on the site means"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215},{"name":"find_articles","fixed":{"name":"find_articles","description":"Search RBX Invest's published guides. They cover the market — how Roblox taxes resales, how RAP is calculated, valuing and flipping Limiteds, converting Robux to USD, histories of individual item series — and the site itself, in the \"site\" section: linking a Roblox account and what that grants, inventory syncing, privacy, what each page does. Returns titles, summaries and links — read the article itself for the detail. One search returning nothing is a vocabulary miss more often than a gap; try ","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","default":5,"maximum":50,"minimum":1},"query":{"type":"string","description":"Topic to search for, e.g. \"devex\", \"how RAP works\". Omit for the most recent articles."},"category":{"enum":["market-reports","item-histories","guides","strategy","roblox-history","site"],"type":"string","description":"Restrict to one section of /articles, the same six a visitor can browse."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"RBX Invest's written guides"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":284,"tokensAfter":284},{"name":"find_deals","fixed":{"name":"find_deals","description":"Roblox Limiteds whose lowest resale listing is currently below their RAP, with the discount and the absolute saving. This is the live resale market, refreshed continuously. Use it for what is underpriced right now.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"maximum":100,"minimum":1,"description":"Page of the feed, for reading past the first. The reply says how many are listed in total."},"sort":{"enum":["deal","recent","savings","rap","price"],"type":"string","default":"deal","description":"deal = biggest discount, savings = biggest absolute saving, recent = newest; rap and price rank by those."},"type":{"enum":["ugc_limited","regular_limited"],"type":"string","default":"ugc_limited","description":"ugc_limited or regular_limited (classic)."},"limit":{"type":"integer","default":10,"maximum":200,"minimum":1},"min_rap":{"type":"integer","default":0,"minimum":0,"description":"Ignore items whose RAP is below this."},"max_price":{"type":"integer","minimum":1,"description":"Highest resale price to consider, in Robux."},"min_price":{"type":"integer","minimum":0,"description":"Lowest resale price to consider, in Robux."},"min_discount_pct":{"type":"number","default":10,"maximum":99,"minimum":0,"description":"Only items at least this far below RAP."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Limiteds listed below RAP"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":381,"tokensAfter":381},{"name":"find_page","fixed":{"name":"find_page","description":"Every page on rbxinvest.com and what it is for: the market pages, the Get Started guide levels and steps, the article sections, every curated collection, the support page, the data-use and licensing terms, and the developer documents. Pass a few words of what you are looking for (\"market data\", \"dominus\", \"can I reuse your data\"); omit the query for the full list. Each result carries a url to cite. The data-use entry returns the licensing terms in full, which govern reusing anything these tools ","inputSchema":{"type":"object","properties":{"query":{"type":"string","maxLength":120,"description":"What you are looking for. Omit for every page."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Find a page on RBX Invest"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":202,"tokensAfter":202},{"name":"get_collection","fixed":{"name":"get_collection","description":"The items in one of RBX Invest's curated collections (for example dominus, ugc-limited-hats, cheap-limiteds-under-100, rarest-limiteds), in the same order the collection page shows them, with RAP, lowest listing and copies. find_page with a word from the collection name returns its slug. Cite the collection as https://rbxinvest.com/collections/{slug} and items as https://rbxinvest.com/item/{asset_id}.","inputSchema":{"type":"object","required":["slug"],"properties":{"page":{"type":"integer","default":1,"maximum":100,"minimum":1},"slug":{"type":"string","description":"Collection slug, e.g. \"dominus\"."},"sort":{"enum":["rap_desc","resale_asc","qty_asc"],"type":"string","description":"rap_desc = highest RAP first, resale_asc = cheapest listing first, qty_asc = rarest first. Omit for the collection's own order."},"limit":{"type":"integer","default":10,"maximum":25,"minimum":1}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"The items in one curated collection"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":267,"tokensAfter":267},{"name":"get_community_holdings","fixed":{"name":"get_community_holdings","description":"The Limiteds and creators most held across the portfolios RBX Invest tracks. A different signal from price or sales volume: RAP says what a thing trades at, this says what people chose to keep. Ranked by total copies held or by how many different people hold it — one item can be 33 copies in a single collection and another one copy each across 400 people.","inputSchema":{"type":"object","properties":{"kind":{"enum":["items","creators"],"type":"string","default":"items","description":"items = individual Limiteds, creators = whose work is held."},"sort":{"enum":["unique_owners","total_copies"],"type":"string","default":"total_copies","description":"total_copies = most copies held, unique_owners = held by the most different people."},"limit":{"type":"integer","default":10,"maximum":100,"minimum":1},"query":{"type":"string","description":"Part of an item or creator name."},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0,"description":"Rows to skip, for reading past the first page (at most 10,000)."},"direction":{"enum":["desc","asc"],"type":"string","default":"desc"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"What tracked collectors hold"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":328,"tokensAfter":328},{"name":"get_community_market_history","fixed":{"name":"get_community_market_history","description":"The combined Classic and UGC value (at RAP) and copies held across every public portfolio on the RBX Invest players board, over time, with how many members that covers. It covers RBX Invest members who linked a Roblox account, not all of Roblox, and a change can be members joining as much as prices moving: compare members_at_start with members.","inputSchema":{"type":"object","properties":{"days":{"enum":[30,90,182,365,9999],"type":"integer","default":90}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"What tracked collectors hold over time"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":152,"tokensAfter":152},{"name":"get_creator","fixed":{"name":"get_creator","description":"A Roblox UGC creator: how often their releases have ended up profitable, how long that typically took, their biggest items, and related articles from the site (covers_this_creator marks the ones that link their items). Creators with too few releases come back unrated rather than scored — treat that as unknown, not as bad.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Creator name. Omit if giving creator_id."},"creator_id":{"type":"string","description":"Numeric creator id."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Creator track record"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":164,"tokensAfter":164},{"name":"get_item_details","fixed":{"name":"get_item_details","description":"Everything tracked about one Roblox Limited: a plain-language summary paragraph, est_demand (the Est. Demand level from the New UGC Limiteds feed, a release-time sell-out-speed quartile, not a buy signal; null when unrated), RAP and how it has moved over a window, the resale book (how many copies are listed and at what prices, not just the cheapest), stock left, sales in the last 30 days, whether the creator is still selling new copies, the creator, the item score with its predicted profit per d","inputSchema":{"type":"object","required":["asset_id"],"properties":{"asset_id":{"type":"string","description":"Numeric Roblox asset id, e.g. \"1365767\"."},"trend_days":{"type":"integer","default":30,"maximum":90,"minimum":7}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"One Limited in depth"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":223,"tokensAfter":223},{"name":"get_items","fixed":{"name":"get_items","description":"Look up a known list of Roblox Limiteds in one call: name, classic or UGC, asset type, creator, RAP, lowest resale listing, stock, original price, favorites and the typical sale price over 30/90/180 days. Use it to compare items or to refresh a watchlist instead of calling get_item_details once per item; use get_item_details when one item needs its full history and score. Up to 200 asset ids per call; ids that are not tracked Limiteds come back in not_found.","inputSchema":{"type":"object","required":["asset_ids"],"properties":{"asset_ids":{"type":"array","items":{"type":"string","description":"Numeric Roblox asset id, e.g. \"1365767\"."},"maxItems":200,"minItems":1,"description":"Numeric Roblox asset ids, at most 200."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Several Limiteds at once"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":222,"tokensAfter":222},{"name":"get_market_activity","fixed":{"name":"get_market_activity","description":"Marketplace sales and free claims over a period, Classic and UGC Limiteds apart, each against the same length of time just before it: distinct items sold, copies sold, Robux spent, and copies claimed free (taken at 0 Robux). Use it for how much was spent, whether the market is busier than before, or how many free UGC copies were claimed. Pass creator_id for one creator's items. Item-for-item trades are excluded.","inputSchema":{"type":"object","properties":{"days":{"enum":[30,90,182,365,9999],"type":"integer","default":30,"description":"Period length in days; 9999 for everything recorded."},"creator_id":{"type":"string","description":"Numeric creator id to scope to that creator. Omit for the whole market."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Marketplace sales and free claims over a period"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":221,"tokensAfter":221},{"name":"get_market_cap","fixed":{"name":"get_market_cap","description":"How big the Roblox Limited market is over any date range, split between Classic and UGC Limiteds: market cap, items, copies in circulation, and the marketplace sales volume, Robux spent and mean and median resale price per copy on the latest measured day, plus a sampled daily series carrying all of them. Market cap is the RAP of each item times the copies of it that exist. Use it for how big the market is, whether it is growing, how marketplace sales compare, and how the two halves differ. Item-","inputSchema":{"type":"object","properties":{"days":{"enum":[30,90,182,365,9999],"type":"integer","default":365,"description":"Length of the range in days; 9999 for the whole series, which reaches 2021 on two items and 2022-11-24 for the rest."},"creator_id":{"type":"string","description":"Numeric creator id (from get_creator or rank_creators) to scope to that creator. Omit for the whole market."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Market cap over time, Classic vs UGC"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":271,"tokensAfter":271},{"name":"get_market_creator_stats","fixed":{"name":"get_market_creator_stats","description":"The Creators tab on /market-data: UGC creator counts, issued copies, market value, mean and median resale prices and growth from first sale, market concentration, top ten creators by issued copies, and marketplace trading totals. Roblox and unsold original copies are excluded. Use rank_creators to search or sort individual creators.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"UGC creator market statistics"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":129,"tokensAfter":129},{"name":"get_market_stats","fixed":{"name":"get_market_stats","description":"Totals for the Roblox Limiteds market as RBX Invest tracks it: how many Limiteds are followed, and the copies and Robux held across tracked portfolios. The holdings figures cover RBX Invest users who linked a Roblox account, not all of Roblox.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Size of the tracked market"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":102,"tokensAfter":102},{"name":"get_membership","fixed":{"name":"get_membership","description":"RBX Invest's membership tiers with their regular prices and what each includes, how a paid tier is obtained, and, read live, whether the site is currently free for everyone who signs in (free_right_now). When free_right_now is true, say that first: the prices apply only after the free period ends.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"What RBX Invest costs right now"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":116,"tokensAfter":116},{"name":"get_new_limiteds","fixed":{"name":"get_new_limiteds","description":"UGC Limiteds released recently, with stock left, the predicted profit numbers RBX Invest scores them with, and each item’s demand_level: the Est. Demand the feed card shows, a release-time estimate of how fast the creator’s copies sell out, ranked in quarters against the last 90 days of paid releases (excellent = fastest). Sell-out speed only, not a buy signal or a guarantee; the reply carries the meaning in demand_level_meaning.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","default":1,"maximum":100,"minimum":1,"description":"Page of the results, for reading past the first."},"sort":{"enum":["newest","fewest_copies","best_score"],"type":"string","default":"newest"},"limit":{"type":"integer","default":10,"maximum":200,"minimum":1},"query":{"type":"string","description":"Part of an item name, to search within recent releases."},"hide_free":{"type":"boolean","default":false,"description":"Drop items the creator released at 0 R$."},"availability":{"enum":["all","available"],"type":"string","default":"all"},"max_age_days":{"type":"integer","default":7,"maximum":90,"minimum":1},"resellable_only":{"type":"boolean","default":false,"description":"Only items whose resale window has opened."},"all_experiences_only":{"type":"boolean","default":false,"description":"Only items sold in any experience — the ones a buyer can list in their own game and keep the 40% affiliate commission on."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Recent UGC Limited releases"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":416,"tokensAfter":416},{"name":"get_player_holdings","fixed":{"name":"get_player_holdings","description":"What a tracked player holds: their most valuable positions plus the totals the leaderboard ranks them on. total_copies counts copies; total_items counts distinct live Limited assets across the full portfolio, or is null if unavailable. Follows rank_players, which returns the Roblox user id this needs. A player who set their inventory private comes back marked private rather than empty.","inputSchema":{"type":"object","required":["roblox_user_id"],"properties":{"limit":{"type":"integer","default":10,"maximum":100,"minimum":1},"roblox_user_id":{"type":"string","description":"Numeric Roblox user id, e.g. \"27170037\"."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"One collector's public portfolio"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"get_release_cohorts","fixed":{"name":"get_release_cohorts","description":"UGC release cohorts: every finite UGC Limited release from one week or month taken together, how many copies they put on sale, and what share has been claimed (bought or taken free) so far and at each age. Use it to compare how fast recent drops sell through against earlier ones; compare cohorts at the same age_days. Pass creator_id for one creator's releases.","inputSchema":{"type":"object","properties":{"grain":{"enum":["week","month"],"type":"string","default":"month","description":"Group releases by week or by month."},"months":{"type":"integer","default":6,"maximum":24,"minimum":1,"description":"How many months of releases to cover, newest first."},"creator_id":{"type":"string","description":"Numeric creator id to scope to that creator. Omit for the whole market."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"How fast UGC releases get claimed"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":239,"tokensAfter":239},{"name":"get_started_guide","fixed":{"name":"get_started_guide","description":"RBX Invest's guide to making Robux with Roblox Limiteds, with one guide per experience level. Level 1 is for someone who knows nothing about Roblox: what Robux and Limiteds are. Level 2 is how a flip makes Robux and what it costs. Level 3 is a first flip: screening a release, break-even, the holding period, pricing an exit. Level 4 is for people who already resell: a Reseller Terminal routine, undercut alerts, lowering entry cost with the Roblox Plus discount and the 40% affiliate share, buying ","inputSchema":{"type":"object","properties":{"step":{"enum":[1,2,3],"type":"integer","description":"A beginner step: 1 get Limiteds, 2 sell them, 3 reinvest the profit. Ignored when level is passed."},"level":{"enum":[1,2,3,4,5],"type":"integer","description":"The reader's experience: 1 new to Limiteds, 2 knows they exist, 3 understands the market, 4 has resold for profit, 5 trades every day. Returns that level's guide."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Get Started guide to Roblox Limiteds, by experience level"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":279,"tokensAfter":279},{"name":"search_items","fixed":{"name":"search_items","description":"Search the Roblox Limited catalog by name, or screen the whole market when no query is given. Returns asset id, RAP, RAP across every copy sold, the lowest resale listing, stock left, the move in RAP over 1/7/14/30 days and lifetime in both percent and Robux, sales counts and sales value per window, the typical sale price over 30/90/180 days, and the item score. Rank by any of those with sort, and bound any of them with filters to ask a question with more than one condition in it. Prices are Rob","inputSchema":{"type":"object","properties":{"sort":{"enum":["rap","totalValue","price","creatorPrice","growth1d","growth7d","growth14d","growth30d","growthall","growthRs1d","growthRs7d","growthRs14d","growthRs30d","growthRsall","score","copies","copiesLeft","percentSold","percentRemaining","volume1d","volume7d","volume14d","volume30d","demandGrowth1d","demandGrowth7d","demandGrowth14d","demandGrowth30d","salesTotal1d","salesTotal7d","salesTotal14d","salesTotal30d","movingAvg30d","movingAvg90d","movingAvg180d"],"type":"string","default":"rap","description":"Metric to rank by. Size: rap, totalValue, price (cheapest copy from any seller), creatorPrice (the creator's price for a new copy; only items still on sale from the creator have one), copies, copiesLeft, percentRemaining (stock still unsold, the reading the site shows), percentSold (its complement), score. Movement: growth1d/7d/14d/30d/all (percent) and growthRs1d/7d/14d/30d/all (the same move in Robux); only items that sold inside the window have one, and the \"all\" pair measures against the creator's original price. Trading: volume1d/7d/14d/30d (sales) and salesTotal1d/7d/14d/30d (Robux moved). Price level: movingAvg30d/90d/180d, the typical sale price over that span in Robux (the median of the daily average sale prices, which a few sales at an odd price cannot drag the way they drag RAP; free claims at 0 R$ are left out and an item that only moved by claim reads 0); only items that sold in the span have one."},"limit":{"type":"integer","default":10,"maximum":100,"minimum":1},"query":{"type":"string","description":"Part of an item name, e.g. \"valkyrie\". Omit to rank or screen the catalog."},"offset":{"type":"integer","default":0,"maximum":10000,"minimum":0,"description":"Rows to skip, for reading past the first page (at most 10,000). The reply reports the total that matched; for more rows than paging reaches, narrow the filters or use https://rbxinvest.com/catalog.json."},"filters":{"type":"array","items":{"type":"object","required":["metric"],"properties":{"max":{"type":"number"},"min":{"type":"number"},"metric":{"enum":["rap","totalValue","price","creatorPrice","growth1d","growth7d","growth14d","growth30d","growthall","growthRs1d","growthRs7d","growthRs14d","growthRs30d","growthRsall","score","copies","copiesLeft","percentSold","percentRemaining","volume1d","volume7d","volume14d","volume30d","demandGrowth1d","demandGrowth7d","demandGrowth14d","demandGrowth30d","salesTotal1d","salesTotal7d","salesTotal14d","salesTotal30d","movingAvg30d","movingAvg90d","movingAvg180d"],"type":"string"}},"additionalProperties":false},"maxItems":6,"description":"Ranges narrowing the catalog, ANDed together. Each is in the unit its metric is shown in: Robux for rap/totalValue/price/creatorPrice/salesTotal*/growthRs*/movingAvg*, percent for growth*/percentRemaining/percentSold, a count for copies/copiesLeft/volume*. An item with no value for a bounded metric is excluded."},"direction":{"enum":["desc","asc"],"type":"string","default":"desc"},"item_type":{"enum":["all","regular_limited","ugc_limited"],"type":"string","default":"all","description":"regular_limited is a classic Limited, ugc_limited a UGC one."},"asset_type":{"enum":["AvatarBackground","BackAccessory","DressSkirtAccessory","DynamicHead","EmoteAnimation","EyebrowAccessory","EyelashAccessory","EyeMakeup","Face","FaceAccessory","FaceMakeup","FrontAccessory","Gear","HairAccessory","Hat","JacketAccessory","LeftShoeAccessory","LipMakeup","NeckAccessory","PantsAccessory","ShirtAccessory","ShortsAccessory","ShoulderAccessory","SweaterAccessory","TShirtAccessory","WaistAccessory"],"type":"string","description":"Only this kind of item, e.g. Hat, HairAccessory, FaceAccessory, BackAccessory, Face, Gear. Omit for every kind."},"resellable":{"type":"boolean","description":"true = only items that can be resold at all (no Roblox resale restriction); false = only ones that cannot. Omit for both."},"availability":{"enum":["all","for_sale","resale_only","off_sale","sold_out","available"],"type":"string","default":"all","description":"Sale status. for_sale = the creator still sells new copies at the original price; resale_only = only other players sell it; off_sale = the creator stopped early and nobody is reselling; sold_out = every copy minted and nobody is reselling. \"available\" is an older name for for_sale. Each row carries its sales_status."},"forty_eligible":{"type":"boolean","description":"true = only items sold in any experience, which a buyer can sell in their own game and keep the 40% affiliate commission on; false = only items that are not. Omit for both."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search or rank Roblox Limiteds"},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":1447,"tokensAfter":1447}],"toolsChanged":20,"tokensSaved":0,"todo":[{"tool":"find_articles","params":["limit"]},{"tool":"find_deals","params":["limit"]},{"tool":"get_collection","params":["page","limit"]},{"tool":"get_community_holdings","params":["limit","direction"]},{"tool":"get_community_market_history","params":["days"]},{"tool":"get_item_details","params":["trend_days"]},{"tool":"get_new_limiteds","params":["sort","limit","availability","max_age_days"]},{"tool":"get_player_holdings","params":["limit"]},{"tool":"rank_creators","params":["limit","direction"]},{"tool":"rank_players","params":["limit"]},{"tool":"search_items","params":["limit","direction"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}