ebay-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EBAY_MCP_SANDBOX_APP_ID | Yes | Sandbox App ID (Client ID) from eBay developer | |
| EBAY_MCP_SANDBOX_DEV_ID | Yes | Developer Account Dev ID | |
| EBAY_MCP_SANDBOX_CERT_ID | Yes | Sandbox Cert ID (Client Secret) - recommended to set via env var for security | |
| EBAY_MCP_ALLOW_HIGH_VALUE | No | Set to '1' to allow bids/buying over $500 per call |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| server_infoA | Return server version, active host, and configuration locations. The |
| list_hostsA | List every configured host with its status (default flag and cert availability). Useful for diagnosing why a tool call against a particular host might fail before you make the call. |
| searchA | Search eBay items via the Browse API. Args:
query: keyword search string. Required.
category_id: numeric eBay category ID to restrict the search.
condition: one of NEW, LIKE_NEW, NEW_OTHER, USED_EXCELLENT,
USED_VERY_GOOD, USED_GOOD, USED_ACCEPTABLE, FOR_PARTS_OR_NOT_WORKING,
MANUFACTURER_REFURBISHED, CERTIFIED_REFURBISHED, or several other
refurbished tiers. Case-sensitive.
min_price: minimum item price (in Returns: dict with: - host: which host was actually targeted - total: total matching items per eBay - limit, offset, next_offset (None when there's no next page) - hits: list of item summaries (item_id, title, price, currency, condition, seller, image_url, ends_at, buying_options, web_url, bid_count if applicable) |
| get_itemA | Fetch full details for a single eBay item by ID. Args:
item_id: the eBay item ID (e.g., "v1|353528728623|0"). Get these from
search() results.
marketplace: eBay marketplace ID (default "EBAY_US").
host: which configured host to use. Defaults to config's Returns: Full item dict including description, shipping options, seller details, return terms, item location, and the standard summary fields. If the item doesn't exist or has ended, returns {"item_id": item_id, "host": host, "missing": true}. |
| get_watchlistA | Return the authenticated user's watched items. Uses Trading API Args: limit: items per page (1-200). Default 100. offset: pagination offset. Trading API pages from 1; we translate. host: configured host name. Defaults to default_host. Returns:
dict with |
| get_active_bidsA | Return auctions where the user has a currently-active bid. Trading API GetMyeBayBuying.BidList. Includes both winning and outbid items still in their bidding period. Same response shape as |
| get_won_itemsA | Return items the user won at auction or bought via Buy It Now. Trading API GetMyeBayBuying.WonList. This is your effective "purchase history" for the eBay-native default lookback window (eBay shows the last 30 days by default; older items roll off the WonList container). Same response shape as |
| get_lost_itemsA | Return auctions where the user bid but did not win. Trading API GetMyeBayBuying.LostList. Default lookback ~30 days; older items roll off. Same response shape as |
| add_to_watchlistA | Add an item to the authenticated user's watchlist. Trading API Args:
item_id: numeric eBay item ID (from Returns:
dict with |
| remove_from_watchlistA | Remove an item from the authenticated user's watchlist. Trading API Args: item_id: numeric eBay item ID currently on the watchlist. host: configured host. Defaults to default_host. Returns:
dict with |
| start_user_authA | Begin OAuth2 user authentication for buyer-side eBay operations. Watchlist, MyeBay reads, bidding, and buying all require a user token.
This tool returns an Most workflows only run this once per host; tokens persist 18 months and auto-refresh. Args:
host: which configured host to authenticate against. Defaults to
config's Returns:
dict with |
| complete_user_authA | Finish OAuth2 user auth by exchanging the authorization code for tokens. The Args:
code: the authorization code from eBay's redirect URL.
state: optional — the state value from the redirect URL. If provided,
must match what start_user_auth stored. Mismatch returns a
structured refusal payload.
host: which configured host to authenticate against. Defaults to
config's Returns: On success: {host, authenticated: true, access_expires_at, refresh_expires_at} On state mismatch: {refused: true, reason: "state_mismatch", host, message: ...} |
| place_bidA | Place a proxy bid on an eBay auction. Trading API PlaceOffer with Action=Bid. eBay treats max_bid_amount as a proxy ceiling — it bids the minimum needed to outbid the current high bidder, and continues raising up to max_bid_amount as competing bids come in. PRODUCTION HOST WARNING: when the active host is "production", a successful call commits real money on eBay. Inspect server_info() or list_hosts() before committing. Args:
item_id: numeric eBay item ID. Get from search() or get_item().
max_bid_amount: the proxy bid ceiling in Returns: On success: dict with host, item_id, action="Bid", amount, currency, placed=True, current_price, minimum_to_outbid, high_bidder, and (on production) a warning field. On safety-gate failure: structured refusal payload (refused=True, reason, message, plus the offending values). Raises ValueError on empty item_id, non-positive amounts, etc. On eBay-side errors (listing ended, currency mismatch, insufficient bid, etc.) raises TradingApiError. |
| buy_nowA | Purchase a Buy It Now listing immediately at the listed price. Trading API PlaceOffer with Action=Purchase. The buyer commits to pay the listing's BIN price; eBay creates the order on success. PRODUCTION HOST WARNING: when the active host is "production", a successful call commits real money on eBay. Inspect server_info() or list_hosts() before committing. Args: item_id: numeric eBay item ID. Get from search() or get_item(). confirm_amount: must equal the listing's Buy-It-Now price exactly. The repeated dollar amount is a safety gate against stale prices or typos. Look up the current price with get_item() right before calling. quantity: number of units to purchase (default 1). Multi-quantity BIN listings can have a per-buyer limit; eBay rejects with TradingApiError if violated. currency: ISO currency code matching the listing (default "USD"). max_bid_override: optional ceiling that authorizes amounts above the $500 per-call safety cap. Pass a value >= confirm_amount to bypass the cap for this call. host: configured host name. Defaults to default_host. Returns: On success: dict with host, item_id, action="Purchase", amount, currency, quantity, placed=True, and (on production) a warning. On safety-gate failure: structured refusal payload. Raises ValueError / TradingApiError as in place_bid. |
| make_best_offerA | Submit a Best Offer on a listing that has Best Offer enabled. Trading API PlaceOffer with Action=BestOffer. The seller can accept, counter, or decline; this call only places the offer. PRODUCTION HOST WARNING: when the active host is "production" and the seller accepts, the offer becomes a binding sale at the offer amount. Args:
item_id: numeric eBay item ID. Must have Best Offer enabled —
check Returns: On success: dict with host, item_id, action="BestOffer", amount, currency, quantity, placed=True, optionally best_offer_id (for follow-up via Trading GetBestOffer / Accept flows), and (on production) a warning. On safety-gate failure: structured refusal payload. Raises ValueError / TradingApiError as in place_bid. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/acato/ebay-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server