Marktplaats & 2dehands
PYPI · MARKTPLAATS-MCP · 2 COMPONENTS · SCANNED SEP 20
Search Marktplaats & 2dehands (NL/BE classifieds), vet sellers, compare prices, use your account.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 1 of 23 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 0 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- 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. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management80
- Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 10 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Marktplaats & 2dehands MCP server?
Marktplaats & 2dehands runs locally as a PyPI package, launched with uvx marktplaats-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · marktplaats-mcp
claude mcp add jasp-nerd-marktplaats-mcp -- uvx marktplaats-mcp
{
"mcpServers": {
"jasp-nerd-marktplaats-mcp": {
"command": "uvx",
"args": [
"marktplaats-mcp"
]
}
}
} {
"servers": {
"jasp-nerd-marktplaats-mcp": {
"command": "uvx",
"args": [
"marktplaats-mcp"
]
}
}
} codex mcp add jasp-nerd-marktplaats-mcp -- uvx marktplaats-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jasp-nerd-marktplaats-mcp": {
"type": "local",
"command": [
"uvx",
"marktplaats-mcp"
],
"enabled": true
}
}
} openclaw mcp add jasp-nerd-marktplaats-mcp --command uvx --arg marktplaats-mcp
mcp_servers:
jasp-nerd-marktplaats-mcp:
command: "uvx"
args: ["marktplaats-mcp"] {
"McpServers": {
"jasp-nerd-marktplaats-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"marktplaats-mcp"
]
}
}
} assistant mcp add jasp-nerd-marktplaats-mcp -t stdio -c uvx -a marktplaats-mcp
{
"mcpServers": {
"jasp-nerd-marktplaats-mcp": {
"command": "uvx",
"args": [
"marktplaats-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 −3
- Stability: pass → 0.80 functional
- 19 Sept 26 +2
- Tool safety: pass → unverified ▼ security
- Stability: 0.97 → unverified ▼ security
- Stability: 0.97 → pass security
- Schema quality: 202 → 290 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: unverified → 100 ▲ functional
- MCP protocol: Implements a current MCP spec version (2026-07-28). functional
- Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
- Package version: 0.1.1 → 0.2.0 functional
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- 13 Sept 26 −3
- Stability: pass → 0.80 functional
- 12 Sept 26 +1
- Stability: 0.97 → pass security
- 10 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/marktplaats-mcp@0.2.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 23 packages
| Packages resolved | 23 |
|---|---|
| Stale | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
analyze_prices Analyze prices ~540
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| cheapest | array | – | – |
| excluded_outliers | – | – | – |
| max | – | – | – |
| mean | – | – | – |
| median | – | – | – |
| min | – | – | – |
| note | – | – | – |
| p25 | – | – | – |
| p75 | – | – | – |
| query | string | yes | – |
| sample_size | integer | yes | – |
| site | string | yes | – |
| total_count | integer | yes | – |
No examples provided.
check_new_listings Check new listings ~543
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | yes | – |
| listings | array | yes | – |
| new_count | integer | yes | – |
| note | – | – | – |
| since | string | yes | – |
| site | string | yes | – |
| truncated | – | – | – |
No examples provided.
get_listing_details Get listing details ~133
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.
| Name | Type | Req | Description |
|---|---|---|---|
| listing_id | string | yes | 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). |
| Name | Type | Req | Description |
|---|---|---|---|
| attributes | – | – | – |
| bidding | – | – | – |
| buy_it_now | – | – | – |
| car_attributes | – | – | – |
| category_id | – | – | – |
| city | – | – | – |
| country | – | – | – |
| delivery | – | – | – |
| description | – | – | – |
| favorited_count | – | – | – |
| id | string | yes | – |
| image_count | – | – | – |
| image_urls | – | – | – |
| listed_at | – | – | – |
| note | – | – | – |
| postcode | – | – | – |
| price | – | – | – |
| price_euros | – | – | – |
| price_type | – | – | – |
| reserved | – | – | – |
| seller | – | – | – |
| since | – | – | – |
| site | string | yes | – |
| status | – | – | – |
| title | – | – | – |
| url | string | yes | – |
| view_count | – | – | – |
No examples provided.
get_seller_profile Get seller profile ~105
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.
| Name | Type | Req | Description |
|---|---|---|---|
| seller_id | integer | yes | Numeric seller id from a listing's seller field. |
| site | string | – | Which marketplace: marktplaats (Netherlands) or 2dehands (Belgium). |
| Name | Type | Req | Description |
|---|---|---|---|
| average_score | – | – | – |
| bank_account_verified | – | – | – |
| business_verified | – | – | – |
| identification_verified | – | – | – |
| low_bid_threshold_percent | – | – | – |
| number_of_reviews | – | – | – |
| payment_method | – | – | – |
| phone_number_verified | – | – | – |
| seller_id | integer | yes | – |
| site | string | yes | – |
No examples provided.
list_categories List categories ~68
Browse the category tree (shared by marktplaats.nl and 2dehands.be) to find names/ids for search_listings' category and subcategory filters.
| Name | Type | Req | Description |
|---|---|---|---|
| parent | – | – | Omit for all top-level categories; pass a top-level category name or id for its subcategories. |
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | yes | – |
| level | string | yes | – |
| parent | – | – | – |
No examples provided.
list_category_filters List category filters ~198
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| category | – | – | – |
| filters | array | yes | – |
| note | – | – | – |
| query | – | – | – |
| site | string | yes | – |
| subcategory | – | – | – |
No examples provided.
list_seller_listings List a seller's listings ~194
Everything one seller currently has on offer. Useful to spot dealers posing as private sellers, duplicate or suspicious ads, and bundle deals.
| Name | Type | Req | Description |
|---|---|---|---|
| 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 | yes | 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'. |
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | yes | – |
| listings | array | yes | – |
| next_offset | – | – | – |
| note | – | – | – |
| offset | integer | yes | – |
| returned | integer | yes | – |
| site | string | yes | – |
| suggested_query | – | – | – |
| total_count | integer | yes | – |
No examples provided.
search_listings Search listings ~658
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.
| Name | Type | Req | Description |
|---|---|---|---|
| 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | yes | – |
| listings | array | yes | – |
| next_offset | – | – | – |
| note | – | – | – |
| offset | integer | yes | – |
| returned | integer | yes | – |
| site | string | yes | – |
| suggested_query | – | – | – |
| total_count | integer | yes | – |
No examples provided.
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 PyPI package (marktplaats-mcp).
Is the Marktplaats & 2dehands MCP server safe to use?
Marktplaats & 2dehands scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. 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.
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 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.