# Marktplaats & 2dehands

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

- name: io.github.jasp-nerd/marktplaats-mcp
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.jasp-nerd%2Fmarktplaats-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.jasp-nerd%2Fmarktplaats-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

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


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-31d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 8 of 8 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 4,019 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 72 resolved packages
- pass `deps.mcp_sdk_version`: mcp 2.2.0, no known advisory
- pass `deps.resolvable`: marktplaats-mcp@0.2.0 resolved: 72 packages

- tools: 8, about 4,019 tokens to load them all
- tool set hash: 84e1f3858f36a26fd0a92d5c0ba3ab35
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.jasp-nerd/marktplaats-mcp.svg)](https://protogrid.dev/servers/io.github.jasp-nerd/marktplaats-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- pypi marktplaats-mcp@0.2.0: resolved, 71 dependencies, MCP SDK mcp 2.2.0

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://marktplaats-mcp.jaspnerd.dev/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- pypi marktplaats-mcp@0.2.0 secrets: MARKTPLAATS_COOKIE, TWEEDEHANDS_COOKIE

## Tools (8)

- `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.
- `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.
- `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.
- `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.
- `list_categories`: Browse the category tree (shared by marktplaats.nl and 2dehands.be) to find
names/ids for search_listings' category and subcategory filters.
- `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.
- `list_seller_listings`: Everything one seller currently has on offer. Useful to spot dealers
posing as private sellers, duplicate or suspicious ads, and bundle deals.
- `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.
