# Marktplaats & 2dehands (remote · marktplaats-mcp.jaspnerd.dev)

Search Marktplaats & 2dehands (NL/BE classifieds), vet sellers, compare prices, use your account.

- Trust score: 72/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- remote · `marktplaats-mcp.jaspnerd.dev`: 72/100 (this document), [markdown](https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2.md), [page](https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2)
- pypi · `marktplaats-mcp`: 80/100, [markdown](https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp.md), [page](https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp)

## Channel facts

- Endpoint: `https://marktplaats-mcp.jaspnerd.dev/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Endpoint Security**: 74/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 76/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2615 tokens (~290/item across 9 items; 8 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the Marktplaats & 2dehands MCP server?

Marktplaats & 2dehands is a hosted endpoint at https://marktplaats-mcp.jaspnerd.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http jasp-nerd-marktplaats-mcp 'https://marktplaats-mcp.jaspnerd.dev/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "jasp-nerd-marktplaats-mcp": {
      "url": "https://marktplaats-mcp.jaspnerd.dev/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "jasp-nerd-marktplaats-mcp": {
      "type": "http",
      "url": "https://marktplaats-mcp.jaspnerd.dev/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.jasp-nerd-marktplaats-mcp]
url = "https://marktplaats-mcp.jaspnerd.dev/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "jasp-nerd-marktplaats-mcp": {
      "type": "remote",
      "url": "https://marktplaats-mcp.jaspnerd.dev/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add jasp-nerd-marktplaats-mcp --url 'https://marktplaats-mcp.jaspnerd.dev/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  jasp-nerd-marktplaats-mcp:
    url: "https://marktplaats-mcp.jaspnerd.dev/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "jasp-nerd-marktplaats-mcp": {
      "Transport": "http",
      "Url": "https://marktplaats-mcp.jaspnerd.dev/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add jasp-nerd-marktplaats-mcp -t streamable-http -u 'https://marktplaats-mcp.jaspnerd.dev/mcp'
```

### Other

