secondhand-mcp 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,9 +1,12 @@
1
1
  # Secondhand MCP
2
2
 
3
- A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that lets AI assistants search secondhand marketplaces. Search Facebook Marketplace, eBay, and Depop for used and secondhand items — filter by price, category, condition, size, and color, then get full listing details with photos, descriptions, and seller info.
3
+ A [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that lets AI assistants search secondhand marketplaces. Search Facebook Marketplace, eBay, Depop, and Poshmark for used and secondhand items — filter by price, category, condition, size, and color, then get full listing details with photos, descriptions, and seller info.
4
4
 
5
5
  Works with Claude Desktop, Claude Code, Cursor, and any MCP-compatible client.
6
6
 
7
+ > [!TIP]
8
+ > **Want to skip the setup?** Try [Secondhand MCP Cloud](https://secondhandmcp.com) — the hosted version that connects to Claude.ai and ChatGPT in 30 seconds. No install or Chrome required. Free tier included.
9
+
7
10
  ## Supported Marketplaces
8
11
 
9
12
  | Marketplace | Auth Required | Notes |
@@ -11,6 +14,7 @@ Works with Claude Desktop, Claude Code, Cursor, and any MCP-compatible client.
11
14
  | Facebook Marketplace | No | Location-based search |
12
15
  | eBay | Yes (API keys) | Official Browse API |
13
16
  | Depop | No | Requires Chrome installed |
17
+ | Poshmark | No | Requires Chrome installed |
14
18
 
15
19
  ## Setup
16
20
 
@@ -52,15 +56,15 @@ Add to `~/.claude/.mcp.json`:
52
56
  }
53
57
  ```
54
58
 
55
- eBay and Depop are both optional — if eBay API keys are missing or Chrome isn't installed, those marketplaces are automatically disabled and the rest still work.
59
+ eBay, Depop, and Poshmark are all optional — if eBay API keys are missing or Chrome isn't installed, those marketplaces are automatically disabled and the rest still work.
56
60
 
57
- ### Depop / Chrome Requirement
61
+ ### Depop & Poshmark / Chrome Requirement
58
62
 
59
- Depop uses a headless browser to bypass Cloudflare. If **Google Chrome or Chromium** is installed on your system, Depop is automatically enabled — no config needed. If Chrome isn't found, Depop is silently skipped.
63
+ Depop and Poshmark require a headless browser. If **Google Chrome or Chromium** is installed on your system, both are automatically enabled — no config needed. If Chrome isn't found, they are silently skipped.
60
64
 
61
- On macOS, the first time you search Depop, you may see a system prompt asking to allow Node.js to control Chrome. This is expected — puppeteer needs to launch Chrome in headless mode. Allow it once and it won't ask again.
65
+ On macOS, the first time you search Depop or Poshmark, you may see a system prompt asking to allow Node.js to control Chrome. This is expected — puppeteer needs to launch Chrome in headless mode. Allow it once and it won't ask again.
62
66
 
63
- The browser runs invisibly in the background and only launches when you actually search Depop.
67
+ The browser runs invisibly in the background and only launches when you actually search Depop or Poshmark.
64
68
 
65
69
  ## Configuration
66
70
 
@@ -76,7 +80,7 @@ By default all marketplaces are enabled. To limit which are active, set the `MAR
76
80
  }
