ebay-mcp 1.17.0 → 1.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +92 -53
  2. package/build/api/account-management/accountV2.js +347 -0
  3. package/build/api/account-management/finances.js +289 -0
  4. package/build/api/analytics-and-report/analytics.js +1 -1
  5. package/build/api/{client.js → client/ebayApiClient.js} +83 -36
  6. package/build/api/{clientTrading.js → client/tradingApiClient.js} +22 -22
  7. package/build/api/communication/feedback.js +21 -21
  8. package/build/api/communication/message.js +23 -23
  9. package/build/api/communication/negotiation.js +7 -7
  10. package/build/api/communication/notification.js +52 -52
  11. package/build/api/developer/developer.js +3 -3
  12. package/build/api/{index.js → ebaySellerApi.js} +28 -4
  13. package/build/api/listing-management/feed.js +91 -0
  14. package/build/api/listing-management/feedReportTasks.js +107 -0
  15. package/build/api/listing-management/feedRequest.js +91 -0
  16. package/build/api/listing-management/feedSchedules.js +95 -0
  17. package/build/api/listing-management/feedTasks.js +91 -0
  18. package/build/api/listing-management/items.js +22 -22
  19. package/build/api/listing-management/locations.js +4 -4
  20. package/build/api/listing-management/media.js +14 -14
  21. package/build/api/listing-management/mediaAttach.js +14 -14
  22. package/build/api/listing-management/mediaResources.js +22 -39
  23. package/build/api/listing-management/offerFormat.js +1 -1
  24. package/build/api/listing-management/offers.js +23 -23
  25. package/build/api/listing-management/stores.js +203 -0
  26. package/build/api/listing-metadata/charity.js +76 -0
  27. package/build/api/listing-metadata/metadata.js +31 -11
  28. package/build/api/listing-metadata/metadataShipping.js +117 -0
  29. package/build/api/listing-metadata/taxonomy.js +52 -7
  30. package/build/api/marketing-and-promotions/ads.js +34 -34
  31. package/build/api/marketing-and-promotions/campaigns.js +21 -21
  32. package/build/api/marketing-and-promotions/promotions.js +24 -24
  33. package/build/api/marketing-and-promotions/reports.js +7 -7
  34. package/build/api/marketing-and-promotions/shared.js +0 -3
  35. package/build/api/order-management/dispute.js +11 -9
  36. package/build/api/order-management/fulfillment.js +4 -4
  37. package/build/api/order-management/logistics.js +150 -0
  38. package/build/api/other/browseMappers.js +15 -13
  39. package/build/api/other/browseValidators.js +4 -4
  40. package/build/api/other/edelivery.js +19 -19
  41. package/build/api/other/finding.js +13 -13
  42. package/build/api/other/translation.js +2 -2
  43. package/build/api/other/vero.js +2 -2
  44. package/build/api/shared/download.js +79 -0
  45. package/build/api/shared/location.js +33 -0
  46. package/build/api/shared/request.js +69 -11
  47. package/build/api/trading/listingFormat.js +37 -30
  48. package/build/api/trading/trading.js +33 -33
  49. package/build/auth/credentialSession.js +5 -5
  50. package/build/auth/oauth.js +3 -3
  51. package/build/auth/oauthHelper.js +24 -24
  52. package/build/auth/oauthMetadata.js +4 -4
  53. package/build/auth/oauthMiddleware.js +16 -16
  54. package/build/auth/scopeUtils.js +24 -3
  55. package/build/auth/tokenVerifier.js +23 -23
  56. package/build/config/environment.js +10 -45
  57. package/build/config/oauthScopes.js +132 -0
  58. package/build/config/toolFamilies.js +4 -0
  59. package/build/index.js +5 -5
  60. package/build/mcp/httpTransport.js +32 -20
  61. package/build/mcp/runtime.js +12 -12
  62. package/build/mcp/toolGating.js +6 -12
  63. package/build/mcp/uiBridge.js +3 -3
  64. package/build/schemas/account-management/account.js +2 -52
  65. package/build/schemas/account-management/accountV2.js +294 -0
  66. package/build/schemas/account-management/finances.js +143 -0
  67. package/build/schemas/analytics/analytics.js +2 -48
  68. package/build/schemas/communication/messages.js +2 -46
  69. package/build/schemas/developer/developer.js +1 -27
  70. package/build/schemas/fulfillment/logistics.js +115 -0
  71. package/build/schemas/fulfillment/orders.js +2 -47
  72. package/build/schemas/inventory-management/feed.js +217 -0
  73. package/build/schemas/inventory-management/inventory.js +2 -50
  74. package/build/schemas/inventory-management/media.js +2 -2
  75. package/build/schemas/inventory-management/mediaDocuments.js +1 -1
  76. package/build/schemas/inventory-management/stores.js +42 -0
  77. package/build/schemas/marketing/ads.js +2 -2
  78. package/build/schemas/marketing/campaigns.js +2 -2
  79. package/build/schemas/marketing/common.js +2 -2
  80. package/build/schemas/marketing/marketing.js +0 -1
  81. package/build/schemas/marketing/promotions.js +2 -2
  82. package/build/schemas/marketing/reports.js +2 -2
  83. package/build/schemas/metadata/metadata.js +2 -90
  84. package/build/schemas/metadata/shipping.js +16 -0
  85. package/build/schemas/other/browse.js +2 -2
  86. package/build/schemas/other/finding.js +2 -2
  87. package/build/schemas/other/otherApis.js +2 -114
  88. package/build/schemas/taxonomy/categoryTree.js +8 -0
  89. package/build/schemas/taxonomy/charity.js +41 -0
  90. package/build/schemas/taxonomy/taxonomy.js +2 -69
  91. package/build/scripts/autoSetup.js +3 -3
  92. package/build/scripts/{buildUi.js → buildMcpApps.js} +13 -13
  93. package/build/scripts/devSync.js +34 -70
  94. package/build/scripts/diagnostics.js +15 -16
  95. package/build/scripts/interactiveSetup.js +25 -25
  96. package/build/scripts/scopeHelper.js +2 -2
  97. package/build/scripts/securityChecker.js +20 -20
  98. package/build/scripts/setup.js +76 -76
  99. package/build/scripts/setupShared.js +5 -30
  100. package/build/scripts/setupValidator.js +9 -9
  101. package/build/scripts/setupWizard.js +23 -23
  102. package/build/scripts/skills.js +14 -17
  103. package/build/scripts/specRefs.js +55 -0
  104. package/build/scripts/specSources.js +144 -0
  105. package/build/serverHttp.js +4 -7
  106. package/build/skills/content.js +13 -13
  107. package/build/skills/install.js +9 -9
  108. package/build/skills/registrySnapshot.js +7 -3
  109. package/build/skills/render.js +2 -2
  110. package/build/tools/categories/accountV2.js +106 -0
  111. package/build/tools/categories/charity.js +21 -0
  112. package/build/tools/categories/communication.js +1 -1
  113. package/build/tools/categories/connector.js +19 -16
  114. package/build/tools/categories/feed.js +183 -0
  115. package/build/tools/categories/finances.js +86 -0
  116. package/build/tools/categories/fulfillment.js +4 -4
  117. package/build/tools/categories/index.js +12 -2
  118. package/build/tools/categories/inventory.js +1 -1
  119. package/build/tools/categories/logistics.js +52 -0
  120. package/build/tools/categories/metadata.js +38 -1
  121. package/build/tools/categories/stores.js +64 -0
  122. package/build/tools/categories/taxonomy.js +18 -1
  123. package/build/tools/categories/tokenManagement.js +8 -8
  124. package/build/tools/contracts.js +2 -2
  125. package/build/tools/defineTool.js +27 -12
  126. package/build/tools/fileResult.js +30 -0
  127. package/build/tools/registry.js +2 -2
  128. package/build/tools/schemas.js +2 -2
  129. package/build/tools/ui/mapHelpers.js +12 -12
  130. package/build/tools/ui/maps.js +101 -97
  131. package/build/tools/ui/viewModels.js +2 -2
  132. package/build/utils/apiStatusFeed.js +12 -12
  133. package/build/utils/communication/feedback.js +3 -3
  134. package/build/utils/communication/message.js +3 -3
  135. package/build/utils/communication/negotiation.js +3 -3
  136. package/build/utils/communication/notification.js +3 -3
  137. package/build/utils/entryModule.js +33 -0
  138. package/build/utils/envFile.js +47 -0
  139. package/build/utils/envParser.js +5 -5
  140. package/build/utils/errors.js +4 -4
  141. package/build/utils/http.js +60 -41
  142. package/build/utils/localFeedFiles.js +61 -0
  143. package/build/utils/localMedia.js +18 -6
  144. package/build/utils/logRedaction.js +21 -0
  145. package/build/utils/logger.js +52 -33
  146. package/build/utils/other/compliance.js +3 -3
  147. package/build/utils/other/identity.js +3 -3
  148. package/build/utils/other/translation.js +3 -3
  149. package/build/utils/other/vero.js +3 -3
  150. package/build/utils/schemaHelpers.js +2 -2
  151. package/build/utils/tokenUtils.js +2 -2
  152. package/build/utils/trading/trading.js +1 -1
  153. package/build/utils/version.js +1 -1
  154. package/build/utils/zodIssues.js +14 -0
  155. package/package.json +9 -12
  156. package/README.de.md +0 -422
  157. package/README.es.md +0 -422
  158. package/README.fr.md +0 -422
  159. package/README.ja.md +0 -422
  160. package/README.ko.md +0 -422
  161. package/README.pt-BR.md +0 -422
  162. package/README.ru.md +0 -422
  163. package/README.zh-CN.md +0 -422
  164. package/build/schemas/index.js +0 -76
  165. package/build/schemas/marketing/jsonSchemas.js +0 -118
  166. package/build/scripts/downloadSpecs.js +0 -117
  167. package/build/scripts/updateApiStatusDoc.js +0 -71
  168. package/build/utils/effectSchema.js +0 -203
  169. package/build/utils/effectSchemaAdapter.js +0 -121
  170. package/build/utils/effectSchemaChainMethods.js +0 -146
  171. package/build/utils/effectSchemaRefinements.js +0 -104
  172. package/build/utils/effectSchemaStringMethods.js +0 -63
  173. package/build/utils/effectSchemaTypes.js +0 -47
  174. package/docs/auth/production_scopes.json +0 -111
  175. package/docs/auth/sandbox_scopes.json +0 -142
  176. /package/build/api/{clientRequestError.js → client/ebayClientRequestError.js} +0 -0
  177. /package/build/api/{rateLimitTracker.js → client/rateLimitTracker.js} +0 -0
  178. /package/build/api/{clientTradingError.js → client/tradingApiFailure.js} +0 -0
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  </p>
6
6
 
