Skip to main content
Glama
ido6

facebook-marketplace

by ido6

Facebook Marketplace deal finder (MCP server + Claude skill)

Search Facebook Marketplace from Claude, compare prices like-for-like, flag scams, suggest opening offers, and watch for new listings and price drops. Built for Israel (Hebrew + English titles, ₪), works anywhere.

  • MCP server (dist/index.js): 8 marketplace_* tools, registered in Claude Code as facebook-marketplace.

  • Skill marketplace-deals (skills/marketplace-deals/, install into ~/.claude/skills/): the buying workflow (queries → baseline → compare → photo check → report → watch).

  • CLI (dist/cli.js): the same engine without an AI, for Windows Task Scheduler.

How it works

A dedicated Playwright Chromium profile (~/.fb-marketplace-mcp/profile, not your everyday Chrome) loads Marketplace pages at human pace (2.5–5 s jitter, one tab, no parallelism). Listings are read from Facebook's embedded Relay JSON (marketplace_listing_title, listing_price, …) rather than the DOM, so extraction does not depend on the UI language. Item pages select the focal listing by id, so the "related listings" rail cannot pollute details or photos.

Logged out, each search page returns about 24 listings, so marketplace_compare sweeps every query variant × sort order (relevance, cheapest, newest) and merges: typically 100+ unique listings from 6 pages. Logging in (optional, once) adds scroll pagination and seller names.

Built on lessons from jdcodes1/facebook-marketplace-mcp (macOS-only Chrome cookie extraction; per the car-hunter fork, its GraphQL doc_id search started returning empty listings), the car-hunter fork (switched to embedded-JSON parsing, focal-object detail fix) and weimar-torres-herrera/facebook-marketplace-mcp (Playwright persistent profile; DOM parsing with six known defects). Ideas reimplemented, no code copied.

Related MCP server: Facebook Marketplace MCP

Tools

Tool

Use

marketplace_status

Login state, config, DB size

marketplace_login

Opens a window; you log in (credentials are never typed by Claude)

marketplace_search

One raw search with filters (price, condition, days, sort)

marketplace_listing

Full detail + photos returned as images for Claude to inspect

marketplace_compare

The main tool: sweep, relevance filter, like-for-like groups (pro · 256GB), stats per variant, deal score, scam flags, opening offer, CSV/HTML report

marketplace_watch

Save / list / remove a watch with a target price

marketplace_check_watches

New listings, price drops, target hits since the last check

marketplace_price_history

Local price history per listing or by title

Scam / quality flags: too cheap vs a tight group or a supplied reference price, deposit / prepayment, parts / broken / iCloud-locked, replica, jailbroken, "accessory for X", buy requests ("מחפש"), placeholder prices (₪1, ₪123), sold/pending, few photos, far pickup-only, reposts.

Setup

Requires Node.js 22.13+ (uses the built-in node:sqlite).

git clone https://github.com/ido6/facebook-marketplace-deals.git
cd facebook-marketplace-deals
npm install
npx playwright install chromium
npm run build
claude mcp add --scope user facebook-marketplace -e FBMP_LOCATION=telaviv -- node "/absolute/path/to/facebook-marketplace-deals/dist/index.js"

Install the skill by copying skills/marketplace-deals/ into ~/.claude/skills/ (Windows: %USERPROFILE%\.claude\skills\). Start a new Claude Code session so the tools and skill load, then ask e.g. "find me the best used PS5 in Tel Aviv".

Optional login (more results, seller names): ask Claude to run marketplace_login, or node dist/cli.js login.

Configuration (env)

Variable

Default

FBMP_LOCATION

telaviv

City name (English/Hebrew), slug, or numeric id

FBMP_HOME_LAT / FBMP_HOME_LNG

–

Your location, for distance scoring

FBMP_HEADLESS

1

0 to watch the browser

FBMP_LOCALE / FBMP_TIMEZONE

he-IL / Asia/Jerusalem

FBMP_MIN_DELAY_MS / FBMP_MAX_DELAY_MS

2500 / 5000

Keep them; human pace is the point

FBMP_MAX_PAGES

12

Page-load cap per compare

FBMP_HOME

~/.fb-marketplace-mcp

Profile, SQLite DB, reports

Locations: Facebook has vanity slugs only for some cities (telaviv, jerusalem, beersheba, ashdod, netanya, raanana, rehovot, modiin, eilat); others are mapped to numeric city ids in src/browser/urls.ts (Petah Tikva, Rishon, Ramat Gan, Holon, Herzliya, Kfar Saba, …). For any other city, open Marketplace, set the location, and copy the number from facebook.com/marketplace/<id>/. An unknown slug fails fast with that hint.

CLI

