Skip to main content
Glama

Marktplaats & 2dehands

Server Details

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

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
jasp-nerd/marktplaats-mcp
GitHub Stars
2
Server Listing
marktplaats-mcp

TDQS

A4.3/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: search, price analysis, new-listing polling, listing details, seller profile, seller listings, categories, and filters. Even the related search and price-analysis tools are unambiguous because one returns listings and the other returns aggregate statistics.

Naming Consistency5/5

All tool names follow the same verb_noun snake_case pattern: list_*, get_*, search_*, check_new_*, analyze_prices. The verbs consistently indicate the action and the objects are descriptive and intuitive.

Tool Count5/5

Eight tools is well-scoped for a marketplace browsing server. Each tool covers a distinct capability needed for discovering, inspecting, and comparing second-hand listings without unnecessary bloat or redundancy.

Completeness5/5

The tool surface covers the full read-only browsing workflow: category exploration, filter discovery, listing search, price analytics, incremental polling, listing details, seller profile, and seller inventory. No significant gaps exist for the stated marketplace domain.

Available Tools

8 tools
analyze_pricesAnalyze pricesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
queryYesFree-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
excludeNoDrop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
categoryNoTop-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
deliveryNo'shipping' for ads that can be shipped, 'pickup' for collection.
languageNo2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
postcodeNoDutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
price_toNoMaximum price in euros.
conditionNoFilter by item condition.
attributesNoCategory-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': '-100000', 'Brandstof': 'Benzine'}. A list means any of those values. Ranges are 'min-max', 'min-' or '-max'.
price_fromNoMinimum price in euros.
distance_kmNoMax distance from postcode in kilometers (needs postcode).
sample_sizeNoListings to sample, most relevant first (10-100).
subcategoryNoSubcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output Schema

ParametersJSON Schema
NameRequiredDescription
maxNo
minNo
p25No
p75No
meanNo
noteNo
siteYes
queryYes
medianNo
cheapestNo
sample_sizeYes
total_countYes
excluded_outliersNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and idempotentHint annotations, the description discloses concrete behavioral details: free, bidding-only and reserved ads are excluded, outliers beyond 1.5x IQR are trimmed, and statistics are based on the most relevant asking prices. This is genuine methodological transparency that an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three dense sentences: the first front-loads the core purpose, the second explains exclusions and outlier trimming, and the third gives a practical reliability tip. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter tool with 100% schema coverage, an output schema, and safety annotations, this description is complete enough. It explains the computation, exclusions, and reliability considerations; return values are covered by the output schema, so no further explanation is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful guidance beyond the schema by recommending subcategory plus attributes over free-text query and explaining that free text drags in accessories. This helps an agent choose better parameter combinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it computes price statistics (min, quartiles, median, max, mean) and returns cheapest matches for a search. This is clearly distinct from sibling tools like search_listings or get_listing_details, so an agent can tell what the tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for how to use the tool: it operates over a search and is most reliable with a subcategory plus attributes rather than free text. It does not explicitly name alternatives or state when not to use it, but the context is strong enough to guide an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_new_listingsCheck new listingsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
limitNoMax new listings to return (1-100).
queryNoFree-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
sinceNoISO 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.
excludeNoDrop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
categoryNoTop-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
deliveryNo'shipping' for ads that can be shipped, 'pickup' for collection.
languageNo2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
postcodeNoDutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
price_toNoMaximum price in euros.
conditionNoFilter by item condition.
attributesNoCategory-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': '-100000', 'Brandstof': 'Benzine'}. A list means any of those values. Ranges are 'min-max', 'min-' or '-max'.
price_fromNoMinimum price in euros.
distance_kmNoMax distance from postcode in kilometers (needs postcode).
subcategoryNoSubcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
siteYes
sinceYes
cursorYes
listingsYes
new_countYes
truncatedNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses critical behavior: the tool is stateless, paid promotions are filtered out, and when results are truncated the cursor deliberately only advances to the oldest returned ad so no listing is skipped. This is exactly the kind of behavioral nuance an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, each earning its place: the core action, the cursor state protocol, and the truncation caveat. It is front-loaded and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high-quality input schema, annotations, and output schema, the description covers the non-obvious usage contract completely: stateless polling, cursor advancement semantics, and the no-skip guarantee. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with rich per-parameter descriptions, so the baseline is 3. The description adds the cursor/since relationship, but most parameter meaning already lives in the schema; no compensation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Poll') and resource ('listings'), and pinpoints the exact behavior: listings placed after a given moment, newest first, paid promotions filtered out. This clearly distinguishes it from general-purpose siblings like search_listings or list_seller_listings, even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear operational context: poll incrementally by storing and passing the returned cursor as 'since'. It does not explicitly state when to prefer this over search_listings or other siblings, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_listing_detailsGet listing detailsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
listing_idYesListing id from search results (e.g. 'm2400641485') or a pasted marktplaats.nl / 2dehands.be listing URL.
max_imagesNoMax image URLs to return (0-20).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
urlYes
cityNo
noteNo
siteYes
priceNo
sinceNo
titleNo
sellerNo
statusNo
biddingNo
countryNo
deliveryNo
postcodeNo
reservedNo
listed_atNo
attributesNo
buy_it_nowNo
image_urlsNo
price_typeNo
view_countNo
category_idNo
descriptionNo
image_countNo
price_eurosNo
car_attributesNo
favorited_countNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description is consistent with these hints and adds detail on the response contents, but it does not disclose additional behavioral traits such as rate limits or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the core action and resource, then efficiently lists all returned data categories. Every phrase adds value, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich output schema, fully documented parameters, and annotations covering safety and idempotency, the description provides sufficient context for an agent to select and invoke the tool correctly. No critical behavioral or usage gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents listing_id, site, and max_images fully. The description does not add parameter-level meaning beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and names the exact resource ('the full advertisement'), then enumerates the included fields. This clearly distinguishes it from sibling tools like get_seller_profile or search_listings, which target different resources or scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains what the tool returns but gives no explicit guidance on when to use it versus alternatives such as list_seller_listings or search_listings. There are no when-to-use, when-not-to-use, or exclusion statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_seller_profileGet seller profileA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
seller_idYesNumeric seller id from a listing's seller field.

