get_seller_items
List paginated items for sale by a specific seller, including title, price, brand, size, condition, and photo URL. Browse a seller's full catalogue after finding them.
Instructions
List all items currently for sale by a specific seller, paginated. Returns the same fields as search_items (title, price, brand, size, condition, photo URL, item URL). Useful for browsing a seller's full catalogue after finding them via search_items or get_seller.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sellerId | Yes | Numeric Vinted user ID | |
| country | No | Country site where the seller is registered | fr |
| limit | No | Items per page, 1–100 | |
| page | No | Page number starting at 1 |
Implementation Reference
- src/mcp.ts:72-84 (schema)Tool schema definition: name, description, and inputSchema for 'get_seller_items'
name: 'get_seller_items', description: 'List all items currently for sale by a specific seller, paginated. Returns the same fields as search_items (title, price, brand, size, condition, photo URL, item URL). Useful for browsing a seller\'s full catalogue after finding them via search_items or get_seller.', inputSchema: { type: 'object', properties: { sellerId: { type: 'integer', description: 'Numeric Vinted user ID' }, country: { type: 'string', enum: COUNTRIES, default: 'fr', description: 'Country site where the seller is registered' }, limit: { type: 'integer', default: 20, description: 'Items per page, 1–100' }, page: { type: 'integer', default: 1, description: 'Page number starting at 1' }, }, required: ['sellerId'], }, }, - src/mcp.ts:14-14 (registration)Import of the opSellerItems handler function
import { opSellerItems } from './ops/seller-items.js'; - src/mcp.ts:222-222 (registration)Dispatcher case that routes 'get_seller_items' tool calls to opSellerItems handler
case 'get_seller_items': result = await opSellerItems(c, a as any); break; - src/ops/seller-items.ts:5-10 (handler)Handler (opSellerItems) that delegates to the endpoint function with defaults
export async function opSellerItems( client: VintedClient, args: { sellerId: number; country?: Country; limit?: number; page?: number }, ): Promise<SearchResult> { return getSellerItems(client, args.sellerId, args.country ?? 'fr', args.limit ?? 20, args.page ?? 1); } - src/client/endpoints.ts:205-235 (helper)Actual endpoint helper: calls Vinted API /api/v2/catalog/items with seller_id filter, maps response to SearchResult format
export async function getSellerItems( client: VintedClient, sellerId: number, country: Country = 'fr', perPage = 20, page = 1, ): Promise<SearchResult> { const qs = new URLSearchParams(); qs.set('seller_id', String(sellerId)); qs.set('per_page', String(Math.min(perPage, 100))); qs.set('page', String(page)); qs.set('order', 'newest_first'); const data = await client.apiGet<{ items: any[]; pagination?: { total_entries?: number } }>( country, `/api/v2/catalog/items?${qs.toString()}`, ); const items: Item[] = (data.items ?? []).map((i) => ({ id: Number(i.id), title: String(i.title ?? ''), price: String(i.price?.amount ?? i.price ?? ''), currency: String(i.price?.currency_code ?? i.currency ?? ''), brand: i.brand_title ?? i.brand, size: i.size_title ?? i.size, condition: i.status, url: i.url ?? `https://${DOMAIN[country]}/items/${i.id}`, favouriteCount: i.favourite_count, photoUrl: i.photo?.url ?? i.photos?.[0]?.url, seller: { id: sellerId, username: String(i.user?.login ?? '') }, })); return { totalCount: data.pagination?.total_entries ?? items.length, page, items }; }