Cyclesite. The UKs Trusted bike marketplace
MCP server for Cyclesite — UK's used-bike marketplace. Live UK inventory search, sold-price valuation from real completed sales, aggregated stolen-bike check, brand/model catalogue, plus full write-side over OAuth: publish, mark sold, message sellers, save alerts, reserve listings.
https://bikes--cyclesite.run.tools
How to connect
-
Smithery (hosted)
1. Open https://smithery.ai/servers/cyclesite/bikes 2. Click Connect and complete OAuth in your MCP client (Claude, Cursor, VS Code, etc.) 3. MCP endpoint: https://bikes--cyclesite.run.tools
Tools (31)
-
search_bikesSearch live UK used-bike listings on Cyclesite (the UK's used bicycle marketplace). Filter by brand, category, city, price range, and condition. Returns up to 5 active listings with specs and listing URLs. Live data — refreshed continuously as new bikes are listed. Example queries: 'a Trek Domane in Manchester under £2,000', 'gravel bike, very good condition, near Bristol'.
-
get_recent_listingsWhat's new on Cyclesite right now — up to 10 of the freshest active UK listings, refreshed every 15 minutes. Use when the user asks 'what's new today?' or 'any new road bikes this week?' rather than for a specific filter. Optional category + maxPrice filters. Live data.
-
get_listing_detailFull details for a specific bike listing on Cyclesite — specs, condition, frame number presence, photos, delivery, seller's city. Provide the URL slug returned by search_bikes or get_recent_listings. Example: after the user says 'tell me more about that 2022 Trek Domane', call this with the slug from the prior result.
-
find_similar_listingsGiven a Cyclesite listing slug, return up to 5 similar active listings (same category, ±25% price, same brand or frame size weighted higher). Use when the user is interested in one bike and wants alternatives. Example: 'show me bikes like that one'.
-
search_by_locationFind Cyclesite listings within a radius of a UK location (lat/lng). Radius capped at 50 miles. Returns up to 10 listings ordered by distance. Live UK marketplace data. Example: 'used bikes within 25 miles of LE10 0AA' (geocode the postcode first, then call this).
-
recommend_bike_for_budgetCurated picks from Cyclesite's live UK inventory for a budget and intent. Prefers higher-engagement listings. Returns up to 5 picks with a one-line rationale each. Example queries: 'a road bike for £1,500 for weekend rides', 'best e-MTB I can buy under £3,000', 'commuter bike in London under £400'.
-
list_brandsPaginated UK bike-brand catalogue from Cyclesite, ordered by stock level. Use to validate a brand name, surface options to a user, or paginate the catalogue. Stock counts are returned as bands (none / 1-5 / 6-25 / 26-100 / 100+) — Cyclesite doesn't expose precise per-brand inventory. Example: 'what brands of e-bike are available?'.
-
list_models_for_brandModels for a brand on Cyclesite (paginated). Returns model names, year ranges, in-stock flag. Example: "what Trek road bikes are available?" → list_brands(q:"Trek") → list_models_for_brand(brandSlug:"trek", category:"road").
-
get_model_infoCyclesite catalogue entry for a brand+model: category, year range, AI-generated description, key specs, market summary. Reference data — refreshed when models are added or specs change. Example: 'tell me about the Specialized Allez'.
-
get_spec_sheetAggregated spec sheet for a brand+model[+year], derived from Cyclesite's live UK inventory plus the catalogue record. Returns the most-common frame material, wheel size, groupset, brakes, weight, and (for e-bikes) motor and battery specs. Example: 'what groupset does a Canyon Endurace usually have?'.
-
compare_bikesSide-by-side comparison of up to 3 bikes (each by brand+model[+year]). Returns spec sheets and valuations together so the user can pick. Reuses get_spec_sheet + get_valuation server-side. Example: 'compare a Trek Domane SL 6 against a Specialized Roubaix Comp'.
-
get_size_guideFrame-size recommendation for a rider's height and bike category, sourced from Cyclesite's real UK listings (riders' declared heights against frame sizes they bought). Falls back to industry-standard charts when the dataset is thin. Example: 'I'm 178cm — what road-bike size do I need?'.
-
get_valuationWhat a used UK bike is worth right now — Cyclesite's flagship tool. Returns median, range, condition breakdown, confidence level, 90-day price trend, and comparable active listings. Sourced from real completed UK sales (sold-price data, refreshed nightly), not asking prices. The data Cyclesite is uniquely the source for. Example: 'what's a 2022 Trek Domane SL 6 worth?'.
-
suggest_listing_priceFor a seller about to list: suggested ask, floor, and ceiling for their bike's brand+model[+condition] on the UK market. Same Cyclesite sold-price corpus as get_valuation but framed as seller guidance. Example: 'I'm selling a 2021 Specialized Allez in good condition — what should I ask?'.
-
get_market_indexCurrent UK used-bike market prices by category, from Cyclesite's nightly index. Returns median + range per category (road, mtb, gravel, e-bike, etc.). Example: 'how does the UK used-bike market look right now?'. Refreshed nightly from completed sales.
-
get_market_healthBuyer's-vs-seller's market signal for the UK used-bike market — should the user buy or sell now? Composite indicator from days-to-sell, asking-vs-sold-price spread, and inventory levels. Example: 'is now a good time to buy a road bike?'. Refreshed nightly.
-
get_depreciationBrands ranked by how well (or poorly) they hold their value, from Cyclesite's UK sold-price corpus. Returns top N brands by % retained vs new RRP. Example: 'which bike brands hold their value best?'.
-
get_price_trendsUK used-bike price trends over the last N months by category, from Cyclesite's index series. Example: 'how have road-bike prices changed in 2026?'. Monthly data, refreshed at month-end.
-
grade_listing_qualityCategorical quality grade for a Cyclesite listing (excellent / good / fair / weak) plus up to 2 wins and 2 flags. Helps a buyer assess trustworthiness; helps a seller self-audit. Example: 'is this listing trustworthy?' (provide the slug). Note: returns the *categorical* judgement only, not the underlying score (intentional to avoid gaming).
-
draft_listingSell-side helper: turn a seller's raw facts into a polished Cyclesite listing draft (title, description, suggested price, photo plan). Does NOT publish — for actual publication use publish_listing (requires OAuth). Useful for previewing what a listing would look like. Example: 'help me draft a listing for my 2021 Specialized Allez, very good condition, in Bristol'.
-
check_stolenCheck if a UK bicycle is reported stolen by serial number. Cyclesite aggregates lookups across UK stolen-bike databases — the unique data we own. Per-serial rate-limited (3/hour) to prevent enumeration. Example: 'is the bike with serial WTU123456 reported stolen?'. Live data — cross-references multiple registries on every call.
-
report_stolenStep-by-step guidance for reporting a stolen UK bike: police, insurance, listing alerts. Returns a 5-step checklist plus the official Cyclesite report URL. Example: 'my bike was just stolen, what do I do?'.
-
get_buying_guideSearch Cyclesite's expert buying guides (24+ articles by cycling-journalism authors). Returns up to 3 matching guides with title, excerpt, difficulty, reading time, and URL. Use for educational queries that don't need live inventory. Example: 'how do I choose a bike size?', 'tips for buying a used e-bike'.
-
publish_listingPublish a Cyclesite listing on the user's behalf. Multi-step: first call (no draftId) returns a phone-friendly photo upload URL; once 3+ photos are uploaded, the next call returns either step:'live' (during launch promo, no fee) or step:'payment_required' with a Stripe Checkout URL for the £10.99 listing fee. Idempotent — keep calling with the same draftId until step:'live'. Requires OAuth scope `listings:publish`. Example flow: user says 'sell my Trek Domane' → call publish_listing → assistant
-
list_my_listingsShow the authenticated user's Cyclesite listings (draft / active / sold). Requires OAuth scope `listings:read`. Example: 'how are my listings doing?'.
-
mark_as_soldMark a Cyclesite listing as sold (optionally with the final sale price). Requires OAuth scope `listings:manage`. Example: 'mark my Trek Domane as sold for £1,750'.
-
get_my_enquiriesShow buyer enquiries on the authenticated user's Cyclesite listings. Requires OAuth scope `listings:read`. Example: 'any messages about my Trek?'.
-
respond_to_enquiryReply to a buyer enquiry on the authenticated user's listing. Requires OAuth scope `enquiries:respond`. Example: 'reply to that enquiry — say it's still available, collection only'.
-
save_searchSubscribe the user to alerts for new Cyclesite listings matching a filter — the AI assistant will then proactively notify them when a matching bike appears (price drop or fresh listing). Requires OAuth scope `listings:read` (read-only on data, but this is technically a write — it creates a SavedSearch row on the user's account). Examples: 'let me know when a Trek Domane SL 6 in Manchester under £2,000 appears', 'alert me to any e-MTB drops below £2,500 in Yorkshire'. Each user is capped at 50 ac
-
make_enquirySend an enquiry to a Cyclesite seller on the buyer's behalf — Cyclesite becomes the messaging layer for the AI conversation. Per-buyer-per-listing daily cap (2/day) prevents spam. The seller is emailed; the buyer's reply appears via get_my_enquiries. Requires OAuth scope `enquiries:respond` (note: the scope name is shared with seller-side replies). Example: 'message the seller of that Trek and ask if they'd take £1,400 collection only in Manchester next Saturday'.
-
reserve_listingHold a Cyclesite listing for 24 hours so other buyers can't claim it while the user decides. Optional refundable deposit via Stripe (returned if the user doesn't proceed; applied to the bike if they do). The first UK marketplace where a buyer can COMMIT inside an AI conversation. Requires OAuth scope `listings:manage`. Example: 'put a hold on that Trek for me, I want to view it Saturday'.