ebay-lens
Integrates with eBay's official Browse and Taxonomy APIs to search listings by keyword or image, retrieve item details and photo sets, zoom into listing photos, and look up categories and aspects. Supports filtering by price, condition, buying format, location, shipping, and other aspects; it is read-only and does not support buying, bidding, offers, or messaging.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ebay-lensFind used Leica M6 cameras under $3000 with free shipping and show me the photos"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ebay-lens
A local MCP server that lets Claude search eBay and look at the photos: thumbnail contact sheets of whole result pages, full listing photo sets, full-resolution zoom crops (tags, nameplates, flaws), and visual-similarity search from a photo or an existing listing.
It is read-only and uses only eBay's official APIs (Browse + Taxonomy) with your own developer keys. It cannot buy, bid, offer, or message, and it stores nothing on disk.
Tools
Tool | What it does |
| Keyword search with price, condition, buying-format, aspect (Size, Brand…), location, local-pickup-radius and free-shipping filters; sort by price/newest/ending/distance. Returns numbered results plus a contact-sheet image of thumbnails. |
| Visually similar listings from a local photo ( |
| Full details: condition notes, item specifics (measurements, MPN…), seller description (HTML stripped), shipping, returns, location, variations. Accepts `v1 |
| Downloads a listing's photos (up to 12 per call, paged) and returns them as images Claude sees. |
| Crops one photo at eBay's max (1600 px) resolution, e.g. |
| Category ids from a description, which aspect filters need. |
| Valid aspect names/values for a category (Size Type, Inseam, Voltage, Phase…). |
Related MCP server: mcp-ebay
Setup
1. eBay developer keys (free)
Join at https://developer.ebay.com and create an application keyset under Production. App ID =
EBAY_CLIENT_ID, Cert ID =EBAY_CLIENT_SECRET.eBay may ask you to configure Marketplace Account Deletion notifications before enabling production keys. This tool stores no eBay user data, so the exemption option applies.
Default quota is 5,000 Browse calls/day. A search is 1 call; photos/thumbnails come from eBay's image CDN and are not API calls.
2. Install
Requires Python 3.10+. Install into a dedicated environment, not a shared or system one: mcp
pulls in a fair number of dependencies.
Option A: uv
cd ebay-lens
uv syncOption B: plain venv + pip (no uv needed)
cd ebay-lens
python3 -m venv .venv # python3 must be 3.10+; check with: python3 --version
.venv/bin/pip install -e .If your default python3 is older (e.g. an active conda base on 3.9), create the venv with a
newer interpreter's full path instead, e.g. ~/miniconda3/envs/py312/bin/python -m venv .venv
or /usr/bin/python3.10 -m venv .venv. The venv keeps using that interpreter, so nothing needs
activating later.
On Windows (PowerShell), the venv puts executables in Scripts\ instead of bin/:
cd ebay-lens
py -3.12 -m venv .venv # any installed 3.10+ works; list them with: py -0
.venv\Scripts\pip install -e .Check the install with .venv/bin/python tests/test_mocked.py (Windows:
.venv\Scripts\python tests\test_mocked.py). No eBay keys needed.
3. Connect
Claude Code (available in all projects):
# Option A (uv)
claude mcp add ebay-lens -s user \
-e EBAY_CLIENT_ID=YOUR_APP_ID -e EBAY_CLIENT_SECRET=YOUR_CERT_ID \
-e EBAY_POSTAL_CODE=YOUR_POSTAL_CODE \
-- uv run --directory /absolute/path/to/ebay-lens ebay-lens
# Option B (venv): point straight at the venv's entry point
claude mcp add ebay-lens -s user \
-e EBAY_CLIENT_ID=YOUR_APP_ID -e EBAY_CLIENT_SECRET=YOUR_CERT_ID \
-e EBAY_POSTAL_CODE=YOUR_POSTAL_CODE \
-- /absolute/path/to/ebay-lens/.venv/bin/ebay-lensClaude desktop app (macOS, Windows, Linux):
Open the config file. In the app, go to Settings → Developer → Edit Config. That works on every OS and creates the file if it doesn't exist. Or open it directly:
OS
Config file
macOS
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows
%APPDATA%\Claude\claude_desktop_config.jsonLinux
~/.config/Claude/claude_desktop_config.jsonAdd the server. Put
ebay-lensunder"mcpServers". If the file already has content (other servers or settings), merge this entry in rather than replacing the file. Use thecommand/argsthat match how you installed:uv (any OS):
{ "mcpServers": { "ebay-lens": { "command": "uv", "args": ["run", "--directory", "/absolute/path/to/ebay-lens", "ebay-lens"], "env": { "EBAY_CLIENT_ID": "YOUR_APP_ID", "EBAY_CLIENT_SECRET": "YOUR_CERT_ID", "EBAY_POSTAL_CODE": "YOUR_POSTAL_CODE" } } } }The app is launched from your desktop, not a terminal, so it may not see the
PATHfrom your shell. If it can't finduv, use uv's full path ascommand(find it withwhich uvon macOS/Linux,where uvon Windows).venv, macOS/Linux: replace
command/argswith:"command": "/absolute/path/to/ebay-lens/.venv/bin/ebay-lens", "args": []venv, Windows: replace
command/argswith (backslashes must be doubled in JSON; forward slashes also work):"command": "C:\\Users\\you\\ebay-lens\\.venv\\Scripts\\ebay-lens.exe", "args": []Keep the same
envblock in every case.Restart the app fully. Closing the window isn't enough: quit with Cmd+Q on macOS, or right-click the tray icon → Quit on Windows/Linux, then reopen it.
Check it connected. Settings → Developer shows each server's status. If
ebay-lensfailed, look at themcp*.logfiles:OS
Logs
macOS
~/Library/Logs/Claude/Windows
%APPDATA%\Claude\logs\Linux
~/.config/Claude/logs/The most common error is
ENOENT(on Linux:Failed to spawn process: No such file or directory), meaning thecommandcan't be found. Check that it's a real absolute path, not the/absolute/path/to/...placeholder, and that the program exists: with"command": "uv"this also happens when uv isn't installed at all. In that case use the venv variant above.
A local stdio server works in Claude Code and the desktop app, not in claude.ai in a browser or on mobile. Those would need it hosted as a remote HTTPS connector.
Environment variables
Var | Default | Purpose |
| required | Production keyset |
| unset | Accurate shipping estimates, |
|
| e.g. |
|
| Country paired with the postal code |
Example prompts
"Find a used waxed cotton jacket in size L under $150. Check the contact sheet, then inspect the best few for wear, torn linings and broken zips, and zoom on the tags to confirm the brand and estimate its age."
"Here's a photo of a jacket I like (
photo.jpg). Find similar ones on eBay in men's size L.""Find a used mechanical keyboard under $80 with free shipping. Check the contact sheet, then look through the photos of the best few for missing keycaps, yellowing or worn legends, and compare them."
"Show me listings similar to https://www.ebay.com/itm/123456789012 but cheaper."
eBay terms: how this stays compliant
Official API, your keys. eBay's User Agreement (effective Feb 20 2026) prohibits scrapers and LLM-driven bots accessing eBay without eBay's express permission. The developer program and API License Agreement are that permission. This server never scrapes ebay.com pages.
No purchasing paths. The code calls only Browse search/searchByImage/getItem and Taxonomy lookups. There are no Order, Offer/bidding, or Sell endpoints. Buying happens with you on ebay.com.
No Restricted APIs. The API License restricts feeding "Restricted APIs" (market trends, pricing insights, AI-generated content, e.g. Marketplace Insights / sold-price data) into third-party AI tools. None are used. Don't add sold-listing tools without eBay's written consent.
No training, no persistence. Data is used only to answer your query. There's a 10-minute in-memory item cache; nothing is written to disk.
Not legal advice. Re-read the API License Agreement if you extend this.
Testing
.venv/bin/python tests/test_mocked.py (or uv run python tests/test_mocked.py) drives every
tool through a real MCP client session against a mocked eBay API: filter construction,
auth/token caching, contact sheets, photo paging, zoom, image search, variation listings, and an
assertion that no non-GET call except token and searchByImage is ever made. It writes sample
images to tests/out/ (git-ignored).
Known limits
searchByImageis marked experimental by eBay: quality varies, and addingcategory_idhelps a lot.Aspect filters need exactly one category id (an eBay rule).
Some listings only have low-resolution photos; zoom reports the source size.
Available Tools
7 toolsget_ebay_category_aspectsB
List the item-specific aspects for a category (e.g. Size, Size Type, Chest Size, Inseam, Brand; or Voltage, Phase, Horsepower) and common values, for use in search aspects filters.
| Name | Required | Description | Default |
|---|---|---|---|
| max_values | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description must carry the behavioral load; 'List' correctly signals a read-only lookup and the examples clarify the payload shape. It does not disclose whether max_values caps values per aspect or overall, whether results are cached or rate-limited, or how large a category's aspect set can be.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource and purpose stated first; the parenthetical examples are somewhat long but they meaningfully illustrate what an 'aspect' is, so they earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the read-only nature is implied. However, with no annotations and zero schema coverage, the undocumented max_values parameter leaves a real gap an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description compensates only partially: '(e.g. ... for a category)' implies category_id identifies the category, but max_values is never mentioned, leaving unclear whether it limits values per aspect or total values returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: lists item-specific aspects and their common values for a category, with concrete examples (Size, Inseam, Voltage, Phase) and the downstream purpose ('for use in search aspects filters'). It is clearly distinguishable from siblings like suggest_ebay_categories, though it never names or contrasts with them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase 'for use in search aspects filters' hints that this should be called before search_ebay to build aspect filters, but there is no explicit when-to-use, no when-not-to-use, and no named alternative for discovering categories versus aspects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ebay_itemA
Full listing details: price, condition notes, item specifics (size, measurements, brand, model, MPN...), seller description, shipping, returns, location, variations, photo count. item: RESTful id (v1|...|0), numeric legacy id, or an ebay.com/itm/ URL.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| description_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden; it enumerates what is returned, which signals a read-only listing fetch. It says nothing about permissions, authentication, rate limits, or whether the call works for ended/removed listings — behavioral gaps that matter without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the payload contents front-loaded and the identifier syntax immediately after. Minor waste in the parenthetical field list (size, measurements, brand, model, MPN), which largely restates what the output schema already exposes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return-shape detail is redundant given an output schema, and the description omits the one genuinely non-obvious control (`description_chars` truncation) plus any failure modes for invalid or ended item ids. Adequate to call correctly for the common case, but incomplete for the schema it ships with.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description does valuable work by explaining that `item` accepts a RESTful id (v1|...|0), a numeric legacy id, or an ebay.com/itm/ URL. However, the second parameter `description_chars` (default 4000) is never mentioned anywhere, leaving a real truncation behavior undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Full listing details' for a single item) and the second sentence clarifies the identifier type, making it clearly distinct from search_ebay (discovery) and get_ebay_item_photos (media subset). An agent can route to it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'full listing details' suggests fetching one known listing, in contrast to the search siblings. There is no explicit when-to-use/when-not guidance and no mention that a search step is typically required to obtain the item id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ebay_item_photosB
Download a listing's photos and return them as images for visual inspection. Photos are numbered from 0 (0 = main photo). Page with start; max_px 512-1600.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| start | No | ||
| max_px | No | ||
| max_photos | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose useful behavior: photos are returned as images, indexing is 0-based with 0 as the main photo, paging is via start, and max_px is bounded to 512-1600. It says nothing about how many photos a listing may have, failure modes, or request costs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose followed by operational hints. The telegraphic "Page with start" phrasing is slightly clipped but wastes no words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required, and the image-return behavior is covered. However, the required item parameter and max_photos remain unexplained, and there is no route to the closely related zoom tool, leaving gaps for a 4-parameter tool with zero annotation coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for four undocumented parameters. It explains start (paging) and adds a real constraint for max_px (512-1600, beyond the default-1024 schema), but never explains what the required item identifier is or what max_photos controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Download a listing's photos") and states the result form ("return them as images for visual inspection"). It does not distinguish itself from the sibling zoom_ebay_photo, which also deals with eBay photos, so sibling differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives such as zoom_ebay_photo or search_ebay_by_image. The phrase "for visual inspection" hints at the intent, but an agent must infer the selection criteria itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ebayB
Keyword search of active eBay listings, returning numbered results and a thumbnail contact sheet.
aspects: item-specific filters such as {"Size": "M", "Brand": "Patagonia|Arc'teryx"} ('|' = OR); requires category_id. Use show_refinements=True to discover valid aspect names/values. buying_options: defaults to fixed_price + auction (eBay alone would return only Buy It Now). local_pickup_radius_miles: only items offering local pickup within this radius of the server's EBAY_POSTAL_CODE (useful for heavy equipment). limit: 1-50 recommended (contact sheet gets unwieldy above ~30).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | best_match | |
| limit | No | ||
| query | No | ||
| offset | No | ||
| aspects | No | ||
| condition | No | ||
| max_price | No | ||
| min_price | No | ||
| category_id | No | ||
| contact_sheet | No | ||
| free_shipping | No | ||
| buying_options | No | ||
| show_refinements | No | ||
| item_location_country | No | ||
| local_pickup_radius_miles | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It does disclose two non-obvious behaviors: buying_options defaults to fixed_price + auction (deviating from eBay's Buy It Now default), and local_pickup_radius_miles is measured from the server's EBAY_POSTAL_CODE. It says nothing about pagination via offset, what show_refinements returns, rate limits, or auth/error behavior, which is a meaningful gap for a 15-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core capability is front-loaded in one sentence and the rest is scoped to individual parameters with no filler. Minor inefficiency: sort's 'distance' enum and offset pagination are never tied into the surrounding guidance, so the notes are not fully integrated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be spelled out, and the size/format tips are appropriate for a large search tool. Still, for a 15-parameter search tool with no annotations, the description leaves pagination, sort/location interaction, and tool-selection versus siblings unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with 15 parameters, so the description must compensate, and it only covers aspects (including the '|' = OR syntax and category_id dependency), buying_options, local_pickup_radius_miles, show_refinements, and limit. The other parameters (sort, condition, price bounds, item_location_country, offset, contact_sheet, free_shipping) get no explanation, though most are self-descriptive by name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Keyword search of active eBay listings') plus the result shape (numbered results, thumbnail contact sheet). The word 'keyword' implicitly separates it from the sibling search_ebay_by_image, but no sibling is named explicitly, so it stops 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real in-tool guidance: aspects require category_id, use show_refinements=True to discover valid names/values, limit is best kept 1-50. It does not say when to pick this tool over search_ebay_by_image or suggest_ebay_categories, nor any when-not conditions, so usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ebay_by_imageA
Visual-similarity search (eBay's experimental searchByImage). Give exactly one source: image_path (local file), image_url, or similar_to_item (item id/URL; uses its main photo). Adding category_id greatly improves relevance. Results come with a contact sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | best_match | |
| limit | No | ||
| offset | No | ||
| aspects | No | ||
| condition | No | ||
| image_url | No | ||
| max_price | No | ||
| min_price | No | ||
| image_path | No | ||
| category_id | No | ||
| contact_sheet | No | ||
| buying_options | No | ||
| similar_to_item | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and delivers real behavioral facts: the API is experimental, the source inputs are mutually exclusive (one and only one), and results include a contact sheet. It omits operational details such as rate limits, cost, or what happens if multiple sources are supplied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core constraint front-loaded and zero filler; the parenthetical notes earn their place by clarifying input formats. Slightly dense for a 13-parameter tool, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema covers return values and the description covers the source-selection rule, which is the main complexity. However, for a 13-parameter tool with zero schema documentation, the filtering and pagination parameters are left entirely unexplained, which is a meaningful gap for an agent composing a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 13 parameters, so the description must compensate, and it does for the most important ones: image_path (local file), image_url, similar_to_item (item id or URL, uses main photo), and category_id's relevance impact. The remaining filters — aspects, condition, buying_options, min/max_price, sort, limit, offset, contact_sheet — get no explanation beyond their names, and "aspects" in particular is opaque.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Visual-similarity search (eBay's experimental searchByImage)" states a specific verb and a distinct resource, and the visual-similarity framing inherently separates it from the keyword-based sibling search_ebay. An agent can pick this tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives the critical selection rule — supply exactly one of image_path, image_url, or similar_to_item — and a quality tip (category_id greatly improves relevance). It stops short of explicitly naming when to prefer this over search_ebay or get_ebay_item_photos, so there is no full when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_ebay_categoriesA
Suggest eBay category ids for a description (e.g. 'men's waxed cotton jacket', 'hydraulic gear pump'). Use the id as category_id in searches and aspect filters.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden; "suggest" implies a non-mutating lookup, but that is only implied. It does not state how many suggestions come back, whether results are ranked or confidence-scored, or whether authentication is required. The presence of an output schema excuses it from explaining return values, keeping this at a middling score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the purpose and followed by the downstream instruction; there is no filler and no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup tool with an output schema, the description covers what the tool does, what to pass in, and what to do with the result. Only the shape of the returned suggestions and any reliability caveats are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single query parameter has 0% schema description coverage, and the two bracketed examples ("men's waxed cotton jacket", "hydraulic gear pump") do real work here, showing the input is a free-form natural-language product description rather than a category name or ID. It still does not mention constraints such as length limits or language.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ("suggest eBay category ids") and clarifies the input with two concrete examples, so the agent can tell it is a lookup-style categorizer rather than one of the search_ebay retrieve tools. It stops short of naming a sibling explicitly, which would earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use the id as category_id in searches and aspect filters" tells the agent both the downstream purpose and the workflow it plugs into (search_ebay, get_ebay_category_aspects). No explicit when-not guidance or prerequisites are given, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zoom_ebay_photoA
Crop one listing photo at full resolution (eBay's largest, 1600px) to read tags, labels, nameplates, serial plates, or inspect a flaw. box = [x0, y0, x1, y1] as fractions of the photo (e.g. [0.5, 0.0, 1.0, 0.5] = top-right quarter).
| Name | Required | Description | Default |
|---|---|---|---|
| box | Yes | ||
| item | Yes | ||
| max_px | No | ||
| photo_index | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does disclose the resolution ceiling and cropping semantics. It omits prerequisites (must the item/photos be fetched first?) and says nothing about what the crop returns or whether max_px overrides the stated 1600px full-resolution behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: the action and motivation come first, then the box syntax with a concrete example. Every phrase earns its place and the hard-to-guess detail is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values needn't be described, and the box semantics are fully covered. Gaps remain around how item and photo_index are sourced and what max_px does relative to the 1600px claim, which matters for a four-parameter tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters, so the description must compensate. It does an excellent job on the hardest parameter, defining box as fractional [x0,y0,x1,y1] with a worked example, but leaves item, photo_index, and max_px entirely unexplained, including the potential tension between max_px's default of 1400 and the advertised 1600px full resolution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ("Crop one listing photo") plus an explicit resolution ceiling (1600px), so it is unmistakable what the tool does. It does not name the sibling it pairs with (get_ebay_item_photos), leaving the agent to infer which call supplies the photo to crop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states the situations that call for zooming: reading tags, labels, nameplates, serial plates, or inspecting a flaw. There is no explicit when-not guidance and no named alternative, so it stops short of a full routing rule.
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.
7 tool updates
v0.1.0- First observed
get_ebay_category_aspects - First observed
get_ebay_item - First observed
get_ebay_item_photos - First observed
search_ebay - First observed
search_ebay_by_image - First observed
suggest_ebay_categories - First observed
zoom_ebay_photo
TDQS
Scored across 7 tools
Keyword search vs. visual-similarity search are clearly separated, as are item metadata, photo download, and photo zoom. The only mild overlap is between get_ebay_item (which returns photo count), get_ebay_item_photos, and zoom_ebay_photo, but the granularity levels are described well enough to choose correctly. suggest_ebay_categories vs. get_ebay_category_aspects is a clean split (discover id vs. discover filters for an id).
All tools use snake_case with a consistent verb_ebay_noun shape (get_ebay_item, zoom_ebay_photo, suggest_ebay_categories, get_ebay_category_aspects). Minor deviations: search_ebay puts the object last and search_ebay_by_image adds a prepositional suffix. Still highly predictable and readable.
Seven tools covering search, visual search, detail retrieval, media inspection, and category/aspect discovery—each earns its place in the research workflow. No obvious redundancy or padding.
The find-inspect-verify loop is fully covered: discover categories/aspects → search (keyword or image) → pull item details → download and zoom photos. Notable gap: no access to sold/completed listings or seller feedback, which limits price valuation and seller vetting, though agents can work around it with external sources.
Maintenance
Related MCP Connectors
Search eBay sold and active listings, browse categories, and retrieve item details.
Drafts eBay listings from your item photos: title, description, price and condition.
Search AliExpress and eBay in any language: real listings with price, rating, delivery and links.
Run an eBay seller account from your AI assistant: orders, listings, stock, fees and payouts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search eBay listings, track item prices over time, and identify deals below market value using eBay's APIs. It provides tools for category browsing and retrieving detailed information for specific listings.1MIT
- AlicenseAqualityDmaintenanceEnables AI agents to search products, view item details, track and place bids, make Buy It Now purchases, view order history, and track shipments on eBay via browser automation with Playwright.73 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to search eBay listings, analyze price distributions, find deals, and generate market research overviews via the Model Context Protocol.1MIT
- AlicenseAqualityBmaintenanceRead-only eBay search and listing lookup via the official Browse API, with filters for price, condition, buying format, shipping, and deals.4MIT