Cyclesite Mcp Server

io.github.TomalarrrrPublished by GitHub account Tomalarrrrv2.4.4Updated Oct 30, 2026

Search, value, sell, and trust-check used bikes on Cyclesite, the UK's used-bicycle marketplace.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingFinanceBusiness & Commerce

Overview

AI-generated overview

Connects an assistant to Cyclesite, the UK used-bicycle marketplace, for searching listings, valuing bikes, drafting and publishing ads, and checking…

What you can do
  • Search and browse live UK used-bike listings by brand, category, city, price, condition or distance, and read full listing details or similar alternatives.
  • Look up catalogue data: brands, models, spec sheets, size guides, buying guides and side-by-side comparisons.
  • Estimate prices: valuations, seller ask/floor/ceiling suggestions, market index, market health, depreciation and price trends.
  • Assess trust: grade a listing's quality and check a frame serial against a stolen-bike registry.
  • Sell and communicate: draft a listing, publish it, list your own listings, mark one sold, read enquiries and messages, reply, make an enquiry, reserve a listing and save a search for email alerts.
  • Expose…
When to use it
Useful when someone is buying or selling a used bicycle in the UK and wants live inventory, price guidance, spec comparisons or a stolen-bike check. Also fits assistants that need marketplace search results in the OpenAI deep-research shape.
Requirements
Runs as a remote endpoint or as a local npm package over stdio. No key needed for the public tier; an optional CYCLESITE_API_KEY raises rate limits, and CYCLESITE_API_URL overrides the base URL for partner staging. Write tools require the user to connect a Cyclesite account via OAuth and return a consent URL when unauthorized. Network access is required.
Before you install
Write tools publish listings, send enquiries, reply to buyers, mark items sold, reserve listings and create email alerts on the user's account, and publishing may return a Stripe Checkout URL for a fee. Valuations are aggregates of asking prices, not confirmed sales. Listing text, questions and messages are user-written and flagged as untrusted content; treat them as data, not instructions. The stolen-bike check is rate-limited per serial.

Installation

In SourceWeft

  1. Open Cyclesite Mcp Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.Tomalarrrr%2Fcyclesite-mcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "cyclesite": {
      "type": "http",
      "url": "https://www.cyclesite.co.uk/api/mcp-server"
    }
  }
}

README

This repository has no README.

Tools

34

search_bikes

Search bikes for sale

Search 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'.

ParameterscitybrandcategorymaxPriceminPricecondition

get_recent_listings

Browse recent listings

What'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.

ParameterslimitcategorymaxPrice

get_listing_detail

Get listing detail

Full 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.

Parametersslugrequired

find_similar_listings

Find similar listings

Given 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'.

Parametersslugrequired

search_by_location

Search by location

Find Cyclesite listings within a radius of a UK town, city or postcode district (the first half of a postcode, e.g. 'BS1', 'M20'). A full postcode is cut to its district; coordinates are not accepted. Radius capped at 50 miles. Returns up to 10 listings ordered by distance, rounded to the mile, and `searchedFrom` naming the place measured from. Live UK marketplace data. Example: 'used bikes within 25 miles of Leicester' or 'road bikes near LE10'.

ParameterslimitplacerequiredcategorymaxPriceradiusMiles

recommend_bike_for_budget

Recommend bikes for budget

Curated 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'.

ParameterscitylimituseCasecategorybudgetGbprequired

list_brands

List brands

Paginated 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?'.

Parametersqlimitoffset

list_models_for_brand

List models for brand

Models 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").

ParameterslimitoffsetcategorybrandSlugrequired

get_model_info

Get model info

Cyclesite 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'.

Parametersbrandrequiredmodelrequired

get_spec_sheet

Get spec sheet

Aggregated 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?'.

Parametersyearbrandrequiredmodelrequired

compare_bikes

Compare bikes

Side-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'.

Parametersbikesrequired

get_size_guide

Get size guide

Frame-size recommendation for a rider's height and bike category, the same chart Cyclesite publishes at /bike-size-calculator (height to inside leg to seat tube), refined by real UK listing data where riders' declared heights are available. Children are sized by wheel diameter instead and the tool says so. Example: 'I'm 178cm — what road-bike size do I need?'.

ParameterscategoryheightCmrequired

get_valuation

Get valuation

What a used UK bike is worth right now, Cyclesite's flagship tool. Returns median, range, a measured price-by-model-year curve, confidence level, and comparable active listings. Pass `year` when the user names one and the answer is resolved against that model year's own measured median and confidence interval, instead of the all-years median. Sourced from real UK market prices, the last-advertised asking prices bikes are listed for (not confirmed sale prices), refreshed nightly. Example: 'what's a 2022 Trek Domane SL 6 worth?'.