```json
{
  "mcpServers": {
    "jasp-nerd-marktplaats-mcp": {
      "type": "http",
      "url": "https://marktplaats-mcp.jaspnerd.dev/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 72, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-09-19 (score 71)

First indexed and scored.

## MCP tools (8)

### `search_listings` (~658 tokens)

Search listings

Search second-hand listings on Marktplaats or 2dehands with filters for
category, category-specific attributes, price range, condition, delivery,
recency and distance from a postal code. Paid promotions are filtered out
unless include_sponsored is set.

Input parameters:

- `attributes`: Category-specific filters as {filter: value}, using the labels from list_category_filters, e.g. {'Merk': 'Gazelle', 'Framehoogte': '57 tot 61 cm'} or {'Bouwjaar': '2018-2022', 'Kilometerstand': '-100…
- `category`: Top-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
- `compact` (boolean): True (default) returns a token-efficient shortlist; False adds description, seller, images and attributes per listing.
- `condition`: Filter by item condition.
- `delivery`: 'shipping' for ads that can be shipped, 'pickup' for collection.
- `distance_km`: Max distance from postcode in kilometers (needs postcode).
- `exclude`: Drop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
- `include_sponsored` (boolean): Include paid promotions (DAGTOPPER/TOPADVERTENTIE) and the sponsored top block.
- `include_unpriced` (boolean): Keep ads without an asking price (free, 'Bieden' without amount) when sorting by price or filtering on price. Default False: those ads would otherwise sort as €0 and flood the cheapest pages.
- `language`: 2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
- `limit` (integer): Results per page (1-100).
- `offered_since_days`: Only listings placed within the last N days.
- `offset` (integer): Pagination: pass 'next_offset' from the previous result.
- `postcode`: Dutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
- `price_from`: Minimum price in euros.
- `price_to`: Maximum price in euros.
- `query` (string): Free-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).
- `sort_by` (string): 'relevance' (default), 'date' (newest first with desc), 'price' or 'location'.
- `sort_order` (string): 'asc' or 'desc'.
- `subcategory`: Subcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output parameters:

- `limit` (integer)
- `listings` (array)
- `next_offset`
- `note`
- `offset` (integer)
- `returned` (integer)
- `site` (string)
- `suggested_query`
- `total_count` (integer)

### `get_listing_details` (~133 tokens)

Get listing details

Fetch the full advertisement: complete description, attributes, status
(active/closed), exact listing time, view and favorite counts, bidding state,
shipping, images, and seller signals such as response rate and account age.

Input parameters:

- `listing_id` (string, required): Listing id from search results (e.g. 'm2400641485') or a pasted marktplaats.nl / 2dehands.be listing URL.
- `max_images` (integer): Max image URLs to return (0-20).
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).

Output parameters:

- `attributes`
- `bidding`
- `buy_it_now`
- `car_attributes`
- `category_id`
- `city`
- `country`
- `delivery`
- `description`
- `favorited_count`
- `id` (string)
- `image_count`
- `image_urls`
- `listed_at`
- `note`
- `postcode`
- `price`
- `price_euros`
- `price_type`
- `reserved`
- `seller`
- `since`
- `site` (string)
- `status`
- `title`
- `url` (string)
- `view_count`

### `get_seller_profile` (~105 tokens)

Get seller profile

Look up a seller's trust signals: verified bank account / identity /
phone number, business verification, payment method, review score and count.
Null means the marketplace does not report that signal. Use
list_seller_listings to see everything the seller currently offers.

Input parameters:

- `seller_id` (integer, required): Numeric seller id from a listing's seller field.
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).

Output parameters:

- `average_score`
- `bank_account_verified`
- `business_verified`
- `identification_verified`
- `low_bid_threshold_percent`
- `number_of_reviews`
- `payment_method`
- `phone_number_verified`
- `seller_id` (integer)
- `site` (string)

### `list_seller_listings` (~194 tokens)

List a seller's listings

Everything one seller currently has on offer. Useful to spot dealers
posing as private sellers, duplicate or suspicious ads, and bundle deals.

Input parameters:

- `compact` (boolean): True (default) returns a token-efficient shortlist; False adds description, seller, images and attributes per listing.
- `limit` (integer): Results per page (1-100).
- `offset` (integer): Pagination: pass 'next_offset' from the previous result.
- `query` (string): Optional text to filter the seller's ads.
- `seller_id` (integer, required): Numeric seller id.
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).
- `sort_by` (string): 'relevance' (default), 'date' (newest first with desc), 'price' or 'location'.
- `sort_order` (string): 'asc' or 'desc'.

Output parameters:

- `limit` (integer)
- `listings` (array)
- `next_offset`
- `note`
- `offset` (integer)
- `returned` (integer)
- `site` (string)
- `suggested_query`
- `total_count` (integer)

### `list_categories` (~68 tokens)

List categories

Browse the category tree (shared by marktplaats.nl and 2dehands.be) to find
names/ids for search_listings' category and subcategory filters.

Input parameters:

- `parent`: Omit for all top-level categories; pass a top-level category name or id for its subcategories.

Output parameters:

- `categories` (array)
- `level` (string)
- `parent`

### `list_category_filters` (~198 tokens)

List category filters

Discover the filters available for a category or search (brand, frame
height, mileage, fuel, RAM, ...), with their valid values and how many ads
match each. Pass the labels to search_listings' 'attributes' parameter.

Input parameters:

- `category`: Top-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
- `max_options` (integer): Max values per filter, most common first (1-200).
- `query` (string): Optional search text; needed when no category is given.
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).
- `subcategory`: Subcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output parameters:

- `category`
- `filters` (array)
- `note`
- `query`
- `site` (string)
- `subcategory`

### `check_new_listings` (~543 tokens)

Check new listings

Poll for listings placed after a given moment (newest first, paid promotions
filtered out). Stateless: store the returned 'cursor' and pass it as 'since'
on the next call. When the result is truncated the cursor only advances to
the oldest ad returned, so nothing is ever skipped.

Input parameters:

- `attributes`: Category-specific filters as {filter: value}, using the labels from list_category_filters, e.g. {'Merk': 'Gazelle', 'Framehoogte': '57 tot 61 cm'} or {'Bouwjaar': '2018-2022', 'Kilometerstand': '-100…
- `category`: Top-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
- `condition`: Filter by item condition.
- `delivery`: 'shipping' for ads that can be shipped, 'pickup' for collection.
- `distance_km`: Max distance from postcode in kilometers (needs postcode).
- `exclude`: Drop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
- `language`: 2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
- `limit` (integer): Max new listings to return (1-100).
- `postcode`: Dutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
- `price_from`: Minimum price in euros.
- `price_to`: Maximum price in euros.
- `query` (string): Free-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
- `since`: ISO 8601 timestamp (e.g. '2026-07-15T09:00:00Z'); only listings placed after this moment are returned. Defaults to 24 hours ago. Pass the 'cursor' from the previous call to poll incrementally.
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).
- `subcategory`: Subcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output parameters:

- `cursor` (string)
- `listings` (array)
- `new_count` (integer)
- `note`
- `since` (string)
- `site` (string)
- `truncated`

### `analyze_prices` (~540 tokens)

Analyze prices

Price statistics (min, quartiles, median, max, mean) over the most relevant
asking prices for a search, plus the cheapest matches. Free, bidding-only and
reserved ads are excluded and outliers beyond 1.5x the interquartile range are
trimmed. Most reliable with a subcategory plus attributes (e.g. subcategory
'Mobiele telefoons | Apple iPhone', attributes {'Model': 'iPhone 15',
'Opslagcapaciteit': '128 GB'}) instead of free text, which drags in accessories.

Input parameters:

- `attributes`: Category-specific filters as {filter: value}, using the labels from list_category_filters, e.g. {'Merk': 'Gazelle', 'Framehoogte': '57 tot 61 cm'} or {'Bouwjaar': '2018-2022', 'Kilometerstand': '-100…
- `category`: Top-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
- `condition`: Filter by item condition.
- `delivery`: 'shipping' for ads that can be shipped, 'pickup' for collection.
- `distance_km`: Max distance from postcode in kilometers (needs postcode).
- `exclude`: Drop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
- `language`: 2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
- `postcode`: Dutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
- `price_from`: Minimum price in euros.
- `price_to`: Maximum price in euros.
- `query` (string, required): Free-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
- `sample_size` (integer): Listings to sample, most relevant first (10-100).
- `site` (string): Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium).
- `subcategory`: Subcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output parameters:

- `cheapest` (array)
- `excluded_outliers`
- `max`
- `mean`
- `median`
- `min`
- `note`
- `p25`
- `p75`
- `query` (string)
- `sample_size` (integer)
- `site` (string)
- `total_count` (integer)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2#diagnostics

## Score history

- 2026-09-21: 72
- 2026-09-20: 72
- 2026-09-19: 71

## Common questions

### What is the Marktplaats & 2dehands MCP server?

Marktplaats & 2dehands is an MCP server listed in the public MCP registry as io.github.jasp-nerd/marktplaats-mcp. Search Marktplaats & 2dehands (NL/BE classifieds), vet sellers, compare prices, use your account. This page covers its hosted endpoint (https://marktplaats-mcp.jaspnerd.dev/mcp).

### Is the Marktplaats & 2dehands MCP server safe to use?

Marktplaats & 2dehands scores 72 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Marktplaats & 2dehands MCP server expose?

Marktplaats & 2dehands exposes 8 tools: search_listings, get_listing_details, get_seller_profile, list_seller_listings, list_categories, and 3 more. Their descriptions and schemas cost roughly 2,439 tokens of context every time the server is loaded.

### Does the Marktplaats & 2dehands MCP server require authentication?

No. We connected to Marktplaats & 2dehands without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Marktplaats & 2dehands MCP server still maintained?

Marktplaats & 2dehands is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://marktplaats-mcp.jaspnerd.dev/mcp
- Repository: https://github.com/jasp-nerd/marktplaats-mcp
- Website: https://marktplaats-mcp.jaspnerd.dev/
- Changelog RSS feed: https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2.xml
- Changelog JSON feed: https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2.json
- HTML version of this page: https://verifymcp.io/servers/jasp-nerd-marktplaats-mcp/marktplaats-mcp-2