node dist/cli.js compare "iphone 13 pro" "אייפון 13 פרו" --location "Tel Aviv" --min 800 --exclude כיסוי --report
node dist/cli.js check-watches

Exit code 2 = Facebook session expired / security check (run login); 1 = other error.

Development

npm test           # vitest, fixtures captured from the live site
npm run typecheck
npm run build

src/core is pure (no I/O) and fixture-tested; src/browser is the only Playwright code; stdout belongs to MCP, so logs go to stderr (src/log.ts).

Limits and risk

  • Automating Facebook is against its Terms of Service. This tool is read-only, slow by design, and uses no stealth tricks; the account risk is low but not zero. Heavy use can trigger security checks.

  • Facebook changes its payload occasionally. Extraction keys off stable JSON field names; if results go empty, save a fresh search page's HTML and turn it into a fixture with node scripts/sanitize-fixture.mjs raw.html test/fixtures/new.html (strips tokens, real ids, seller data, photo URLs and exact coordinates; never commit raw pages), then run the tests.

  • Prices are asking prices, not sold prices. Benchmarks need several listings per variant; thin variants fall back to tier-level or overall medians (benchmark.level).

  • Messaging sellers and paying stay with you: Claude only drafts messages.

License

MIT. Not affiliated with or endorsed by Meta. Use it for your own shopping, at your own risk.

Available Tools

8 tools
marketplace_check_watchesA

Re-run saved watches and report only what changed since each one's last check: new listings, price drops, target-price hits. The first check of a watch sets a baseline.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOne watch; omit for all.

TDQS

A4/5.0
Behavior4/5

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

Annotations only supply openWorldHint=true, so the description carries the behavioral load and does it well: it discloses delta semantics (only changes since last check are reported) and the baseline rule for a watch's first run. It stops short of mentioning auth requirements or rate limits, but the core behavioral contract is unusually clear.

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 tight sentences, front-loaded with the action and the return categories, with the baseline caveat placed last where it belongs. No filler words.

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 no output schema, the description usefully enumerates what comes back, which an agent needs. Minor gaps remain around authentication and whether the tool blocks or returns immediately, but for a one-parameter read tool the coverage is strong.

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% and the single 'name' parameter is already documented as 'One watch; omit for all.' The description adds no syntax or naming details beyond the schema, 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?

States a specific verb ('Re-run') and resource ('saved watches') and enumerates the exact output categories: new listings, price drops, target-price hits. This distinguishes it clearly from sibling marketplace_watch (which creates watches) and marketplace_search (ad-hoc queries).

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 phrase 'saved watches' implies a watch must exist first, and 'omit for all' scopes the operation, but the description never names when to prefer this over marketplace_watch or marketplace_status, nor states prerequisites such as being logged in despite the marketplace_login sibling.

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

marketplace_compareA

Find the best-priced listings for a product and benchmark the market. Sweeps every query variant × sort order, merges, drops irrelevant/sold/reposted listings, groups like-for-like (e.g. 'pro · 256GB'), computes price stats per variant, ranks deals (price vs variant, price drops, recency, condition, distance), opens the top few for details, flags scams (too cheap, prepayment, parts/broken, buy requests, placeholder ₪1 prices) and suggests an opening offer. Pass several query variants: Hebrew + English + model spellings, e.g. ['iphone 13', 'אייפון 13']. Takes about 5-8 s per page; default 3 sorts per query, capped at 12 pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortsNoDefault ['relevance','price_asc','newest'].
top_nNo
excludeNoDrop titles containing these words (e.g. ['case','כיסוי']).
queriesYes
home_latNo
home_lngNo
locationNoIsraeli city name in English or Hebrew (Tel Aviv, ירושלים, Petah Tikva, Holon, Beersheba...), a Marketplace slug, or the numeric id from a Marketplace URL. Default: telaviv.
max_priceNo
min_priceNoAlso useful to cut accessories and placeholder prices.
radius_kmNo
conditionsNo
enrich_topNo
must_includeNoEvery title must contain these words (e.g. ['pro']).
export_reportNoAlso write CSV + HTML reports and return their paths.
reference_priceNoKnown fair USED price from outside Marketplace; enables vsReferencePct and a scam check.
days_since_listedNoOnly listings from the last N days.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only supply readOnlyHint=false and openWorldHint=true; the description adds substantial behavior: dedupe/sold/reposted filtering, like-for-like grouping, price stats, scam heuristics, and latency/page caps. It does not explain why the tool is flagged non-read-only (report/file export as a side effect), leaving one inconsistency in the safety profile unaddressed.

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

Conciseness4/5

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

Information-dense and front-loaded: the pipeline and output are stated first, then invocation guidance and constraints. The single run-on sentence is long but every clause carries distinct behavioral information; minor structural cost only.

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 complex 16-param tool with no output schema, the description covers the analysis outputs (price stats, ranked deals, scam flags, opening offer) and operational limits well. It omits mention of the export_report side effect and doesn't describe result shape in detail, but is largely sufficient for correct invocation.

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?