Output Schema

ParametersJSON Schema
NameRequiredDescription
siteYes
seller_idYes
average_scoreNo
payment_methodNo
business_verifiedNo
number_of_reviewsNo
bank_account_verifiedNo
phone_number_verifiedNo
identification_verifiedNo
low_bid_threshold_percentNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds the important interpretation that null means the marketplace does not report that signal, which helps the agent avoid misreading missing data as a problem.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the core purpose, the null semantics, and a cross-reference to a sibling tool with no filler. Everything earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations cover safety and idempotency, an output schema exists, parameters are fully documented, and the description provides the one interpretive detail an agent needs: what null means. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameters are already fully documented in the schema. The description does not add much beyond indicating the seller context; per the rubric, baseline 3 is appropriate when the schema carries the parameter-semantics load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb-resource pair ('Look up a seller's trust signals') and enumerates concrete signal types. It also names list_seller_listings as the sibling for current offerings, which distinguishes this tool from a nearby alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for trust/verification data rather than active listings, and explicitly points to list_seller_listings when the agent needs current offers. It provides a clear context signal, though it does not spell out exhaustive when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_categoriesList categoriesA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
parentNoOmit for all top-level categories; pass a top-level category name or id for its subcategories.

Output Schema

ParametersJSON Schema
NameRequiredDescription
levelYes
parentNo
categoriesYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Browse' aligns perfectly. The description adds context that the tree is shared between marktplaats.nl and 2dehands.be, which is useful beyond annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the core purpose, no filler. The description is precisely as long as needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with one optional parameter, an output schema, and annotations covering safety, the description is complete. It tells the agent what the tool does and why it's useful, leaving no essential gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema fully documents the single `parent` parameter, including its nullability and semantics. The description adds no additional parameter detail beyond the schema, so with 100% schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it browses a category tree shared across two marketplaces, with the explicit purpose of finding names/ids for search_listings filters. This distinguishes it from sibling tools by tying it to a specific downstream use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use this tool: to obtain category names/ids for search_listings filters. It implies that it's the go-to for exploring the category hierarchy, though it doesn't explicitly mention alternatives or when not to use it. Still, the purpose is actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_category_filtersList category filtersA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
queryNoOptional search text; needed when no category is given.
categoryNoTop-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
max_optionsNoMax values per filter, most common first (1-200).
subcategoryNoSubcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
siteYes
queryNo
filtersYes
categoryNo
subcategoryNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds useful context about output semantics: valid values and per-value ad counts, plus the fact that filters apply to either a category or a search. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences front-load the purpose, include concrete filter examples, and end with an actionable downstream instruction. Every sentence earns its place with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich output schema, complete parameter descriptions, and safety annotations, the definition is sufficiently complete. It explains what the tool returns and how to use the result, while the schema covers parameter defaults and relationships to list_categories.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds only a small semantic link between 'category or search' and the downstream use of labels, but it does not provide new parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Discover the filters available for a category or search') and a clear resource: filters with valid values and match counts. It also differentiates itself from siblings by explaining that the returned labels feed into search_listings' 'attributes' parameter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly conveys when to use the tool: when you need the available filters for a category or query, and it shows how the result should be consumed downstream. It does not explicitly name alternatives or when-not-to-use conditions, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_seller_listingsList a seller's listingsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
limitNoResults per page (1-100).
queryNoOptional text to filter the seller's ads.
offsetNoPagination: pass 'next_offset' from the previous result.
compactNoTrue (default) returns a token-efficient shortlist; False adds description, seller, images and attributes per listing.
sort_byNo'relevance' (default), 'date' (newest first with desc), 'price' or 'location'.date
seller_idYesNumeric seller id.
sort_orderNo'asc' or 'desc'.desc

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
siteYes
limitYes
offsetYes
listingsYes
returnedYes
next_offsetNo
total_countYes
suggested_queryNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'currently has on offer' phrasing, implying real-time data, but does not disclose pagination behavior or result format beyond what the schema/output schema provide. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The first sentence states the core purpose; the second lists practical use cases. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and 100% parameter coverage, the description only needs to add contextual value, which it does via use cases. It does not repeat schema details, and nothing essential for selecting or invoking the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description adds no parameter-specific meaning beyond what the schema already states, which matches the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource ('everything one seller currently has on offer') and the implied verb 'list'. It is unambiguous about scope but does not explicitly differentiate from siblings like search_listings or get_seller_profile, though the 'one seller' scope distinguishes it naturally.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete use cases ('spot dealers posing as private sellers, duplicate or suspicious ads, and bundle deals'), giving clear context on when to use it. It does not state when not to use it or name alternatives, so it misses the exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_listingsSearch listingsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoWhich marketplace: marktplaats (Netherlands) or 2dehands (Belgium).marktplaats
limitNoResults per page (1-100).
queryNoFree-text search, e.g. 'racefiets' or 'iphone 15'. May be empty if a category is given.
offsetNoPagination: pass 'next_offset' from the previous result.
compactNoTrue (default) returns a token-efficient shortlist; False adds description, seller, images and attributes per listing.
excludeNoDrop listings whose title or description contains any of these words, e.g. ['hoesje', 'defect', 'gezocht'].
sort_byNo'relevance' (default), 'date' (newest first with desc), 'price' or 'location'.relevance
categoryNoTop-level category name (Dutch, e.g. 'Fietsen en Brommers') or numeric id. See list_categories.
deliveryNo'shipping' for ads that can be shipped, 'pickup' for collection.
languageNo2dehands only: 'nl' for Dutch-language ads, 'fr' for French, 'all' (default).
postcodeNoDutch/Belgian postal code to search around, e.g. '1011 AB' or '2000'. Required for distance filtering and for distance_km in results.
price_toNoMaximum price in euros.
conditionNoFilter by item condition.
attributesNoCategory-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': '-100000', 'Brandstof': 'Benzine'}. A list means any of those values. Ranges are 'min-max', 'min-' or '-max'.
price_fromNoMinimum price in euros.
sort_orderNo'asc' or 'desc'.desc
distance_kmNoMax distance from postcode in kilometers (needs postcode).
subcategoryNoSubcategory name (e.g. 'Fietsen | Racefietsen' or 'Fietsen | Heren | Herenfietsen') or numeric id. See list_categories with a parent.
include_unpricedNoKeep 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.
include_sponsoredNoInclude paid promotions (DAGTOPPER/TOPADVERTENTIE) and the sponsored top block.
offered_since_daysNoOnly listings placed within the last N days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
siteYes
limitYes
offsetYes
listingsYes
returnedYes
next_offsetNo
total_countYes
suggested_queryNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds a non-obvious behavioral default: 'Paid promotions are filtered out unless include_sponsored is set.' This goes beyond structured fields and clarifies an important hidden behavior without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two sentences with no filler. The main purpose is front-loaded, followed by a compact list of filter dimensions and a key behavioral default. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 21 parameters, a rich output schema, and detailed per-parameter descriptions, the description provides adequate orientation: what it searches, which platforms, and a notable default. It could explicitly mention pagination or sorting, but those are already documented in the schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already explains every parameter thoroughly. The description's enumeration of filter types adds no syntax or format details beyond what each parameter description provides. It does not need to compensate for any gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Search') and a specific resource ('second-hand listings on Marktplaats or 2dehands'), and enumerates the available filter dimensions. It is not a tautology and gives a concrete sense of the tool's role. However, it does not explicitly distinguish itself from sibling tools like list_seller_listings or check_new_listings, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for finding listings by criteria, and the schema's parameter descriptions point to companion tools (list_categories, list_category_filters), providing indirect workflow guidance. There is no explicit 'use this when...' or 'use X instead when...' statement, so an agent must infer when to choose this over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updates
    • First observedanalyze_prices
    • First observedcheck_new_listings
    • First observedget_listing_details
    • First observedget_seller_profile
    • First observedlist_categories
    • First observedlist_category_filters
    • First observedlist_seller_listings
    • First observedsearch_listings

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables AI assistants to search and retrieve classified listings from marktplaats.nl and 2dehands.be, including details, seller info, categories, and saved searches, with optional authenticated access to messages, listings, favorites, and bids.
    14
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to search and view advertisements on Marktplaats.nl with extensive filtering options.
    17
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching multiple second-hand marketplaces simultaneously from a local command line or AI assistant, providing unified results with pricing insights while respecting each source's terms and robots.txt.
    AGPL 3.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.