Read-only MCP server for marktplaats.nl: search listings, specs, price, delivery
Three well-named, read-only tools with complete Zod schemas and detailed descriptions. All tools follow verb_noun pattern (search_, get_). Descriptions are substantive (150 - 250 chars), explaining what each tool does, when to use it, and what it returns. Input schemas are fully typed with enums, ranges, and parameter descriptions. Error handling uses custom MarktplaatsError class with actionable messages. Tool annotations (readOnlyHint, openWorldHint) are present. Main gaps: output schemas are not formally documented (only visible via JSON response structure), no pagination guidance for search_listings despite accepting limit/offset, and error recovery paths could be more explicit.
Fetch full detail for one listing by id or URL. Adds what search does not carry: shipping carrier and transit days, view and favourite counts, listed-since date, seller tenure, category path, bidding and reserved state, and the full description.
Fetch a seller's public profile by numeric seller id, as returned in search results. Useful for judging whether a seller is a private person or a shop.
Search marktplaats.nl (Dutch classifieds) for products. Returns price, condition, delivery, category specs, location and seller for each hit. delivery is "shipping", "pickup", "both" (seller offers either) or "unknown". Paid placements are included and flagged with isSponsored. Prices are euros; priceEur is null when a listing takes bids or names no price.
Output schemas not formally documented. Responses are JSON-serialized but no TypeScript interfaces or JSON Schema definitions are visible in the source. LLMs cannot plan downstream operations without knowing what fields to expect.
search_listings accepts limit/offset but no guidance on pagination strategy or total count. Description should state: 'Returns up to limit results; use offset for paging. No total count provided, iterate until fewer results returned than limit.'
Error handling returns MarktplaatsError messages but no recovery guidance. E.g., if a listing ID is invalid, the error should suggest: 'Invalid listing ID. Try search_listings() to find valid IDs.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
get_seller accepts both numeric and string sellerId but no guidance on which to prefer or how to resolve ambiguity. Description should clarify: 'Numeric seller ID preferred; string IDs are coerced to numbers.'
search_listings result limit capped at 100 but no guidance on why or what to do if user needs more. Description should state: 'Max 100 results per call to prevent context window exhaustion. Use offset to paginate.'