With 16 parameters and only ~50% schema description coverage, the description compensates for some gaps (queries as multi-variant Hebrew/English strings, sorts default and page cap) but is silent on location, radius_km, conditions, price bounds, must_include/exclude, and enrichment depth. Partial compensation against a substantial coverage gap, so a baseline 3.

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?

States precise verbs and resource: finds best-priced listings, benchmarks the market, and enumerates the full analysis pipeline (merge, dedupe, group, rank, enrich, scam-flag, offer suggestion). Clearly differentiated from siblings like marketplace_search and marketplace_price_history, which do single narrow jobs.

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?

Gives concrete invocation guidance: pass several query variants with a Hebrew+English example, default 3 sorts per query, cap of 12 pages, and 5-8s per page timing. It never explicitly names when to prefer marketplace_search or marketplace_price_history instead, so it stays at 4 rather than 5.

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

marketplace_listingA
Read-only

Full detail for one listing: description, condition, exact pickup area, delivery options, all photos. Set include_photos to SEE the real photos (check the item matches the title, spot stock photos, damage, serial numbers).

ParametersJSON Schema
NameRequiredDescriptionDefault
listingYesListing id or Marketplace item URL.
include_photosNoHow many photos to return as images.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral value: photos are returned as actual images only when include_photos is set, and it flags why that matters (verifying the item matches the title, detecting stock photos or damage).

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 dense sentences, no filler. The returned-field list is front-loaded and the actionable advice about include_photos follows immediately, so the agent gets the important guidance without scrolling.

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?

There is no output schema, but the description compensates by enumerating the main returned fields and explaining photo behavior. Minor gaps remain (no mention of error/not-found behavior or cost of requesting six images), but for a single-item read tool this is close to complete.

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 goes further by explaining the intent behind include_photos ('to SEE the real photos') rather than just restating that it controls image count, which meaningfully guides the agent to set it above the default 0.

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?

States a precise verb+resource ('Full detail for one listing') and enumerates exactly what the payload contains: description, condition, pickup area, delivery options, photos. This clearly separates it from sibling lookup tools like marketplace_search or marketplace_compare, which operate over many listings.

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?

It gives a genuine when-to-use for include_photos ('to SEE the real photos... spot stock photos, damage, serial numbers'), which implies pre-purchase inspection. However, it never says when to prefer this tool over marketplace_search, marketplace_compare, or marketplace_price_history, so alternative selection is left to inference.

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

marketplace_loginA

Open a visible browser window on Facebook so the USER can log in by hand (Claude never types credentials). Waits until login completes or the timeout passes. Optional: search works logged out.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeout_minutesNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden well: it discloses the visible window, that Claude never types credentials, and that the call blocks until login completes or timeout. It omits what happens on timeout/failure and whether the session persists for later marketplace tools.

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

Conciseness4/5

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

Three tight sentences, front-loaded with the core action and credential-handling caveat. Minor redundancy in the trailing 'Optional: search works logged out' note, which is compressed to the point of slight ambiguity.

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

Completeness3/5

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

For a low-complexity, single-parameter tool with no annotations or output schema, the description covers behavior and security posture but not the outcome on failure or whether the authenticated session carries over to sibling tools like marketplace_watch or marketplace_search.

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 single parameter has 0% schema coverage, so the description should compensate. It mentions 'the timeout passes', implying timeout_minutes governs the wait, but gives no units, range, or default, leaving the schema's min/max/default undocumented in prose.

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?

States a specific verb and resource: opening a visible Facebook browser window for manual user login. It is clearly distinct in intent from the search/listing/watch siblings, though it never names an alternative to contrast against explicitly.

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?

Gives clear context for when the tool is needed (hand login by the user) and a useful negative hint that search works logged out, implying this is not always required. It stops short of naming which sibling tools do or do not require a session.

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

marketplace_price_historyA
Read-only

Local price history recorded by earlier searches: one listing's price changes (by id/URL) or past listings whose title matches some text. Useful for 'has this dropped?' and 'what did these go for last month?'.

ParametersJSON Schema
NameRequiredDescriptionDefault
listingNo
title_containsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so safety is covered. The description adds the genuinely non-obvious behavioral fact that results come from locally recorded earlier searches, implying coverage depends on prior activity and may be empty. It does not say what happens when no history exists.

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, zero filler, with the source-of-data caveat front-loaded before the two retrieval modes. Every clause earns its place.

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

Completeness3/5

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

For a read-only, no-output-schema tool the description need not explain return values, and it covers both modes adequately. But it leaves open the interaction between the two optional parameters and the empty-history case, which an agent would need to call it confidently.

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?