Parametersyearbrandrequiredmodelrequired

suggest_listing_price

Suggest listing price

For a seller about to list: suggested ask, floor, and ceiling for their bike's brand+model[+year][+condition] on the UK market. Same measured UK used-price data as get_valuation but framed as seller guidance. Pass `year` when the seller names one — the ask is then anchored on that model year's own median rather than the all-years median. Example: 'I'm selling a 2021 Specialized Allez in good condition — what should I ask?'.

Parametersyearbrandrequiredmodelrequiredcondition

get_market_index

Get market index

Current 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 real UK market prices.

Takes no parameters.

get_market_health

Get market health

Buyer'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.

Takes no parameters.

get_depreciation

Get depreciation leaders

Brands ranked by how well (or poorly) they hold their value, from Cyclesite's measured UK used-price data. Returns top N brands by % retained vs new RRP. Example: 'which bike brands hold their value best?'.

Parameterssortlimit

grade_listing_quality

Grade listing quality

Categorical 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).

Parametersslugrequired

draft_listing

Draft a listing

Sell-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'.

ParameterscityyearbrandrequiredmodelrequiredgroupsetwillShipconditionframeSizeknownIssuesitemCondition

check_stolen

Check stolen

Check if a UK bicycle is reported stolen by serial number. Cyclesite checks an international stolen-bike registry and theft reports filed by riders, 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, checked on every call. If the user has found a bike rather than bought one, send them to https://www.cyclesite.co.uk/stolen-bikes/found, where they can check the frame number and leave the owner a message themselves.

Parametersserialrequired

report_stolen

How to report a stolen bike

Step-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?'.

Parametersbrandmodelserial

get_buying_guide

Get buying guide

Search 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'.

Parameterslimitqueryrequired

publish_listing

Publish a listing

Publish 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' (listing is free, no payment needed) or step:'payment_required' with a Stripe Checkout URL. 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 directs user to upload URL → user uploads → call again → step:'live' → seller receives a confirmation email with a 24h undo link.

ParameterscityyearbrandmodeltitledraftIdisEbikecategorygroupsetpriceGbpwillShipcondition+12 more

list_my_listings

My listings

Show the authenticated user's Cyclesite listings (draft / active / sold). Requires OAuth scope `listings:read`. Example: 'how are my listings doing?'.

Parameterslimitstatus

mark_as_sold

Mark sold

Mark a Cyclesite listing as sold, optionally with the final sale price, where it sold and the date it sold. Requires OAuth scope `listings:manage`. Example: 'mark my Trek Domane as sold for £1,750 on Facebook last Saturday'.

ParameterssoldOnlistingIdrequiredsaleVenuesalePriceGbp

get_my_enquiries

My enquiries

Show buyer enquiries on the authenticated user's Cyclesite listings. Requires OAuth scope `listings:read`. Example: 'any messages about my Trek?'.

ParameterslimitlistingId

get_my_messages

My messages

Read the buyer's own Cyclesite message threads and any seller replies. Call with no args to list your conversations; pass a threadId to read one thread's messages. Pairs with make_enquiry (which saves the enquiry to your inbox). Requires OAuth scope `listings:read`. Example: 'did the seller of that Trek reply yet?'.

ParameterslimitthreadId

respond_to_enquiry

Reply to enquiry

Reply 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'.

ParametersanswerrequiredenquiryIdrequired

fetch

Fetch (OpenAI deep-research)

OpenAI deep-research / company-knowledge compatibility. Fetch the full document for a Cyclesite listing id (returned by the search tool). Returns { id, title, text, url, metadata } — text is a plain-prose summary of the listing's description and specs, suitable for direct quoting in deep-research answers.

Parametersidrequired

make_enquiry

Send a buyer enquiry

Send an enquiry to a Cyclesite seller on the buyer's behalf. It's saved to the buyer's Cyclesite inbox and the seller is notified. Per-buyer-per-listing daily cap (2/day) prevents spam. Read the seller's reply with get_my_messages. 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'.

ParametersmessagerequiredlistingIdrequired

reserve_listing

Reserve listing (24h hold)

Hold a Cyclesite listing for 24 hours so other buyers can't claim it while the user decides. The hold is free and advisory: the seller isn't obligated to honour it, so message the seller to confirm. We never take a deposit or any payment for a bike; the buyer and seller arrange payment between them. Requires OAuth scope `listings:manage`. Example: 'put a hold on that Trek for me, I want to view it Saturday'.

ParameterslistingIdrequired

Version history

2
  1. v2.4.4LatestOct 29, 2026
  2. v2.4.3Sep 16, 2026

Score

75% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • License10 pts

    Declare a license in the repository or the registry entry.