77
81
  ```
78
82
 
79
- Valid values: `facebook`, `ebay`, `depop`
83
+ Valid values: `facebook`, `ebay`, `depop`, `poshmark`
80
84
 
81
85
  ### eBay API Keys
82
86
 
@@ -95,29 +99,31 @@ Search for items across marketplaces.
95
99
  | Parameter | Required | Default | Description |
96
100
  |-----------|----------|---------|-------------|
97
101
  | `query` | Yes | | Search terms |
98
- | `marketplace` | No | `facebook` | `facebook`, `ebay`, `depop`, or `all` |
102
+ | `marketplace` | No | `facebook` | `facebook`, `ebay`, `depop`, `poshmark`, or `all` |
99
103
  | `location` | No | `san francisco` | City to search in (Facebook only) |
100
104
  | `maxPrice` | No | | Maximum price |
101
105
  | `minPrice` | No | | Minimum price |
102
106
  | `limit` | No | `20` | Max results |
103
107
  | `showSold` | No | `false` | Include sold items (Facebook only) |
104
108
  | `includeImages` | No | `false` | Include image URLs in output |
105
- | `sort` | No | `relevance` | Sort order (Depop only): `relevance`, `newest`, `most_popular`, `price_low_to_high`, `price_high_to_low` |
106
- | `condition` | No | | Item condition. eBay: `new`, `like_new`, `good`, `fair`. Depop: `new`, `like_new`, `excellent`, `good`, `fair`, `used` |
107
- | `category` | No | | Product category (Depop only): `tops`, `bottoms`, `dresses`, `coats-jackets`, `footwear`, `accessories`, `bags`, `jewellery`, `activewear`, `swimwear` |
108
- | `sizes` | No | | Size filter (Depop only): e.g. `["S", "M", "L"]` or `["US 9", "US 10"]` |
109
- | `colors` | No | | Color filter (Depop only): `black`, `white`, `red`, `blue`, `green`, `yellow`, `orange`, `pink`, `purple`, `brown`, `grey`, `cream`, `multi`, `silver`, `gold` |
109
+ | `sort` | No | `relevance` | Sort order (Depop, Poshmark): `relevance`, `newest`, `most_popular`, `price_low_to_high`, `price_high_to_low` |
110
+ | `condition` | No | | Item condition. eBay: `new`, `like_new`, `good`, `fair`. Depop: `new`, `like_new`, `excellent`, `good`, `fair`, `used`. Poshmark: `new` (NWT), `like_new` (NWOT), `good`, `fair` |
111
+ | `category` | No | | Product category. Depop: `tops`, `bottoms`, `dresses`, `coats-jackets`, `footwear`, `accessories`, `bags`, `jewellery`, `activewear`, `swimwear`. Poshmark: `Jackets_&_Coats`, `Dresses`, `Shoes`, `Accessories`, etc. |
112
+ | `brand` | No | | Brand filter (Poshmark only): e.g. `"Nike"`, `"Levi's"`, `"Gucci"` |
113
+ | `department` | No | | Department filter (Poshmark only): `Women`, `Men`, `Kids` |
114
+ | `sizes` | No | | Size filter (Depop, Poshmark): e.g. `["S", "M", "L"]` or `["US 9", "US 10"]` |
115
+ | `colors` | No | | Color filter (Depop, Poshmark): `black`, `white`, `red`, `blue`, `green`, `yellow`, `orange`, `pink`, `purple`, `brown`, `grey`, `cream`, `multi`, `silver`, `gold` |
110
116
 
111
117
  **Data returned per marketplace:**
112
118
 
113
- | Field | Facebook | eBay | Depop |
114
- |-------|----------|------|-------|
115
- | Title | Yes | Yes | Yes |
116
- | Price | Yes | Yes | Yes |
117
- | Location | City | City, State | — |
118
- | Condition | — | Yes | — |
119
- | Photo count | 1 thumbnail | 1 thumbnail | 1 thumbnail |
120
- | Seller | Yes | Yes | — |
119
+ | Field | Facebook | eBay | Depop | Poshmark |
120
+ |-------|----------|------|-------|----------|
121
+ | Title | Yes | Yes | Yes | Yes |
122
+ | Price | Yes | Yes | Yes | Yes |
123
+ | Location | City | City, State | — | — |
124
+ | Condition | — | Yes | — | — |
125
+ | Photo count | 1 thumbnail | 1 thumbnail | 1 thumbnail | 1 thumbnail |
126
+ | Seller | Yes | Yes | — | — |
121
127
 
122
128
  ### `get_listing_details`
123
129
 
@@ -126,18 +132,18 @@ Get full details for a specific listing using an ID from search results.
126
132
  | Parameter | Required | Default | Description |
127
133
  |-----------|----------|---------|-------------|
128
134
  | `listingId` | Yes | | Listing ID from search results |
129
- | `marketplace` | No | `facebook` | `facebook`, `ebay`, or `depop` |
135
+ | `marketplace` | No | `facebook` | `facebook`, `ebay`, `depop`, or `poshmark` |
130
136
 
131
137
  **Data returned per marketplace:**
132
138
 
133
- | Field | Facebook | eBay | Depop |
134
- |-------|----------|------|-------|
135
- | Description | Yes | Yes | Yes |
136
- | All photos | Yes | Yes | Yes |
137
- | Location | City | City, State, Country | — |
138
- | Seller | Name | Username | Username |
139
- | Delivery types | Yes | — | — |
140
- | Shipping | Yes/No | Service codes | Yes/No |
139
+ | Field | Facebook | eBay | Depop | Poshmark |
140
+ |-------|----------|------|-------|----------|
141
+ | Description | Yes | Yes | Yes | Yes |
142
+ | All photos | Yes | Yes | Yes | Yes |
143
+ | Location | City | City, State, Country | — | — |
144
+ | Seller | Name | Username | Username | Username |
145
+ | Delivery types | Yes | — | — | — |
146
+ | Shipping | Yes/No | Service codes | Yes/No | Always included |
141
147
 
142
148
  ### `list_marketplaces`
143
149
 
@@ -145,11 +151,13 @@ List all enabled marketplaces and their status.
145
151
 
146
152
  ## How It Works
147
153
 
148
- **Facebook Marketplace** — Uses Facebook's internal GraphQL API. Resolves city names to coordinates, then searches with location/price/query filters. No login or browser needed.
154
+ **Facebook Marketplace** — Searches listings by location, price, and query. Resolves city names to coordinates. No login or browser needed.
149
155
 
150
156
  **eBay** — Uses the official eBay Browse API with OAuth 2.0 client credentials. Tokens are cached and auto-refreshed.
151
157
 
152
- **Depop** — Uses a headless browser (puppeteer-core + stealth plugin) to bypass Cloudflare TLS fingerprinting, then calls Depop's internal web API from within the browser context. Returns clean JSON — no DOM scraping. The browser instance is shared across requests.
158
+ **Depop** — Uses a headless browser to search listings with support for category, condition, size, and color filters. The browser instance is shared across requests.
159
+
160
+ **Poshmark** — Uses a headless browser to search listings with support for condition, size, color, sort, and price filters. Poshmark is not location-based — all items ship nationally.
153
161
 
154
162
  ## Development
155
163
 
@@ -168,9 +176,10 @@ npm run build
168
176
 
169
177
  ## Limitations
170
178
 
171
- - **Facebook**: Uses undocumented GraphQL API — may break if Facebook changes `doc_id` values
179
+ - **Facebook**: May break if Facebook changes their frontend
172
180
  - **eBay**: Requires developer API keys (free tier available)
173
- - **Depop**: Requires Chrome/Chromium installed; slower than Facebook/eBay (~5s per search) due to headless browser startup
181
+ - **Depop**: Requires Chrome/Chromium installed; slower than Facebook/eBay (~5s per search)
182
+ - **Poshmark**: Requires Chrome/Chromium installed; no official API so relies on page scraping
174
183
  - **Rate limiting**: Don't make too many requests too quickly
175
184
 
176
185
  ## License
package/dist/browser.d.ts CHANGED
@@ -10,4 +10,3 @@ export declare function findChrome(): string | null;
10
10
  export declare function getBrowser(): Promise<Browser>;
11
11
  export declare function newPage(): Promise<Page>;
12
12
  export declare function closeBrowser(): Promise<void>;
13
- //# sourceMappingURL=browser.d.ts.map
package/dist/browser.js CHANGED
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Shared headless browser management for Cloudflare-protected marketplaces.
4
3
  *
@@ -6,18 +5,11 @@
6
5
  * Requires system Chrome/Chromium installed.
7
6
  * Browser instance is lazy-initialized and shared across requests.
8
7
  */
9
- var __importDefault = (this && this.__importDefault) || function (mod) {
10
- return (mod && mod.__esModule) ? mod : { "default": mod };
11
- };
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.findChrome = findChrome;
14
- exports.getBrowser = getBrowser;
15
- exports.newPage = newPage;
16
- exports.closeBrowser = closeBrowser;
17
- const puppeteer_extra_1 = __importDefault(require("puppeteer-extra"));
18
- const puppeteer_extra_plugin_stealth_1 = __importDefault(require("puppeteer-extra-plugin-stealth"));
19
- const fs_1 = require("fs");
20
- puppeteer_extra_1.default.use((0, puppeteer_extra_plugin_stealth_1.default)());
8
+ import puppeteerExtra from 'puppeteer-extra';
9
+ import StealthPlugin from 'puppeteer-extra-plugin-stealth';
10
+ import { existsSync } from 'fs';
11
+ const puppeteer = puppeteerExtra.default ?? puppeteerExtra;
12
+ puppeteer.use(StealthPlugin());
21
13
  let browser = null;
22
14
  const CHROME_PATHS = {
23
15
  darwin: [
@@ -35,42 +27,50 @@ const CHROME_PATHS = {
35
27
  'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
36
28
  ],
37
29
  };
38
- function findChrome() {
30
+ export function findChrome() {
39
31
  const paths = CHROME_PATHS[process.platform] ?? [];
40
32
  for (const p of paths) {
41
- if ((0, fs_1.existsSync)(p))
33
+ if (existsSync(p))
42
34
  return p;
43
35
  }
44
36
  return null;
45
37
  }
46
- async function getBrowser() {
38
+ export async function getBrowser() {
47
39
  if (browser && browser.connected) {
48
40
  return browser;
49
41
  }
50
- const executablePath = findChrome();
42
+ // In Docker/production, use PUPPETEER_EXECUTABLE_PATH. Fall back to local detection for dev.
43
+ const executablePath = process.env.PUPPETEER_EXECUTABLE_PATH || findChrome();
51
44
  if (!executablePath) {
52
- throw new Error('Chrome/Chromium not found. Install Google Chrome or set a custom path. ' +
45
+ throw new Error('Chrome/Chromium not found. Set PUPPETEER_EXECUTABLE_PATH or install Google Chrome. ' +
53
46
  `Checked: ${(CHROME_PATHS[process.platform] ?? []).join(', ')}`);
54
47
  }
55
- browser = await puppeteer_extra_1.default.launch({
48
+ browser = await puppeteer.launch({
56
49
  headless: true,
57
50
  executablePath,
51
+ protocolTimeout: 60000,
58
52
  args: [
59
53
  '--no-sandbox',
60
54
  '--disable-setuid-sandbox',
61
55
  '--disable-dev-shm-usage',
62
56
  '--disable-gpu',
57
+ '--single-process',
58
+ '--no-zygote',
59
+ '--disable-extensions',
60
+ '--disable-background-networking',
61
+ '--disable-software-rasterizer',
62
+ '--js-flags=--max-old-space-size=256',
63
63
  ],
64
64
  });
65
65
  return browser;
66
66
  }
67
- async function newPage() {
67
+ export async function newPage() {
68
68
  const b = await getBrowser();
69
69
  const page = await b.newPage();
70
70
  await page.setViewport({ width: 1280, height: 800 });
71
71
  return page;
72
72
  }
73
- async function closeBrowser() {
73
+ export async function closeBrowser() {
74
74
  if (browser) {
75
75
  await browser.close().catch(() => { });
76
76
  browser = null;
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AA4BH,gCAMC;AAED,gCAyBC;AAED,0BAKC;AAED,oCAKC;AAzED,sEAAwC;AACxC,oGAA2D;AAE3D,2BAAgC;AAEhC,yBAAS,CAAC,GAAG,CAAC,IAAA,wCAAa,GAAE,CAAC,CAAC;AAE/B,IAAI,OAAO,GAAmB,IAAI,CAAC;AAEnC,MAAM,YAAY,GAA6B;IAC7C,MAAM,EAAE;QACN,8DAA8D;QAC9D,oDAAoD;KACrD;IACD,KAAK,EAAE;QACL,wBAAwB;QACxB,+BAA+B;QAC/B,2BAA2B;QAC3B,mBAAmB;KACpB;IACD,KAAK,EAAE;QACL,4DAA4D;QAC5D,kEAAkE;KACnE;CACF,CAAC;AAEF,SAAgB,UAAU;IACxB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,IAAA,eAAU,EAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,UAAU;IAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,EAAE,CAAC;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,yEAAyE;YACzE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,MAAO,yBAAiB,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,IAAI;QACd,cAAc;QACd,IAAI,EAAE;YACJ,cAAc;YACd,0BAA0B;YAC1B,yBAAyB;YACzB,eAAe;SAChB;KACF,CAAY,CAAC;IAEd,OAAO,OAAO,CAAC;AACjB,CAAC;AAEM,KAAK,UAAU,OAAO;IAC3B,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,YAAY;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,aAAa,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;AAC3D,SAAS,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;AAE/B,IAAI,OAAO,GAAmB,IAAI,CAAC;AAEnC,MAAM,YAAY,GAA6B;IAC7C,MAAM,EAAE;QACN,8DAA8D;QAC9D,oDAAoD;KACrD;IACD,KAAK,EAAE;QACL,wBAAwB;QACxB,+BAA+B;QAC/B,2BAA2B;QAC3B,mBAAmB;KACpB;IACD,KAAK,EAAE;QACL,4DAA4D;QAC5D,kEAAkE;KACnE;CACF,CAAC;AAEF,MAAM,UAAU,UAAU;IACxB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6FAA6F;IAC7F,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,UAAU,EAAE,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,qFAAqF;YACrF,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,MAAO,SAAiB,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,IAAI;QACd,cAAc;QACd,eAAe,EAAE,KAAK;QACtB,IAAI,EAAE;YACJ,cAAc;YACd,0BAA0B;YAC1B,yBAAyB;YACzB,eAAe;YACf,kBAAkB;YAClB,aAAa;YACb,sBAAsB;YACtB,iCAAiC;YACjC,+BAA+B;YAC/B,qCAAqC;SACtC;KACF,CAAY,CAAC;IAEd,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,MAAM,CAAC,GAAG,MAAM,UAAU,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/B,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtC,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;IACtB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -6,4 +6,3 @@
6
6
  * Facebook Marketplace, eBay, Craigslist, and more.
7
7
  */
8
8
  export {};
9
- //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -1,23 +1,21 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
2
  /**
4
3
  * Secondhand MCP Server
5
4
  *
6
5
  * An MCP server for searching secondary marketplaces like
7
6
  * Facebook Marketplace, eBay, Craigslist, and more.
8
7
  */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
11
- const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
12
- const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
13
- const marketplaces_1 = require("./marketplaces");
8
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
9
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
11
+ import { initializeMarketplaces, getMarketplace, getAllMarketplaces, listMarketplaceNames, } from './marketplaces/index.js';
14
12
  // Initialize marketplaces
15
- (0, marketplaces_1.initializeMarketplaces)();
13
+ initializeMarketplaces();
16
14
  // Define available tools
17
15
  const tools = [
18
16
  {
19
17
  name: 'search_marketplace',
20
- description: `Search for items on secondary marketplaces. Supports: ${(0, marketplaces_1.listMarketplaceNames)().join(', ')}. Returns listing ID, title, price, location, and photo count. Facebook: location-based search, no auth. eBay: keyword search with condition filter, requires API keys. Depop: keyword search with filters for sort, condition, category, brands, sizes, colors (requires Chrome). Use get_listing_details with a listing ID for full description, all photos, seller info, and shipping options.`,
18
+ description: `Search for items on secondary marketplaces. Supports: ${listMarketplaceNames().join(', ')}. Returns listing ID, title, price, location, and photo count. Facebook: location-based search, no auth. eBay: keyword search with condition filter, requires API keys. Depop: keyword search with filters for sort, condition, category, brands, sizes, colors (requires Chrome). Poshmark: keyword search with filters for sort, condition, sizes, colors (requires Chrome). Use get_listing_details with a listing ID for full description, all photos, seller info, and shipping options.`,
21
19
  inputSchema: {
22
20
  type: 'object',
23
21
  properties: {
@@ -27,7 +25,7 @@ const tools = [
27
25
  },
28
26
  marketplace: {
29
27
  type: 'string',
30
- description: `Marketplace to search. Options: ${(0, marketplaces_1.listMarketplaceNames)().join(', ')}, or "all" to search all marketplaces`,
28
+ description: `Marketplace to search. Options: ${listMarketplaceNames().join(', ')}, or "all" to search all marketplaces`,
31
29
  default: 'facebook'
32
30
  },
33
31
  location: {
@@ -60,26 +58,34 @@ const tools = [
60
58
  },
61
59
  sort: {
62
60
  type: 'string',
63
- description: 'Sort order (Depop only). Options: relevance, newest, most_popular, price_low_to_high, price_high_to_low',
61
+ description: 'Sort order (Depop, Poshmark). Options: relevance, newest, most_popular, price_low_to_high, price_high_to_low',
64
62
  default: 'relevance'
65
63
  },
66
64
  condition: {
67
65
  type: 'string',
68
- description: 'Item condition filter. eBay: new, like_new, good, fair. Depop: new, like_new, excellent, good, fair, used. Use "any" for no filter.',
66
+ description: 'Item condition filter. eBay: new, like_new, good, fair. Depop: new, like_new, excellent, good, fair, used. Poshmark: new (NWT), like_new (NWOT), good, fair. Use "any" for no filter.',
69
67
  },
70
68
  category: {
71
69
  type: 'string',
72
- description: 'Product category (Depop only). Options: tops, bottoms, dresses, coats-jackets, footwear, accessories, bags, jewellery, activewear, swimwear',
70
+ description: 'Product category. Depop: tops, bottoms, dresses, coats-jackets, footwear, accessories, bags, jewellery, activewear, swimwear. Poshmark: use underscore-separated names like Jackets_&_Coats, Dresses, Shoes, Accessories, etc.',
71
+ },
72
+ brand: {
73
+ type: 'string',
74
+ description: 'Filter by brand (Poshmark only). e.g. "Nike", "Levi\'s", "Gucci"',
75
+ },
76
+ department: {
77
+ type: 'string',
78
+ description: 'Filter by department (Poshmark only). Options: Women, Men, Kids',
73
79
  },
74
80
  sizes: {
75
81
  type: 'array',
76
82
  items: { type: 'string' },
77
- description: 'Filter by sizes (Depop only). Example: ["S", "M", "L"] or ["US 9", "US 10"]',
83
+ description: 'Filter by sizes (Depop, Poshmark). Example: ["S", "M", "L"] or ["US 9", "US 10"]',
78
84
  },
79
85
  colors: {
80
86
  type: 'array',
81
87
  items: { type: 'string' },
82
- description: 'Filter by colors (Depop only). Options: black, white, red, blue, green, yellow, orange, pink, purple, brown, grey, cream, multi, silver, gold',
88
+ description: 'Filter by colors (Depop, Poshmark). Options: black, white, red, blue, green, yellow, orange, pink, purple, brown, grey, cream, multi, silver, gold',
83
89
  }
84
90
  },
85
91
  required: ['query']
@@ -87,7 +93,7 @@ const tools = [
87
93
  },
88
94
  {
89
95
  name: 'get_listing_details',
90
- description: 'Get full details for a specific listing using an ID from search results. Facebook returns: description, all photos, location, seller name, delivery types, shipping availability. eBay returns: description, all photos, location (city/state/country), seller username, shipping service options. Depop returns: description, all photos, seller username, shipping availability.',
96
+ description: 'Get full details for a specific listing using an ID from search results. Facebook returns: description, all photos, location, seller name, delivery types, shipping availability. eBay returns: description, all photos, location (city/state/country), seller username, shipping service options. Depop returns: description, all photos, seller username, shipping availability. Poshmark returns: description, all photos, seller username, shipping availability.',
91
97
  inputSchema: {
92
98
  type: 'object',
93
99
  properties: {
@@ -114,7 +120,7 @@ const tools = [
114
120
  }
115
121
  ];
116
122
  // Create server
117
- const server = new index_js_1.Server({
123
+ const server = new Server({
118
124
  name: 'secondhand-mcp',
119
125
  version: '0.1.0',
120
126
  }, {
@@ -123,11 +129,11 @@ const server = new index_js_1.Server({
123
129
  },
124
130
  });
125
131
  // Handle tool listing
126
- server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => {
132
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
127
133
  return { tools };
128
134
  });
129
135
  // Handle tool calls
130
- server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
136
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
131
137
  const { name, arguments: args } = request.params;
132
138
  switch (name) {
133
139
  case 'search_marketplace': {
@@ -142,6 +148,8 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
142
148
  sort: params.sort,
143
149
  condition: params.condition,
144
150
  category: params.category,
151
+ brand: params.brand,
152
+ department: params.department,
145
153
  sizes: params.sizes,
146
154
  colors: params.colors,
147
155
  };
@@ -149,7 +157,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
149
157
  if (marketplaceName === 'all') {
150
158
  // Search all marketplaces
151
159
  const results = [];
152
- for (const mp of (0, marketplaces_1.getAllMarketplaces)()) {
160
+ for (const mp of getAllMarketplaces()) {
153
161
  try {
154
162
  const result = await mp.search(searchParams);
155
163
  results.push(result);
@@ -174,13 +182,13 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
174
182
  }
175
183
  else {
176
184
  // Search specific marketplace
177
- const marketplace = (0, marketplaces_1.getMarketplace)(marketplaceName);
185
+ const marketplace = getMarketplace(marketplaceName);
178
186
  if (!marketplace) {
179
187
  return {
180
188
  content: [
181
189
  {
182
190
  type: 'text',
183
- text: `Unknown marketplace: ${marketplaceName}. Available: ${(0, marketplaces_1.listMarketplaceNames)().join(', ')}`
191
+ text: `Unknown marketplace: ${marketplaceName}. Available: ${listMarketplaceNames().join(', ')}`
184
192
  }
185
193
  ],
186
194
  isError: true
@@ -222,15 +230,19 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
222
230
  const targetMp = mpName || 'facebook';
223
231
  let details;
224
232
  if (targetMp === 'ebay') {
225
- const ebay = (0, marketplaces_1.getMarketplace)('ebay');
233
+ const ebay = getMarketplace('ebay');
226
234
  details = await ebay.getListingDetails(listingId);
227
235
  }
228
236
  else if (targetMp === 'depop') {
229
- const depop = (0, marketplaces_1.getMarketplace)('depop');
237
+ const depop = getMarketplace('depop');
230
238
  details = await depop.getListingDetails(listingId);
231
239
  }
240
+ else if (targetMp === 'poshmark') {
241
+ const poshmark = getMarketplace('poshmark');
242
+ details = await poshmark.getListingDetails(listingId);
243
+ }
232
244
  else {
233
- const fb = (0, marketplaces_1.getMarketplace)('facebook');
245
+ const fb = getMarketplace('facebook');
234
246
  details = await fb.getListingDetails(listingId);
235
247
  }
236
248
  return {
@@ -245,7 +257,7 @@ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
245
257
  }
246
258
  }
247
259
  case 'list_marketplaces': {
248
- const marketplaces = (0, marketplaces_1.getAllMarketplaces)();
260
+ const marketplaces = getAllMarketplaces();
249
261
  const info = marketplaces.map(mp => ({
250
262
  name: mp.name,
251
263
  displayName: mp.displayName,
@@ -367,7 +379,7 @@ function formatListingDetails(details) {
367
379
  }
368
380
  // Start server
369
381
  async function main() {
370
- const transport = new stdio_js_1.StdioServerTransport();
382
+ const transport = new StdioServerTransport();
371
383
  await server.connect(transport);
372
384
  console.error('Secondhand MCP server started');
373
385
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,GAKrB,MAAM,yBAAyB,CAAC;AAEjC,0BAA0B;AAC1B,sBAAsB,EAAE,CAAC;AAEzB,yBAAyB;AACzB,MAAM,KAAK,GAAW;IACpB;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yDAAyD,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,+dAA+d;QACtkB,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+DAA+D;iBAC7E;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mCAAmC,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,uCAAuC;oBACxH,OAAO,EAAE,UAAU;iBACpB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sEAAsE;oBACnF,OAAO,EAAE,eAAe;iBACzB;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mDAAmD;oBAChE,OAAO,EAAE,EAAE;iBACZ;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,4DAA4D;oBACzE,OAAO,EAAE,KAAK;iBACf;gBACD,aAAa,EAAE;oBACb,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,+FAA+F;oBAC5G,OAAO,EAAE,KAAK;iBACf;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8GAA8G;oBAC3H,OAAO,EAAE,WAAW;iBACrB;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uLAAuL;iBACrM;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gOAAgO;iBAC9O;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,kEAAkE;iBAChF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iEAAiE;iBAC/E;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,kFAAkF;iBAChG;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACzB,WAAW,EAAE,oJAAoJ;iBAClK;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,ucAAuc;QACpd,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2DAA2D;iBACzE;gBACD,WAAW,EAAE;oBACX,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2DAA2D;oBACxE,OAAO,EAAE,UAAU;iBACpB;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,CAAC;SACxB;KACF;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,kDAAkD;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;CACF,CAAC;AAEF,gBAAgB;AAChB,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,sBAAsB;AACtB,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,oBAAoB;AACpB,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,IAgBd,CAAC;YAEF,MAAM,YAAY,GAAiB;gBACjC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,eAAe;gBAC5C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,KAAK;gBAClC,IAAI,EAAE,MAAM,CAAC,IAA4B;gBACzC,SAAS,EAAE,MAAM,CAAC,SAAsC;gBACxD,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC;YAEzD,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;gBAC9B,0BAA0B;gBAC1B,MAAM,OAAO,GAAmB,EAAE,CAAC;gBACnC,KAAK,MAAM,EAAE,IAAI,kBAAkB,EAAE,EAAE,CAAC;oBACtC,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC;4BACX,WAAW,EAAE,EAAE,CAAC,IAAI;4BACpB,OAAO,EAAE,KAAK;4BACd,QAAQ,EAAE,EAAE;4BACZ,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;yBACrB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;yBAClF;qBACF;iBACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,wBAAwB,eAAe,gBAAgB,oBAAoB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;6BACjG;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;oBACtD,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,aAAa,IAAI,KAAK,CAAC;6BAC9E;yBACF;qBACF,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,mBAAmB,WAAW,CAAC,WAAW,KAAK,KAAK,EAAE;6BAC7D;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,IAG1C,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC;oBAC1E,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,UAAU,CAAC;gBACtC,IAAI,OAAuB,CAAC;gBAE5B,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAoB,CAAC;oBACvD,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACpD,CAAC;qBAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAChC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAqB,CAAC;oBAC1D,OAAO,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC;qBAAM,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAwB,CAAC;oBACnE,OAAO,GAAG,MAAM,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACN,MAAM,EAAE,GAAG,cAAc,CAAC,UAAU,CAAwB,CAAC;oBAC7D,OAAO,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;gBAED,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;iBACjE,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,KAAK,EAAE,EAAE,CAAC;oBAC7E,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnC,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,WAAW,EAAE,EAAE,CAAC,WAAW;gBAC3B,YAAY,EAAE,EAAE,CAAC,YAAY;aAC9B,CAAC,CAAC,CAAC;YAEJ,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,8BAA8B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAC/C,KAAK,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAC5F,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACf;iBACF;aACF,CAAC;QACJ,CAAC;QAED;YACE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;gBAC1D,OAAO,EAAE,IAAI;aACd,CAAC;IACN,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,6BAA6B;AAC7B,SAAS,kBAAkB,CAAC,MAAoB,EAAE,MAAoB,EAAE,aAAsB;IAC5F,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,KAAK,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,0BAA0B,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,YAAY,MAAM,CAAC,QAAQ,CAAC,MAAM,kBAAkB,MAAM,CAAC,KAAK,QAAQ,MAAM,CAAC,WAAW,EAAE;QAC5F,gBAAgB,MAAM,CAAC,QAAQ,EAAE;QACjC,EAAE;KACH,CAAC;IAEF,gBAAgB;IAChB,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAC9C,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,KAAK,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,IAAI,aAAa,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAuB,EAAE,MAAoB,EAAE,aAAsB;IAClG,MAAM,KAAK,GAAG;QACZ,0BAA0B,MAAM,CAAC,KAAK,2BAA2B;QACjE,gBAAgB,MAAM,CAAC,QAAQ,EAAE;QACjC,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,CAAC;YAExD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAChD,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,CAC9C,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,yBAAyB;YAEzC,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1D,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,IAAI,aAAa,EAAE,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9D,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,MAAM,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7F,CAAC;gBACH,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAuB;IACnD,MAAM,KAAK,GAAG;QACZ,oBAAoB;QACpB,MAAM,OAAO,CAAC,GAAG,EAAE;QACnB,EAAE;KACH,CAAC;IAEF,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,oBAAoB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QACrD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,eAAe;AACf,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACjD,CAAC;AAED,iBAAiB;AACjB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Base interface for all marketplace implementations
3
3
  */
4
- import { SearchParams, SearchResult, LocationCoordinates } from '../types';
4
+ import { SearchParams, SearchResult, LocationCoordinates } from '../types.js';
5
5
  export interface Marketplace {
6
6
  /** Unique identifier for this marketplace */
7
7
  readonly name: string;
@@ -28,4 +28,3 @@ export declare abstract class BaseMarketplace implements Marketplace {
28
28
  } | null;
29
29
  protected createError(message: string): SearchResult;
30
30
  }
31
- //# sourceMappingURL=base.d.ts.map
@@ -1,10 +1,7 @@
1
- "use strict";
2
1
  /**
3
2
  * Base interface for all marketplace implementations
4
3
  */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.BaseMarketplace = void 0;
7
- class BaseMarketplace {
4
+ export class BaseMarketplace {
8
5
  async healthCheck() {
9
6
  return true;
10
7
  }
@@ -26,5 +23,4 @@ class BaseMarketplace {
26
23
  };
27
24
  }
28
25
  }
29
- exports.BaseMarketplace = BaseMarketplace;
30
26
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/marketplaces/base.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAwBH,MAAsB,eAAe;IAOnC,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAES,UAAU,CAAC,QAAgB;QACnC,wDAAwD;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAES,WAAW,CAAC,OAAe;QACnC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;CACF;AA9BD,0CA8BC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/marketplaces/base.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH,MAAM,OAAgB,eAAe;IAOnC,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAES,UAAU,CAAC,QAAgB;QACnC,wDAAwD;QACxD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACjC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAEvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC/B,CAAC;IAES,WAAW,CAAC,OAAe;QACnC,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;CACF"}
@@ -6,8 +6,8 @@
6
6
  * This gives us clean JSON without any DOM scraping.
7
7
  * No Depop authentication required.
8
8
  */
9
- import { BaseMarketplace } from './base';
10
- import { SearchParams, SearchResult, ListingDetails } from '../types';
9
+ import { BaseMarketplace } from './base.js';
10
+ import { SearchParams, SearchResult, ListingDetails } from '../types.js';
11
11
  export declare class DepopMarketplace extends BaseMarketplace {
12
12
  readonly name = "depop";
13
13
  readonly displayName = "Depop";
@@ -17,4 +17,3 @@ export declare class DepopMarketplace extends BaseMarketplace {
17
17
  healthCheck(): Promise<boolean>;
18
18
  private humanizeSlug;
19
19
  }
20
- //# sourceMappingURL=depop.d.ts.map
@@ -1,4 +1,3 @@
1
- "use strict";
2
1
  /**
3
2
  * Depop Marketplace implementation
4
3
  *
@@ -7,10 +6,8 @@
7
6
  * This gives us clean JSON without any DOM scraping.
8
7
  * No Depop authentication required.
9
8
  */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.DepopMarketplace = void 0;
12
- const base_1 = require("./base");
13
- const browser_1 = require("../browser");
9
+ import { BaseMarketplace } from './base.js';
10
+ import { newPage } from '../browser.js';
14
11
  const DEPOP_HOME = 'https://www.depop.com/';
15
12
  const SEARCH_API = 'https://webapi.depop.com/api/v2/search/products/';
16
13
  const EXTENDED_API = 'https://webapi.depop.com/api/v1/product/by-slug/';
@@ -23,7 +20,7 @@ const CONDITION_MAP = {
23
20
  good: 'used_good',
24
21
  fair: 'used_fair',
25
22
  };
26
- class DepopMarketplace extends base_1.BaseMarketplace {
23
+ export class DepopMarketplace extends BaseMarketplace {
27
24
  name = 'depop';
28
25
  displayName = 'Depop';
29
26
  requiresAuth = false;
@@ -31,7 +28,7 @@ class DepopMarketplace extends base_1.BaseMarketplace {
31
28
  const { query, maxPrice, minPrice, limit = 24, sort, condition, category, sizes, colors } = params;
32
29
  let page;
33
30
  try {
34
- page = await (0, browser_1.newPage)();
31
+ page = await newPage();
35
32
  // Navigate to Depop first to establish Cloudflare cookies/session
36
33
  await page.goto(DEPOP_HOME, { waitUntil: 'networkidle2', timeout: 30000 });
37
34
  // Build API URL
@@ -129,7 +126,7 @@ class DepopMarketplace extends base_1.BaseMarketplace {
129
126
  async getListingDetails(slug) {
130
127
  let page;
131
128
  try {
132
- page = await (0, browser_1.newPage)();
129
+ page = await newPage();
133
130
  // Navigate to product page — JSON-LD has description + images
134
131
  await page.goto(`${PRODUCT_URL}${slug}/`, { waitUntil: 'networkidle2', timeout: 30000 });
135
132
  // Extract JSON-LD structured data (description, images, price, condition)
@@ -199,5 +196,4 @@ class DepopMarketplace extends base_1.BaseMarketplace {
199
196
  .join(' ');
200
197
  }
201
198
  }
202
- exports.DepopMarketplace = DepopMarketplace;
203
199
  //# sourceMappingURL=depop.js.map