7
7
  <p align="center">
8
- <strong>The eBay MCP server — give Claude, Cursor, and any AI assistant full access to eBay's Sell APIs. 313 tools for inventory, orders, marketing, and analytics, running locally with your own keys.</strong>
8
+ <strong>The eBay MCP server — give Claude, Cursor, and any AI assistant full access to eBay's Sell APIs. 384 tools for inventory, orders, marketing, and analytics, running locally with your own keys.</strong>
9
9
  </p>
10
10
 
11
11
  <p align="center"><sub>Unofficial, open-source project — not affiliated with, authorized, or endorsed by eBay Inc.</sub></p>
@@ -20,7 +20,7 @@
20
20
  </p>
21
21
 
22
22
  <p align="center">
23
- <img src="https://img.shields.io/badge/tools-313-8957e5?logo=ebay&logoColor=white" alt="313 eBay API tools" />
23
+ <img src="https://img.shields.io/badge/tools-384-8957e5?logo=ebay&logoColor=white" alt="384 eBay API tools" />
24
24
  <img src="https://img.shields.io/badge/Sell%20API%20coverage-100%25-success" alt="100% eBay Sell API coverage" />
25
25
  <img src="https://img.shields.io/badge/Model%20Context%20Protocol-compatible-000000" alt="Model Context Protocol compatible" />
