The ebay-mcp server defines 15 tools with explicit schemas and descriptions visible in src/mcp-server/index.ts. All tools have descriptive names starting with action verbs (ebay_create_, ebay_search_, etc.) and contain inline JSON Schema definitions. However, critical gaps exist: (1) Output schemas are completely absent, no documentation of what these tools return, forcing LLMs to guess response structure. (2) Many parameter descriptions lack actionable constraints (e.g., 'categoryId: eBay category ID' provides no format guidance; valid IDs could be numeric, alphanumeric, or hierarchical). (3) No error handling guidance, tools provide no recovery instructions when calls fail (invalid category, SKU conflicts, auth failures). (4) Security concern: config loads EBAY_OAUTH_APPLICATION_TOKEN as a fallback refresh token, but this pattern is not articulated in the tool definitions or parameter safety notes. (5) Most tools have generic descriptions (50-100 chars) that do not explain WHEN to use them vs. similar tools (e.g., ebay_create_offer vs. ebay_publish_offer, the distinction is unclear without reading eBay API docs). The schemas themselves are well-formed with proper types and required arrays, bringing the score into the 'fair' range. Baseline comparison: 194 chars is average for tool descriptions; most here are 80-120, which is acceptable but brief and lacks nuance.
Create a new fulfillment policy for shipping and handling settings
Create or update an inventory item in eBay. This is the first step before creating an offer.
Create an offer for an inventory item. This creates a draft listing.
Create a new payment policy for payment terms and methods
Create a new return policy for buyer return terms
Mark an order as shipped with tracking info
No output schemas documented for any tool. LLMs cannot predict response structure, field names, or types, forcing them to infer from unguided API calls. This violates pattern:response-shaper and blocks effective tool composition.
Parameter descriptions lack actionable constraints. 'categoryId: eBay category ID' does not specify format (numeric vs. alphanumeric), valid range, or examples. 'condition: (e.g., NEW, LIKE_NEW, USED_EXCELLENT)' embeds examples in descriptions, which LLMs may reuse literally, should use enum constraints instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Get best offers on a listing. Returns offer details including buyer, price, status, and expiration.
Get details for a specific order
Get recent orders from eBay
Get seller policies (payment, return, fulfillment) - needed for creating offers
Leave feedback for a buyer after transaction completion
Publish an offer to make it a live eBay listing
Accept, decline, or counter a buyer Best Offer on a listing.
Search for similar items using image recognition
Search for similar items on eBay by keyword to research pricing
No error handling guidance. Tools do not document what happens on failure (SKU conflict, invalid category, auth timeout, rate limit). Without recovery hints, LLMs cannot self-correct or ask for help.
Tool descriptions are brief (40 - 70 chars) and lack WHEN/WHY guidance. 'Publish an offer to make it a live eBay listing' does not explain prerequisites (must create_inventory_item first? must set policies?), preconditions, or why this differs from create_offer. This violates pattern:tool-description which requires context for selection.
Complex policy creation tools (fulfillment, payment, return) accept 'categoryTypes' and 'shippingOptions' as generic objects without schema documentation. LLMs cannot know what fields these objects require. Input should define nested schema or provide enum/constraint guidance.
Search tools (ebay_search_by_keyword, ebay_search_by_image) lack pagination guidance. No mention of default/max limits, whether results are paginated, or how to fetch more. Large result sets will blow context windows; pattern:paginated-result requires explicit limit + cursor/offset handling.
Security: EBAY_OAUTH_APPLICATION_TOKEN fallback as refreshToken is not documented in tool descriptions or parameter notes. No mention of token handling, scopes, or per-tool permission requirements. Violates pattern:scope-declaration and pattern:secret-injection.
No idempotency hints. Tools like ebay_create_inventory_item and ebay_create_offer do not state whether repeated calls with identical input are safe or will create duplicates. This blocks agent retry strategies and violates pattern:idempotent-operation.