JumpLink

troedler

Community JumpLink
Updated

Troedler — search several second-hand marketplaces from one query. A local CLI and MCP server on gjsify/GJS.

troedler

Search several second-hand marketplaces with one query — from your own machine, at your own pace,under your own name.

A trödler works the markets, sifting other people's goods for the one thing worth having. This doesthat across eBay, classified-ad sites, public-authority auctions and collector marketplaces atonce, and tells you where a thing is cheap and where it is not.

It is a command-line tool and an MCP server today, so you can use it from a shell or from an AIassistant. A native GNOME/Adwaita app is planned. It runs onGJS via gjsify — TypeScript, no Noderuntime required.

$ troedler search Bandsäge --max-price 400 --seller private --explain

  1. Metabo BAS 318 Bandsäge — gebraucht, funktionsfähig
     289,00 €  Gebraucht — sehr gut · privat · Versand · 21762 Otterndorf · vor 2 d · unter dem Feld
     https://www.ebay.de/itm/…

Preisband über 23 Angebote: 95,00 € … 240,00 € — 315,00 € — 420,00 € … 890,00 €

eBay: 18 Treffer
    Filter beim Anbieter: maxPrice, sellerType
    Filter hier nachgezogen: —
Kleinanzeigen: übersprungen — Nutzungsbedingungen untersagen automatisierten Abruf, siehe docs/quellen/kleinanzeigen.de.md
Zoll-Auktion: 5 Treffer

What it does

  • One query, every marketplace. Results stay grouped by source, so you can see that a thingcosts 40 € on one and 120 € on another — which is the answer you actually wanted.
  • Is this a good price? A median and a quartile band over what is currently on offer, and acoarse verdict per listing. It describes the field in front of you; it does not appraise.
  • Saved searches with alerts. troedler watch run reports only what is new since last time.
  • Watch single offers. Price changes and "it's gone" for the things you are still thinkingabout.
  • An MCP server, so an assistant can search on your behalf — and can see why a sourcereturned nothing, instead of concluding the item does not exist.

What it will not do

This matters more than the feature list, because it shapes everything else.

troedler runs locally, for one person, and never as a service. There is no hosted crawler, noshared index, no server mode. It reads only what a site's robots.txt permits, at one request at atime with a pause between them, under an honest user agent that says who it is and where tocomplain. It never logs in, never spoofs a browser, never works around a captcha or a bot wall, andnever retries a refusal. When a marketplace says no, that is the answer.

Marketplaces whose terms forbid automated access ship switched off. troedler still offers them —it just will not fetch one for you until you say so: providers enable prints the operator's clausein full and refuses without --acknowledge.

Who carries that is you. troedler is a non-commercial tool that runs on your machine, under youraddress, for your own search. The terms of a service bind the person using it, so switching a sourceon means requesting it in your own name and answering for it yourself. The software neither makesthat call nor hides what it is: it ships the source off, quotes the sentence you would be goingagainst, records the date you agreed, and then stays out of the way. Even switched on, it keepsevery other limit — robots.txt, the pace, the honest user agent, no login, no circumvention.

Nothing about a seller is stored — no names, no ids, no profiles. Phone numbers and e-mailaddresses are stripped from listing text while parsing. Images are linked, never downloaded.

Sources

Every source has a record under docs/quellen/ with its robots.txt findings,the relevant terms clause, and the date a human last checked. troedler terms prints the summaryand troedler robots <url> answers whether a given URL may be fetched and which rule decides.

Source Access Default Notes
eBay (DE) official Browse API on Free developer keys. Listing data cached ≤6 h by licence.
Discogs official API on Works without a token (25 requests/min; 60 with one).
Booklooker official API on Free API key.
Zoll-Auktion, Justiz-Auktion public HTML on German public-authority auctions; robots.txt fully open.
Quoka public HTML on robots.txt open, terms silent on crawling.
markt.de public HTML off Open robots.txt, but the terms forbid automated access.
kleinanzeigen.de public HTML off Terms forbid automated access; robots.txt also blocks the price, radius, sort and seller filters.

Getting started

gjsify install                              # never npm install — see AGENTS.md
gjsify workspace troedler-cli build
gjsify run app/dist/troedler.gjs.mjs check  # what is configured, what is not

Credentials go in .env (copy .env.example) or your shell. Every one is optional: a sourcewithout its key reports itself unconfigured and is skipped — it never fails a search quietly.

As an MCP server, point your client at:

{
  "command": "…/node_modules/.bin/gjsify",
  "args": ["run", "…/app/dist/troedler.gjs.mjs", "mcp"],
  "cwd": "…/app"
}

Tools are read-only unless TROEDLER_MCP_ALLOW_WRITE=1 is set, and the server enforces that bydropping any tool that does not declare itself read-only.

Where things are kept

Nothing is ever written inside this repository.

$XDG_CONFIG_HOME/troedler/config.json which sources are on, your defaults
$XDG_DATA_HOME/troedler/index.db saved searches, seen offers, price history
$XDG_CACHE_HOME/troedler/ HTTP cache, TTL-bound per source

troedler cache purge clears the local record; troedler config path prints where everything is.

Contributing, and objecting

If you operate one of these sites and would rather troedler did not read it, open an issue or writeto the address in the user agent — the host goes on the opt-out list and out of the next release.No argument, no delay.

Licence: MIT. Part of the werkstatt workspace, alongsidepostbote andbauplaner.

MCP Server · Populars

MCP Server · New