Skip to main content
Glama

ebay_attach_media_to_inventory_item

Attach local images/video to an eBay inventory item, preserving other data and not publishing offers. Appends or replaces media; failed uploads leave the item unchanged unless partial updates are allowed.

Instructions

Upload local pictures and/or a video and attach them to an existing inventory item: reads the item, uploads every file in order, then rewrites only product.imageUrls and product.videoIds (appending by default, replacing with replaceExisting). Everything else on the item is preserved and no offer is published. If any upload fails the item is left untouched and the per-file results are returned in the error, unless allowPartial is true.

Local file access is opt-in: the file must sit inside a directory listed in EBAY_MCP_MEDIA_DIRS (or under EBAY_MCP_MEDIA_ROOT, which also anchors media:// references). Symlinks are resolved before the check.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
skuYesSKU of the existing inventory item to attach media to
imagePathsNoImage files in listing order (appended to product.imageUrls unless replaceExisting)
videoPathsNoVideo files (appended to product.videoIds unless replaceExisting)
allowPartialNoUpdate the item with the uploads that succeeded even if some failed (default false: any failure leaves the item untouched)
replaceExistingNoReplace the item's current imageUrls/videoIds instead of appending (default: append)
waitForProcessingSecondsNoSeconds to wait for eBay to finish processing a video before returning (default 120). A video still PROCESSING can be checked later with ebay_get_video

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.16.0

TDQS

A4.7/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the annotation readOnlyHint=false: the read-modify-write sequence, atomicity (item left untouched on any upload failure unless allowPartial is true), per-file results in the error, the append-vs-replace behavior, and the local file access opt-in with EBAY_MCP_MEDIA_DIRS/EBAY_MCP_MEDIA_ROOT and symlink resolution. This goes far beyond what the schema and annotations provide.

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

Conciseness5/5

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

Two paragraphs, front-loaded with the core action, then the critical atomicity/failure behavior, then file-access constraints. Every sentence earns its place — the local access restriction is important because it was not in the schema's coverage and would otherwise cause failed calls. No filler.

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

Completeness5/5

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

This is a complex mutation tool (6 parameters, upload orchestration, partial-failure semantics, local-file access restrictions, video processing wait) but the description covers all the non-obvious operational concerns: order, atomicity, replace/append, allowPartial, local path constraints, and waitForProcessingSeconds' relation to ebay_get_video. The output schema is absent, but for attachment operations the description explains what happens on failure (per-file results in error). Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents parameters well. The description adds meaningful orchestration semantics beyond the schema: files are uploaded 'in order', the 'reading the item then rewriting only product.imageUrls and product.videoIds' behavior explains how imagePaths/videoPaths map to the item, and the failure/partial behavior for allowPartial. It does not deeply re-explain each parameter, but the schema already covers syntax; the description adds sequencing and failure semantics. Baseline for 100% coverage is 3; the added semantics justify a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Upload local pictures and/or a video and attach them to an existing inventory item.' It clearly delineates the exact fields modified (product.imageUrls and product.videoIds), distinguishes append vs. replace behavior, and notes what is preserved (everything else, no offer published). This distinguishes it well from siblings like ebay_create_or_replace_inventory_item, ebay_upload_images, ebay_upload_video, ebay_get_video, and ebay_create_offer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit context: use this to attach media to an existing inventory item, it appends by default, and can replace with replaceExisting. It states what the tool does not do ('no offer is published', 'Everything else on the item is preserved'), which helps an agent decide between this and update/create inventory item tools. However, it does not explicitly name sibling tools as alternatives or state when-not-to-use it (e.g., when you need to create the item itself). Clear context, but no explicit exclusions naming alternatives, so 4 rather than 5.

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

Deploy Server

Other Tools