26
26
  <img src="https://img.shields.io/badge/tests-1%2C000%2B%20passing-3fb950?logo=vitest&logoColor=white" alt="Over 1,000 passing tests" />
@@ -31,23 +31,11 @@
31
31
  <a href="https://mseep.ai/app/yosefhayim-ebay-api-mcp-server"><img src="https://mseep.net/pr/yosefhayim-ebay-api-mcp-server-badge.png" alt="MseeP.ai Security Assessment Badge" height="40" /></a>
32
32
  </p>
33
33
 
34
- <p align="center">
35
- <strong>English</strong> ·
36
- <a href="README.zh-CN.md">简体中文</a> ·
37
- <a href="README.es.md">Español</a> ·
38
- <a href="README.pt-BR.md">Português (BR)</a> ·
39
- <a href="README.ja.md">日本語</a> ·
40
- <a href="README.ko.md">한국어</a> ·
41
- <a href="README.fr.md">Français</a> ·
42
- <a href="README.de.md">Deutsch</a> ·
43
- <a href="README.ru.md">Русский</a>
44
- </p>
45
-
46
34
  ---
47
35
 
48
- **eBay MCP** is a local [Model Context Protocol](https://modelcontextprotocol.io) server that connects AI assistants — [Claude Desktop](https://claude.ai/download), [Claude Code](https://code.claude.com/docs/en/overview), [Cursor](https://cursor.com/), [Cline](https://cline.bot/), [Windsurf](https://windsurf.com/), [Zed](https://zed.dev/), [Continue.dev](https://docs.continue.dev/), [Roo Code](https://roocode.com/), and [Amazon Q Developer](https://aws.amazon.com/q/developer/) — directly to **[eBay's Sell APIs](https://developer.ebay.com/api-docs/sell/static/overview.html)**. It exposes **313 tools** spanning **100% of eBay's Sell API surface** (283 unique endpoints) for inventory management, order fulfillment, promoted-listings marketing, analytics, and developer tooling. Everything runs on your machine over STDIO or local HTTP — **no cloud relay**, and your eBay credentials never leave your computer.
36
+ **eBay MCP** is a local [Model Context Protocol](https://modelcontextprotocol.io) server that connects AI assistants — [Claude Desktop](https://claude.ai/download), [Claude Code](https://code.claude.com/docs/en/overview), [Cursor](https://cursor.com/), [Cline](https://cline.bot/), [Windsurf](https://windsurf.com/), [Zed](https://zed.dev/), [Continue.dev](https://docs.continue.dev/), [Roo Code](https://roocode.com/), and [Amazon Q Developer](https://aws.amazon.com/q/developer/) — directly to **[eBay's Sell APIs](https://developer.ebay.com/api-docs/sell/static/overview.html)**. It exposes **384 tools** spanning **100% of eBay's Sell API surface** (360 unique endpoints) for inventory management, order fulfillment, promoted-listings marketing, analytics, and developer tooling. Everything runs on your machine over STDIO or local HTTP — **no cloud relay**, and your eBay credentials never leave your computer.
49
37
 
50
- > **Disclaimer:** Unofficial, third-party project — **not affiliated with or endorsed by eBay Inc.** Provided "as is" without warranty. You are responsible for complying with [eBay's API License Agreement](https://developer.ebay.com/join/api-license-agreement) and [data-handling requirements](https://developer.ebay.com/api-docs/static/data-handling-update.html), keeping your credentials secure, and staying within rate limits. Test in sandbox before production. See [LICENSE](LICENSE), [SECURITY.md](SECURITY.md), and [EBAY_COMPLIANCE.md](EBAY_COMPLIANCE.md).
38
+ > **Disclaimer:** Unofficial, third-party project — **not affiliated with or endorsed by eBay Inc.** Provided "as is" without warranty. You are responsible for complying with [eBay's API License Agreement](https://developer.ebay.com/join/api-license-agreement) and [data-handling requirements](https://developer.ebay.com/api-docs/static/data-handling-update.html), keeping your credentials secure, and staying within rate limits. Test in sandbox before production. See [LICENSE](LICENSE).
51
39
 
52
40
  ## Table of contents
53
41
 
@@ -71,11 +59,11 @@
71
59
 
72
60
  ## Features
73
61
 
74
- - **313 eBay API tools** — 100% coverage of the eBay Sell APIs across inventory, orders, marketing, analytics, metadata, taxonomy, and developer tooling.
62
+ - **384 eBay API tools** — 100% coverage of the eBay Sell APIs across inventory, orders, marketing, analytics, metadata, taxonomy, and developer tooling.
75
63
  - **9 AI clients, auto-configured** — Claude Desktop, Cursor, Zed, Cline, Continue.dev, Windsurf, Roo Code, Claude Code CLI, and Amazon Q Developer.
76
64
  - **OAuth 2.0 built in** — full user-token management with automatic refresh, and smart fallback from user tokens (10k–50k req/day) to client credentials (1k req/day).
77
65
  - **Resilient by default** — automatic retry with exponential backoff on `429` rate limits, and consistent, loud error surfacing.
78
- - **Type-safe** — [TypeScript](https://www.typescriptlang.org/) end to end, [Effect](https://effect.website/docs)-backed tool input validation, and [OpenAPI](https://www.openapis.org/)-generated types.
66
+ - **Type-safe** — [TypeScript](https://www.typescriptlang.org/) end to end, [Zod](https://zod.dev/)-validated tool inputs, and [OpenAPI](https://www.openapis.org/)-generated types.
79
67
  - **Local-first & private** — runs over STDIO or local HTTP; your credentials and data never leave your machine.
80
68
  - **Sandbox and production** — switch environments with a single variable.
81
69
  - **One-command setup** — `npm run setup` configures credentials, OAuth, and your MCP client, with a browser auto-opened for the OAuth flow.
@@ -87,14 +75,18 @@ Use this map when deciding which tool family to expose, or when asking an assist
87
75
 
88
76
  | Family | What it unlocks | Good first request |
89
77
  | --- | --- | --- |
90
- | `account` | Business policies, fulfillment policies, payment policies, return policies, sales tax, subscriptions, and programs | "Show my eBay fulfillment policies." |
78
+ | `account` | Business policies, fulfillment policies, payment policies, return policies, sales tax, subscriptions, programs, rate-table shipping costs, payout settings, combined shipping rules, and user preferences (Account API v2) | "Show my eBay fulfillment policies." |
79
+ | `finances` | Payouts, payout summaries, transactions, transfers, seller funds, billing activity, and order earnings | "Summarize my payouts from the last 30 days." |
91
80
  | `inventory` | Inventory items, offers, inventory locations, item groups, bulk offer flows, and SKU/location mapping | "List my active inventory items and their available quantity." |
81
+ | `feed` | Asynchronous order, inventory, and customer-service-metric report tasks, recurring schedules, and feed file upload/download | "Create an order report task for the last 10 days." |
82
+ | `stores` | eBay Store details, store categories (add, rename, move, delete), and category task status | "Show my eBay Store category tree." |
92
83
  | `fulfillment` | Orders, shipping fulfillments, refunds, payment disputes, and dispute evidence | "Show unfulfilled orders from the last 7 days." |
84
+ | `logistics` | Shipping quotes, label purchase, shipments, and label download (limited-release Logistics API) | "Get shipping rate quotes for this order." |
93
85
  | `browse` | Sold/completed listing search (Finding API) for pricing comps | "What have similar items sold for recently?" |
94
86
  | `marketing` | Promoted Listings campaigns, ads, promotions, bidding, and marketing reports | "List my active promoted listing campaigns." |
95
87
  | `analytics` | Traffic reports, seller standards, and customer-service metrics | "Show my seller standards profile." |
96
88
  | `communication` | Buyer-seller messaging, negotiations, notifications, and feedback | "Show recent buyer messages that need a response." |
97
- | `metadata` / `taxonomy` | Category trees, aspects, item conditions, return-policy metadata, tax jurisdictions, and vehicle compatibility | "Find required item aspects for this category." |
89
+ | `metadata` / `taxonomy` | Category trees, aspects, item conditions, return-policy metadata, tax jurisdictions, vehicle compatibility, shipping carriers/services/locations, handling times, expired categories, bulk aspect export, and charitable organizations | "Find required item aspects for this category." |
98
90
  | `other` | Identity, VeRO, translation, and international shipping support APIs (Compliance tools remain but report eBay's 2026-03-30 decommission) | "Show my current seller identity details." |
99
91
  | `developer` / `token-management` | Rate limits, signing keys, OAuth URLs, token refresh, and diagnostics | "Check my eBay API rate limits." |
100
92
  | `trading` | Legacy XML listing create, revise, relist, and end operations for fixed-price listings and auctions | "Create a fixed-price listing draft from this SKU." |
@@ -221,6 +213,48 @@ returned to the caller.
221
213
  See eBay's [Media API overview](https://developer.ebay.com/api-docs/commerce/media/static/overview.html)
222
214
  and [release notes](https://developer.ebay.com/api-docs/commerce/media/static/release-notes.html).
223
215
 
216
+ ### Finances, feeds, stores, and shipping labels
217
+
218
+ These families cover the rest of the Sell APIs: Finances, Feed, Stores, Logistics, and Account
219
+ v2, plus the Metadata shipping, Taxonomy, and Charity endpoints that were missing:
220
+
221
+ | Family | What it adds |
222
+ | --- | --- |
223
+ | `finances` | Read-only payouts, payout and transaction summaries, transactions, transfers, seller funds, billing activity, and order earnings |
224
+ | `feed` | Order, inventory, and customer-service-metric report tasks; LMS and Seller Hub upload tasks; recurring schedules and templates; input and result files |
225
+ | `stores` | eBay Store details and store category changes (add, rename, move, delete) with task polling |
226
+ | `logistics` | Shipping quotes, postage purchase, shipments, cancellation, and PDF labels |
227
+ | `account` | Account API v2 rate tables, split payouts (mainland China sellers), combined shipping rules, and user preferences |
228
+ | `metadata` / `taxonomy` | Shipping carriers, services, locations, and handling times; expired categories; the bulk aspect export; charity organization lookup |
229
+
230
+ **Asynchronous changes.** Feed tasks and store category changes return a `taskId` read from
231
+ eBay's `Location` header (feed schedules return a `scheduleId`). Poll `ebay_get_feed_task` or
232
+ `ebay_get_store_task` until the task finishes, then fetch any result file. eBay allows one store
233
+ category change in flight at a time.
234
+
235
+ **Files in and out.** Downloads (feed input, result, and schedule files, shipping labels, and the
236
+ Taxonomy aspect export) come back as embedded MCP resources with base64 bytes; nothing is written
237
+ to disk. A file over **25 MiB** fails with an error as soon as its size is known, without reading
238
+ the rest. The aspect export for large marketplaces such as `EBAY_US` exceeds that limit, so use
239
+ `ebay_get_item_aspects_for_category` per category there. `ebay_upload_feed_task_file` reads a local
240
+ `.xml`, `.csv`, `.zip`, or `.gz` file of up to 15 MiB (eBay's data file limit) through the same
241
+ `EBAY_MCP_MEDIA_DIRS` / `EBAY_MCP_MEDIA_ROOT` allowlist as the media tools.
242
+
243
+ **Money moves.** `ebay_create_shipment_from_shipping_quote` buys postage and charges the seller's
244
+ billing agreement; `ebay_cancel_shipment` refunds it while the label is unused.
245
+
246
+ **Optional scopes.** Two scopes are recognized but never requested by default:
247
+
248
+ - `https://api.ebay.com/oauth/api_scope/sell.finances.earnings.read` for the three order-earnings
249
+ tools.
250
+ - `https://api.ebay.com/oauth/api_scope/sell.logistics` for every Logistics tool; the API is limited
251
+ release.
252
+
253
+ Eligible keysets add the scope to `EBAY_OAUTH_SCOPES`, keeping the other scopes they need, and
254
+ repeat OAuth consent. eBay requires Digital Signatures on Finances calls for sellers in the EU and
255
+ UK, and this server does not sign requests yet, so those sellers get eBay's signature error from
256
+ the Finances tools.
257
+
224
258
  ## eBay MCP vs. the raw eBay API
225
259
 
226
260
  Both talk to the same eBay endpoints — the difference is everything you'd otherwise build yourself.
@@ -230,10 +264,10 @@ Both talk to the same eBay endpoints — the difference is everything you'd othe
230
264
  | Interface | Natural language through your AI assistant | Hand-written HTTP requests and JSON parsing |
231
265
  | OAuth & token refresh | Built in, with automatic refresh | You implement and maintain it |
232
266
  | Rate-limit handling | Automatic retry with exponential backoff | Manual `429` handling and backoff |
233
- | Input validation | Effect-backed schemas + TypeScript types on every tool | None — you validate your own payloads |
267
+ | Input validation | Zod schemas + TypeScript types on every tool | None — you validate your own payloads |
234
268
  | Setup | One wizard (`npm run setup`) | Per-call auth, headers, and marketplace wiring |
235
269
  | AI client support | 9 clients auto-configured | Not applicable |
236
- | API coverage | 313 tools across 100% of the Sell APIs, ready to call | Build each request from the docs |
270
+ | API coverage | 384 tools across 100% of the Sell APIs, ready to call | Build each request from the docs |
237
271
  | Hosting | Runs locally, no cloud relay | Your own infrastructure |
238
272
 
239
273
  ## One-click AI setup
@@ -347,7 +381,7 @@ https://github.com/user-attachments/assets/0173c8df-221c-4943-a4ce-cd20bce79f4b
347
381
  <details open>
348
382
  <summary><strong>Environment variables, tool exposure, auth &amp; client compatibility</strong></summary>
349
383
 
350
- > 📖 Full reference — every environment variable, OAuth step, and scope — is in the [Configuration Guide](docs/auth/CONFIGURATION.md). `npm run setup` writes the `.env` for you; the variables below are for reference.
384
+ > `npm run setup` writes the `.env` for you; the variables below are for reference.
351
385
 
352
386
  ```bash
353
387
  EBAY_CLIENT_ID=your_client_id
@@ -362,12 +396,13 @@ EBAY_MCP_UI=on # interactive MCP Apps views (beta); "off" f
362
396
  EBAY_MCP_TOOLS=all # tool exposure: "all", "dynamic", or a family list (see below)
363
397
  EBAY_READ_ONLY=false # when true, only register read-only tools (gets/lists/searches)
364
398
  # Local photo/video upload (optional — off until a directory is allowed):
365
- # EBAY_MCP_MEDIA_DIRS=/srv/media # path-delimited directories the media tools may read
399
+ # EBAY_MCP_MEDIA_DIRS=/srv/media # path-delimited directories the media and feed upload tools may read
366
400
  # EBAY_MCP_MEDIA_ROOT=/srv/media # root for media://<relative-path> references (also allowed)
367
401
  # HTTP deploy (optional — Docker / Railway / self-hosted):
368
402
  # MCP_HOST=0.0.0.0 # default is 0.0.0.0 when PORT is set
369
403
  # MCP_PORT=3000 # preferred over platform PORT
370
404
  # MCP_AUTH_TOKEN=secret # static Bearer for HTTP MCP (skips OAuth verifier)
405
+ # MCP_CORS_ORIGINS=https://app.example.com # browser origins allowed cross-origin (comma-separated); default: loopback origins only
371
406
  ```
372
407
 
373
408
  ### Tool exposure (`EBAY_MCP_TOOLS`)
@@ -380,7 +415,7 @@ By default all tools are advertised to the agent at once. On a long conversation
380
415
  | `dynamic` | Only three discovery tools are visible (`list_ebay_tools`, `enable_ebay_tools`, `disable_ebay_tools`). The agent searches the catalogue and loads only the tools it needs; they then appear natively. | hosts that honor `tools/listChanged` (e.g. Claude) |
381
416
  | `inventory,fulfillment,…` | Registers **only** the named families (listed below), frozen for the session. | every host (incl. ChatGPT, Cursor) |
382
417
 
383
- The family list is literal — you get exactly what you name. ChatGPT connectors need the `connector` family (its `search`/`fetch` tools); add it explicitly, e.g. `EBAY_MCP_TOOLS=connector,inventory`. An unknown family name fails fast at startup with the valid list. Valid families: `connector`, `token-management`, `account`, `inventory`, `fulfillment`, `marketing`, `analytics`, `metadata`, `taxonomy`, `communication`, `browse`, `other`, `developer`, `trading`.
418
+ The family list is literal — you get exactly what you name. ChatGPT connectors need the `connector` family (its `search`/`fetch` tools); add it explicitly, e.g. `EBAY_MCP_TOOLS=connector,inventory`. An unknown family name fails fast at startup with the valid list. Valid families: `connector`, `token-management`, `account`, `finances`, `inventory`, `feed`, `stores`, `fulfillment`, `logistics`, `marketing`, `analytics`, `metadata`, `taxonomy`, `communication`, `browse`, `other`, `developer`, `trading`.
384
419
 
385
420
  ### Authentication & rate limits
386
421
 
@@ -389,7 +424,7 @@ The family list is literal — you get exactly what you name. ChatGPT connectors
389
424
  | **Client credentials** (default) | 1,000 req/day | Development, testing | Automatic with Client ID + Secret |
390
425
  | **User token** (recommended) | 10k–50k req/day | Production, high volume | OAuth via `npm run setup` |
391
426
 
392
- User-token limits vary by account tier (Individual 10k · Commercial 25k · Enterprise 50k+). On a `429`, the server retries with exponential backoff and surfaces the error. See the [Configuration Guide](docs/auth/CONFIGURATION.md) and [OAuth Quick Reference](docs/auth/OAUTH_QUICK_REFERENCE.md) for details, and monitor usage in the [Developer Portal](https://developer.ebay.com/my/api_usage).
427
+ User-token limits vary by account tier (Individual 10k · Commercial 25k · Enterprise 50k+). On a `429`, the server retries with exponential backoff and surfaces the error. Monitor usage in the [Developer Portal](https://developer.ebay.com/my/api_usage).
393
428
 
394
429
  ### MCP client compatibility
395
430
 
@@ -412,21 +447,25 @@ Auto-configured by `npm run setup`. Requires [Node.js](https://nodejs.org/en)
412
447
  ## Available tools
413
448
 
414
449
  <details open>
415
- <summary><strong>313 tools by category (100% Sell API coverage)</strong></summary>
450
+ <summary><strong>384 tools by category (100% Sell API coverage)</strong></summary>
416
451
 
417
- **313 tools**, 100% Sell API coverage, organized by category. Each link points to the tool definitions and handlers in [`src/tools/categories/`](src/tools/categories/):
452
+ **384 tools**, 100% Sell API coverage, organized by category. Each link points to the tool definitions and handlers in [`src/tools/categories/`](src/tools/categories/):
418
453
 
419
454
  | Category | What you can do |
420
455
  | --- | --- |
421
456
  | [Connector](src/tools/categories/connector.ts) | ChatGPT connector search/fetch tools over the eBay MCP catalogue |
422
- | [Account](src/tools/categories/account.ts) | Business, fulfillment, payment, and return policies; programs; subscriptions; sales tax |
457
+ | [Account](src/tools/categories/account.ts) | Business, fulfillment, payment, and return policies; programs; subscriptions; sales tax; rate tables, payout settings, combined shipping rules, and user preferences ([`accountV2.ts`](src/tools/categories/accountV2.ts), Account API v2) |
458
+ | [Finances](src/tools/categories/finances.ts) | Payouts, transactions, transfers, seller funds, billing activity, order earnings |
423
459
  | [Inventory](src/tools/categories/inventory.ts) | Inventory items, offers, locations, item groups, bulk operations, SKU/location mapping, and local photo/video upload ([`media.ts`](src/tools/categories/media.ts), Media API) |
460
+ | [Feed](src/tools/categories/feed.ts) | Order, inventory, and customer-service-metric feed tasks; schedules and templates; feed file upload/download |
461
+ | [Stores](src/tools/categories/stores.ts) | eBay Store details, store categories, category tasks |
424
462
  | [Fulfillment](src/tools/categories/fulfillment.ts) | Orders, shipping, refunds, disputes, payment-dispute evidence |
463
+ | [Logistics](src/tools/categories/logistics.ts) | Shipping quotes, label purchase, shipments, label download (limited release) |
425
464
  | [Marketing](src/tools/categories/marketing.ts) | Promoted-listings campaigns, ads, promotions, bidding, bulk operations |
426
465
  | [Analytics](src/tools/categories/analytics.ts) | Traffic reports, seller standards, customer-service metrics |
427
466
  | [Communication](src/tools/categories/communication.ts) | Buyer–seller messaging, negotiations, notifications, feedback |
428
- | [Metadata](src/tools/categories/metadata.ts) | Return policies, sales-tax jurisdictions, automotive compatibility |
429
- | [Taxonomy](src/tools/categories/taxonomy.ts) | Category trees, item aspects, item conditions |
467
+ | [Metadata](src/tools/categories/metadata.ts) | Return policies, sales-tax jurisdictions, automotive compatibility, shipping carriers/services/locations, handling times |
468
+ | [Taxonomy](src/tools/categories/taxonomy.ts) | Category trees, item aspects, item conditions, expired categories, bulk aspect export, and charitable organizations ([`charity.ts`](src/tools/categories/charity.ts), Charity API) |
430
469
  | [Other](src/tools/categories/other.ts) | Identity, VeRO, translation, and international shipping support APIs (Compliance tools report eBay decommission) |
431
470
  | [Trading (legacy XML)](src/tools/categories/trading.ts) | Fixed-price and auction listing create, revise, relist, end |
432
471
  | [Developer](src/tools/categories/developer.ts) | Rate limits, signing keys, client registration |
@@ -461,7 +500,7 @@ On hosts that support [MCP Apps](https://modelcontextprotocol.io), common read t
461
500
  | **Chart** | `ebay_get_traffic_report`, `ebay_get_customer_service_metric` |
462
501
  | **Stat** | `ebay_get_rate_limits`, `ebay_get_user_rate_limits` |
463
502
 
464
- The views build into self-contained HTML with `npm run build` (or `npm run build:ui`); they ship in the published package and load with no network access of their own.
503
+ The views build into self-contained HTML with `pnpm build` (or `pnpm build:mcp-apps`); they ship in the published package and load with no network access of their own.
465
504
 
466
505
  </details>
467
506
 
@@ -483,22 +522,22 @@ Common tasks, phrased as you'd ask your AI assistant:
483
522
 
484
523
  - **Unofficial project.** This is not an eBay product and does not grant any additional API rights beyond your own eBay Developer account.
485
524
  - **Local server, live APIs.** The MCP server runs on your machine, but tools still call eBay's sandbox or production APIs over the internet.
486
- - **Mutating tools can change seller data.** Inventory, fulfillment, marketing, and Trading tools may create, revise, refund, end, or otherwise update eBay records. Test in sandbox first.
525
+ - **Mutating tools can change seller data.** Inventory, fulfillment, marketing, account, feed, stores, and Trading tools may create, revise, refund, end, or otherwise update eBay records, and `ebay_create_shipment_from_shipping_quote` purchases postage. Test in sandbox first.
487
526
  - **Tool exposure is configurable.** Use `EBAY_MCP_TOOLS=dynamic` or a family list when you want a smaller, workflow-specific tool surface.
488
527
  - **Interactive views are read-only.** MCP Apps views can page, refresh, and drill into read tools, but they do not mutate eBay data.
489
528
  - **Compliance remains yours.** Keep credentials secure, monitor rate limits, and follow eBay's API terms and data-handling rules.
490
529
 
491
530
  ## Logging & troubleshooting
492
531
 
493
- - **Logging** — Winston-based, written to stderr (MCP-safe) with optional file output. See [docs/logging.md](docs/logging.md).
494
- - **Troubleshooting** — server not appearing, auth errors, rate limits, empty results. Start with `npm run diagnose`, then see [docs/troubleshooting.md](docs/troubleshooting.md).
532
+ - **Logging** — Winston-based, written to stderr (MCP-safe) with optional file output.
533
+ - **Troubleshooting** — server not appearing, auth errors, rate limits, empty results. Start with `npm run diagnose`.
495
534
 
496
535
  ## FAQ
497
536
 
498
537
  <details>
499
538
  <summary><strong>What is the eBay MCP server?</strong></summary>
500
539
 
501
- A local [Model Context Protocol](https://modelcontextprotocol.io) server that exposes **313 tools** covering **100% of eBay's Sell APIs** (283 endpoints) to AI assistants — inventory, order fulfillment, marketing, analytics, and developer tools.
540
+ A local [Model Context Protocol](https://modelcontextprotocol.io) server that exposes **384 tools** covering **100% of eBay's Sell APIs** (360 endpoints) to AI assistants — inventory, order fulfillment, marketing, analytics, and developer tools.
502
541
 
503
542
  </details>
504
543
 
@@ -526,14 +565,14 @@ Yes. It works with Claude Desktop and Claude Code out of the box, with Cursor an
526
565
  <details>
527
566
  <summary><strong>Why don't I see the interactive tables and charts?</strong></summary>
528
567
 
529
- Interactive [MCP Apps](#interactive-ui-mcp-apps) views only appear on hosts that announce the capability (e.g. Claude); other clients get the same data as plain JSON. Also confirm you have not set `EBAY_MCP_UI=off` and that the views are built (`npm run build` runs `build:ui`).
568
+ Interactive [MCP Apps](#interactive-ui-mcp-apps) views only appear on hosts that announce the capability (e.g. Claude); other clients get the same data as plain JSON. Also confirm you have not set `EBAY_MCP_UI=off` and that the views are built (`pnpm build` runs `build:mcp-apps`).
530
569
 
531
570
  </details>
532
571
 
533
572
  <details>
534
573
  <summary><strong>How many eBay APIs and tools does it cover?</strong></summary>
535
574
 
536
- 313 tools across 283 unique endpoints — 100% of eBay's Sell APIs.
575
+ 384 tools across 360 unique endpoints — 100% of eBay's Sell APIs.
537
576
 
538
577
  </details>
539
578
 
@@ -575,21 +614,21 @@ Yes. Switch with the `EBAY_ENVIRONMENT` variable (`sandbox` or `production`).
575
614
  <details>
576
615
  <summary><strong>Are my credentials and data secure?</strong></summary>
577
616
 
578
- Credentials are stored locally in your `.env` file and used only to call eBay directly. See [SECURITY.md](SECURITY.md) and [EBAY_COMPLIANCE.md](EBAY_COMPLIANCE.md).
617
+ Credentials are stored locally in your `.env` file and used only to call eBay directly.
579
618
 
580
619
  </details>
581
620
 
582
621
  <details>
583
622
  <summary><strong>How is this different from calling the eBay API directly?</strong></summary>
584
623
 
585
- You interact in natural language through your AI assistant. OAuth token management, automatic retries with backoff, and type-safe Effect-backed validation are built in. See the [comparison table](#ebay-mcp-vs-the-raw-ebay-api) above.
624
+ You interact in natural language through your AI assistant. OAuth token management, automatic retries with backoff, and type-safe Zod validation are built in. See the [comparison table](#ebay-mcp-vs-the-raw-ebay-api) above.
586
625
 
587
626
  </details>
588
627
 
589
628
  <details>
590
629
  <summary><strong>Can it upload my photos and videos?</strong></summary>
591
630
 
592
- Yes. `ebay_upload_images`, `ebay_upload_video`, and `ebay_attach_media_to_inventory_item` read local files (absolute paths or `media://` references) and upload them through eBay's Media API, returning EPS image URLs and video IDs for `product.imageUrls` / `product.videoIds`. Filesystem access is opt-in: nothing is readable until `EBAY_MCP_MEDIA_DIRS` or `EBAY_MCP_MEDIA_ROOT` names the directories. See [Photos and videos from local files](#photos-and-videos-from-local-files).
631
+ Yes. `ebay_upload_images`, `ebay_upload_video`, and `ebay_attach_media_to_inventory_item` read local files (absolute paths or `media://` references) and upload them through eBay's Media API, returning EPS image URLs and video IDs for `product.imageUrls` / `product.videoIds`. `ebay_upload_feed_task_file` uploads local feed files the same way. Filesystem access is opt-in: nothing is readable until `EBAY_MCP_MEDIA_DIRS` or `EBAY_MCP_MEDIA_ROOT` names the directories. See [Photos and videos from local files](#photos-and-videos-from-local-files).
593
632
 
594
633
  </details>
595
634
 
@@ -617,7 +656,7 @@ Complete the OAuth flow with `npm run setup` to authenticate with a user token (
617
656
  <details>
618
657
  <summary><strong>What is it built with?</strong></summary>
619
658
 
620
- TypeScript and Node.js (ESM), using the official MCP SDK, Effect-backed validation with a Zod-compatible MCP adapter, and OpenAPI-generated types.
659
+ TypeScript and Node.js (ESM), using the official MCP SDK, Zod schemas for tool inputs, Effect for typed async errors, and OpenAPI-generated types.
621
660
 
622
661
  </details>
623
662
 
@@ -637,28 +676,28 @@ No. "Runs locally" means the server process runs on your machine — it still ne
637
676
 
638
677
  ## Contributing
639
678
 
640
- Contributions welcome. Fork → branch → add tests → `npm run check && npm test` → commit with [Conventional Commits](https://www.conventionalcommits.org/) → open a PR.
679
+ Contributions welcome. Fork → branch → add tests → run the checks below → commit with [Conventional Commits](https://www.conventionalcommits.org/) → open a PR.
641
680
 
642
- - Working on the codebase or with a coding agent? Start with **[AGENTS.md](AGENTS.md)** — build/test commands, module map, and the add-an-endpoint workflow.
643
- - Code style lives in **[CODE-STYLE.md](CODE-STYLE.md)**. Architecture and decision context live in **[ARCHITECTURE.md](ARCHITECTURE.md)** and [ADRs](docs/adr/current/).
644
- - Full contribution guidelines: **[CONTRIBUTING.md](CONTRIBUTING.md)**.
681
+ ```bash
682
+ pnpm typecheck && pnpm typecheck:mcp-apps # TypeScript (server + MCP Apps views)
683
+ pnpm check:ci # Biome lint + format
684
+ pnpm test && pnpm test:integration # Vitest unit + integration
685
+ pnpm build # Build to build/
686
+ ```
645
687
 
646
688
  ## Resources
647
689
 
648
690
  Project docs:
649
691
 
650
- - [Configuration Guide](docs/auth/CONFIGURATION.md) — every environment variable, OAuth step, and eBay scope.
651
- - [OAuth Quick Reference](docs/auth/OAUTH_QUICK_REFERENCE.md) — scopes, troubleshooting, and examples.
652
- - [Logging Guide](docs/logging.md) and [Troubleshooting Guide](docs/troubleshooting.md) — operational help after setup.
653
- - [Architecture](ARCHITECTURE.md), [CODE-STYLE.md](CODE-STYLE.md), [AGENTS.md](AGENTS.md), and [llms.txt](llms.txt) — contributor and agent entry points.
654
- - [CHANGELOG.md](CHANGELOG.md), [SECURITY.md](SECURITY.md), [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), and the [Issue Tracker](https://github.com/YosefHayim/ebay-mcp/issues).
692
+ - [llms.txt](llms.txt) — a compact project summary for AI agents.
693
+ - [Releases](https://github.com/YosefHayim/ebay-mcp/releases) and the [Issue Tracker](https://github.com/YosefHayim/ebay-mcp/issues).
655
694
 
656
695
  Official specs and tooling:
657
696
 
658
697
  - [eBay Developer Portal](https://developer.ebay.com/), [Sell API docs](https://developer.ebay.com/api-docs/sell/static/overview.html), [API License Agreement](https://developer.ebay.com/join/api-license-agreement), [Data Handling Requirements](https://developer.ebay.com/api-docs/static/data-handling-update.html), and [API Status](https://developer.ebay.com/support/api-status).
659
698
  - [Model Context Protocol](https://modelcontextprotocol.io/) and the [MCP Apps SDK](https://github.com/modelcontextprotocol/ext-apps).
660
- - [Node.js](https://nodejs.org/en), [npm package](https://www.npmjs.com/package/ebay-mcp), [TypeScript](https://www.typescriptlang.org/), [Effect](https://effect.website/docs), [Biome](https://biomejs.dev/), [Vitest](https://vitest.dev/), and [GitHub Actions](https://docs.github.com/en/actions).
661
- - [AGENTS.md convention](https://agents.md/), [Claude Code](https://code.claude.com/docs/en/overview), [GitHub Copilot repository instructions](https://docs.github.com/en/copilot/how-tos/copilot-on-github/customize-copilot/add-custom-instructions/add-repository-instructions), and [llms.txt](https://llmstxt.org/).
699
+ - [Node.js](https://nodejs.org/en), [npm package](https://www.npmjs.com/package/ebay-mcp), [TypeScript](https://www.typescriptlang.org/), [Zod](https://zod.dev/), [Effect](https://effect.website/docs), [Biome](https://biomejs.dev/), [Vitest](https://vitest.dev/), and [GitHub Actions](https://docs.github.com/en/actions).
700
+ - [Claude Code](https://code.claude.com/docs/en/overview) and [llms.txt](https://llmstxt.org/).
662
701
 
663
702
  ## License
664
703