With 0% schema description coverage, the description must carry the load: it does map 'listing' to a single listing by id/URL and 'title_contains' to title text matching. However, it omits the format of the id/URL, and since both parameters are optional it never explains precedence or what happens when both (or neither) are supplied.

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?

States a specific resource (local price history) and the two retrieval modes (single listing's price changes by id/URL, or past listings matching a title). The phrase 'recorded by earlier searches' distinguishes it from live-lookup siblings like marketplace_search and marketplace_listing, though no sibling is named explicitly.

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?

Gives concrete trigger questions ('has this dropped?', 'what did these go for last month?') that map directly to the two parameter modes, so an agent can tell when to call it. It stops short of stating when NOT to use it or which sibling to prefer for live data.

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

marketplace_statusA
Read-only

Check whether the Marketplace browser session is logged in, plus the active configuration. Call first if other tools fail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe, non-mutating call, so the bar is lower. The description adds that it reports login state and the active configuration, but says nothing about what 'active configuration' contains, whether the check can be slow, or what a logged-out result implies.

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 short sentences, front-loaded with the core purpose and followed immediately by the routing hint. No filler.

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 no parameters and no output schema, the description carries the burden of explaining what comes back, and it does so at a high level (login state + configuration). It is sufficient for a simple diagnostic, though it could note what a failure result looks like.

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?

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to clarify beyond what the empty schema already conveys.

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?

States a specific verb (check) and two concrete resources (login state, active configuration), and the diagnostic framing clearly separates it from siblings like marketplace_login and marketplace_search.

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?

'Call first if other tools fail' gives an explicit trigger condition for using this tool, which is exactly the routing guidance an agent needs. It lacks a when-not statement, but the guidance is clear and actionable.

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

marketplace_watchB

Save, list or remove a watch: a saved comparison that marketplace_check_watches re-runs to report NEW listings, PRICE DROPS and hits at or below a target price.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
actionYes
excludeNo
queriesNo
locationNoIsraeli city name in English or Hebrew (Tel Aviv, ירושלים, Petah Tikva, Holon, Beersheba...), a Marketplace slug, or the numeric id from a Marketplace URL. Default: telaviv.
max_priceNo
min_priceNo
conditionsNo
must_includeNo
target_priceNo

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It discloses that watches are re-run to report new listings, price drops, and target-price hits, but omits authentication needs, persistence behavior, what remove actually deletes, and what list returns.

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

Conciseness4/5

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

A single sentence that front-loads the actions and then defines the resource. It is dense but contains no filler, though it prioritizes purpose over operational detail.

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

Completeness2/5

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

For a 10-parameter tool with no annotations, no output schema, and very low schema description coverage, the description is insufficient. It gives the purpose and the check_watches relationship but not enough detail for an agent to invoke add, list, and remove correctly across all parameters.

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

Parameters2/5

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

Schema description coverage is only 10%, and the description does not explain the action enum, name, queries, exclude, must_include, conditions, or price-bound parameters. It only loosely references a target price concept, leaving most of the 10 parameters semantically undocumented.

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?

States a specific set of verbs (save, list, remove) and a clear resource (a watch), then defines what a watch is. It explicitly connects to the sibling tool marketplace_check_watches, so an agent can distinguish managing watches from running checks.

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?

Implies usage by saying a watch is a saved comparison that marketplace_check_watches re-runs. However, it does not state when to add vs list vs remove, prerequisites for each action, or when not to use this tool versus other marketplace 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 updatesv1.0.0
    • First observedmarketplace_check_watches
    • First observedmarketplace_compare
    • First observedmarketplace_listing
    • First observedmarketplace_login
    • First observedmarketplace_price_history
    • First observedmarketplace_search
    • First observedmarketplace_status
    • First observedmarketplace_watch

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct roles (status, login, listing detail, price history). The overlapping pairs — search vs. compare (both retrieve listings) and watch vs. check_watches (two halves of the watch feature) — are explicitly delineated in their descriptions, steering an agent to the right choice, so ambiguity is minor rather than real.

Naming Consistency4/5

All tools consistently use the marketplace_ snake_case prefix, which is predictable and readable. The only slight deviation is that some use noun forms (status, listing, watch, price_history) while others use verbs (search, compare, login, check_watches), but the pattern is uniform enough not to confuse.

Tool Count5/5

Eight tools is well-scoped for a Marketplace browser-automation server. Each tool earns its place: session handling, search, detail fetch, comparison, watch management, and price history — no redundancy or filler.

Completeness4/5

The surface covers the full browse/monitor workflow: login, search, detail, benchmark comparison, watch save/list/remove plus re-check, and price history. Minor gaps exist (no tool for contacting a seller or saving an individual listing outside a watch), but core deal-finding workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers