Auction buying and stocking intelligence. Triggers: "what should I buy at auction", "auction run list check", "pre-auction analysis", "check these VINs before I bid", "hot sellers in my area", "what's turning fast", "stocking recommendations", "should I bid on this", "avoid list", "what to stock", "auction prep", "what's selling quick", "best vehicles to buy right now", "slow movers to avoid", "inventory mix check", "category gap analysis", auction buying decisions, inventory stocking strategy, demand-to-supply analysis.
From marketcheck-cowork-pluginnpx claudepluginhub marketcheckhub/marketcheck-cowork-pluginThis skill uses the workspace's default tool permissions.
references/outcomes.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Calculates TAM/SAM/SOM using top-down, bottom-up, and value theory methodologies for market sizing, revenue estimation, and startup validation.
→ Full procedure: read _references/profile-loading.md
Parse marketcheck-profile.md → extract: dealer_id, dealer_type, zip/postcode, state/region, country, radius, target_margin, recon_cost, floor_plan_per_day, max_dom, aging_threshold, cpo_program, cpo_certification_cost. If missing: tell user to run /onboarding.
Country routing: US = all tools. UK = search_uk_active_cars only — no VIN decode, no ML, no get_sold_summary. Hot List and Avoid List are US-only. Pre-Auction VIN Check works for UK with comp-based pricing. → Full matrix: _references/country-routing.md
Confirm: "Using profile: [dealer.name], [ZIP/Postcode], [Country]"
All preference values (margin, recon cost, floor plan cost, etc.) are read from the profile. Do not re-ask.
The primary user is an independent dealer (owner, buyer, or inventory manager) who attends 2-3 auctions per week and needs to make bid/no-bid decisions in minutes. They are buying 15-40 vehicles per month at auction and every bad buy ties up floor plan capital for 60-90+ days. The difference between data-driven and gut-instinct buying is $2,000-$3,000 per unit in avoided losses on slow movers.
The following fields are loaded from the dealer profile automatically:
| Field | Source | Default |
|---|---|---|
| Dealer's ZIP / Postcode | location.zip or location.postcode | — |
| Dealer's state / region | location.state or location.region | — |
| Dealer type | dealer.dealer_type | Independent |
| Target retail margin % | preferences.target_margin_pct | 15% |
| Average recon cost per unit | preferences.recon_cost_estimate | $1,500 |
| Dealer ID | dealer.dealer_id | — |
| Radius for retail market | preferences.default_radius_miles | 75 miles |
| Floor plan cost per day | preferences.floor_plan_cost_per_day | $35 |
| Max acceptable days to retail | preferences.max_acceptable_dom | 45 days |
get_sold_summary which is not available for UK. Pre-Auction VIN Check and Category Gap Finder work for UK with comp-based pricing.field|offset|limit|min_count — e.g., body_type|0|20|1 means "facet on body_type, starting at offset 0, return up to 20 buckets, minimum 1 document per bucket."CPO Max Bid = CPO predicted_retail × (1 - margin%) - recon_cost - cpo_certification_cost. The cert cost is separate from recon.market-demand-agent output format — the agent returns structured results; pass it the state, dealer_type, zip, radius, and date range. It handles get_sold_summary calls internally.Use this when a dealer says "check these VINs from tomorrow's auction" or "should I bid on this one." This is the most time-critical workflow — the dealer may be standing at the auction lane with 60 seconds to decide.
Decode the VIN(s) — For each VIN provided, call mcp__marketcheck__decode_vin_neovin with vin. Extract: year, make, model, trim, body_type, drivetrain, engine, fuel_type, transmission. Present a one-line summary per vehicle so the dealer can confirm they are looking at the right unit.
Get predicted retail values (dual) — For each VIN, make TWO calls to mcp__marketcheck__predict_price_with_comparables:
vin, miles, zip, dealer_type matching the dealer's type from profile. This is the price the dealer can expect to retail at.dealer_type. This provides cross-market context.
Record both predicted prices.2a. CPO pricing (if dealer has CPO program) — If dealer.cpo_program=true in profile and the vehicle is eligible for certification (used, recent model year, reasonable mileage):
predict_price_with_comparables with is_certified=true plus the dealer's dealer_type to get the CPO retail value.IF CERTIFIED:
CPO Retail Value: $XX,XXX | CPO Max Bid: $XX,XXX (includes $X,XXX cert cost)
IF SOLD AS-IS:
Standard Retail: $XX,XXX | Standard Max Bid: $XX,XXX
Check local supply — For each VIN, call mcp__marketcheck__search_active_cars with year, make, model, trim (from decode), zip (dealer's zip), radius (dealer's radius, default 75), car_type=used, stats=price,dom, rows=5, sort_by=dom, sort_order=asc. Record: total matching listings (supply count), median price, average DOM of active competing units.
Check recent sold velocity — Call mcp__marketcheck__get_sold_summary with make, model, state (dealer's state), inventory_type=Used, date_from (first of prior month), date_to (last of prior month). Record: sold_count and average_days_on_market.
Calculate the verdict — For each VIN, compute:
Assign a verdict:
Show both market values:
Franchise Retail Value: $XX,XXX
Independent Retail Value: $XX,XXX
Your Retail (based on [type]): $XX,XXX ← used for Max Bid
Max Bid: $XX,XXX
Use this when a dealer asks "what's selling fast in my area" or "what should I actively look for at auction this week."
Multi-agent approach: Use the market-demand-agent to generate the hot list with all demand analytics in a single agent call.
Use the Agent tool to spawn the marketcheck-cowork-plugin:market-demand-agent agent with this prompt:
Generate stocking hot list for state=[state], dealer_type=[dealer_type], zip=[zip], radius=[radius], target_margin_pct=[target_margin], recon_cost=[recon_cost]. Date range: [first day of prior month] to [last day of prior month]. Sections: hot_list.
The agent will:
get_sold_summary (by average_days_on_market)get_sold_summary (by sold_count)search_active_cars (rows=0)Cross-reference with current lot: If the dealer's lot data is available (from a prior lot-scanner run or dealer_id), check which hot-list models the dealer already has. Flag gaps.
Present the top 10 as: Rank, Make/Model, Avg Days to Sell, Monthly Sold Volume, Active Supply, D/S Ratio, Franchise Median, Independent Median, Max Auction Buy Price ([dealer_type] basis), On Your Lot?
Use this when a dealer asks "is my inventory mix right" or "what categories am I missing."
Get dealer's current inventory mix — Call mcp__marketcheck__search_active_cars with dealer_id (dealer's ID), facets=body_type|0|20|1,make|0|30|1,fuel_type|0|10|1, rows=0. This returns the dealer's current inventory breakdown by body type, make, and fuel type without returning individual listings.
Get market demand by category — Call mcp__marketcheck__get_sold_summary with state (dealer's state), inventory_type=Used, ranking_dimensions=body_type, ranking_measure=sold_count, ranking_order=desc, date_from (first of prior month), date_to (last of prior month), top_n=15.
Get market demand by make — Call mcp__marketcheck__get_sold_summary with state (dealer's state), inventory_type=Used, ranking_dimensions=make, ranking_measure=sold_count, ranking_order=desc, date_from (first of prior month), date_to (last of prior month), top_n=25.
Calculate alignment score — For each body type and make:
Deliver the gap analysis — Present two tables:
Use this when a dealer asks "what should I stay away from" or "which vehicles are sitting." This prevents the most costly mistake: buying a vehicle that sits for 90+ days eating floor plan.
Get slowest-turning models — Call mcp__marketcheck__get_sold_summary with state (dealer's state), inventory_type=Used, ranking_dimensions=make,model, ranking_measure=average_days_on_market, ranking_order=desc, top_n=20, date_from (first of prior month), date_to (last of prior month). These are models with the longest average time to sell.
Get supply context — For each of the top 20 slow movers, call mcp__marketcheck__search_active_cars with make, model, state (use seller_state or zip+radius), car_type=used, stats=price,dom, rows=0. Record: active supply count and average DOM of current unsold inventory.
Get sold volume — Call mcp__marketcheck__get_sold_summary with state (dealer's state), inventory_type=Used, ranking_dimensions=make,model, ranking_measure=sold_count, ranking_order=asc, top_n=20, date_from (first of prior month), date_to (last of prior month). Cross-reference with step 1 — models that are both slow AND low-volume are the most dangerous.
Calculate holding cost exposure — For each slow mover:
Deliver the Avoid List — Present a table: Make/Model, Avg Days to Sell, Monthly Sold Volume, Active Supply, Oversupply Ratio, Est. Floor Plan Cost, Est. Depreciation Loss, Total Holding Cost. Add a header warning: "Buying any of these models costs an estimated $X,XXX-$X,XXX in holding costs before you sell it. This directly reduces — or eliminates — your front-end gross."
→ After assembling results, read references/outcomes.md to frame recommendations with quantified business impact, KPI benchmarks, and action-to-outcome guidance.
Always present results in this structure, optimized for quick reading on a phone at the auction:
For Pre-Auction VIN Checks (single VIN — keep it fast):
VERDICT: BUY / CAUTION / PASS
Vehicle: 2022 Toyota RAV4 XLE AWD — 34,200 mi
VIN: XXXXXXXXXXXXXXXXX
Max Bid: $24,800
Retail Value: $30,500
Expected Turn: 28 days
Demand/Supply: 3.8 (strong)
Projected Net: $2,950
Supply: 14 competing units within 75 mi
Median asking: $31,200
Fastest comp sold in 18 days
For Pre-Auction VIN Checks (batch — table format):
| VIN (last 8) | Vehicle | Verdict | Max Bid | Retail Value | Turn Days | D/S Ratio | Projected Net |
|---|---|---|---|---|---|---|---|
| PA012345 | 22 RAV4 XLE | BUY | $24,800 | $30,500 | 28d | 3.8 | $2,950 |
| KB987654 | 21 Accord EXL | CAUTION | $21,200 | $26,800 | 42d | 2.1 | $1,600 |
| LM456789 | 20 Altima SR | PASS | $14,100 | $18,900 | 58d | 1.2 | $780 |
For Hot List / Avoid List:
Present as a numbered list with the most important models first. Include the Max Auction Buy Price for hot list items and the Estimated Holding Cost for avoid list items. Keep it to 10 items max — the dealer needs to remember these while walking the auction lanes.
For Category Gap Analysis:
Two short lists: "Buy More Of" and "Slow Down On" with the market vs dealer share numbers and a concrete unit count recommendation (e.g., "Add 3 more SUVs, reduce sedans by 2").