MCP server for Marktplaats.nl and 2dehands.be: search, monitor and manage Dutch and Belgian classifieds from Claude, ChatGPT, Cursor and any MCP client.
Good tool definitions with clear naming, comprehensive schemas, and detailed parameter descriptions. Strong composability for marketplace search workflows. Main gaps: missing error handling guidance for write operations (send_message, place_bid, favorites), no tool annotations (readOnlyHint, destructiveHint, idempotentHint), and output schemas not formally documented in code. Read-only tools (11/19) are well-designed; account/write tools (8/19) lack recovery guidance and confirmation patterns despite having 'confirm' parameters.
Analyze prices
Check new listings
Get account status
Get conversation
Get listing details
Get seller profile
List categories
List category filters
Write operations (send_message, place_bid, save_favorite, remove_favorite) lack error recovery guidance. No descriptions explain what errors can occur, when to retry, or how to undo partial failures. The 'confirm' parameter is present but error handling for declined/failed operations is missing.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are not present in registered tool definitions. FastMCP supports these via MCP type annotations, but they are not used in the server code. This prevents clients from understanding tool safety profiles without parsing descriptions.
Output schemas are not formally documented in the tool definitions. While response structures can be inferred from the code (via models.py and parse functions), the tool registration in server.py does not declare return types. LLMs cannot reliably plan downstream operations without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 82 | 2026-07-28+ | v2 |
List conversations
List favorites
List my bids
List my listings
List saved searches
List seller listings
Place bid
Remove favorite
Save favorite
Search listings
Send message
Account/write tools (send_message, place_bid, save_favorite, remove_favorite) lack user-facing error messages. When an operation fails (e.g., 'Bid rejected: too low'), the code should return actionable error text, not just a generic exception. Currently no recovery hints or self-correction suggestions are provided.
Pagination parameters (limit, offset) lack constraints in descriptions. No min/max bounds are documented, forcing LLMs to guess valid ranges. 'limit' should state '1-100' explicitly.
Account authentication credentials are required but the mechanism for passing them to account tools is not visible in the provided source. Code references 'AccountCredentials' and 'AccountClient' but does not show how users authenticate or inject credentials server-side. This could indicate credentials are being passed as parameters (violating secret-injection pattern) or authentication is missing entirely.