change_revert
ChatGPTUndo a change by the recovery_ref its receipt returned, or the recovery_ref operation_read or operations_find shows for an applied operation. A single-listing change is undone at once and returns a receipt; an operation is rolled back by a new operation whose handle this returns, and a listing whose field changed again since is reported as blocked rather than overwritten. A recovery_ref that is unknown or already undone is refused with recovery_unavailable. Org-scoped.
listing_create
ChatGPTCreate a listing from nothing, or from_listing_id to deep-copy an existing listing's workspace fields into a new one (never its Etsy identity or state). Give exactly one form. Returns the new listing_id, the target for every later edit.
listing_photos_edit
ChatGPTArrange one listing's photos and videos: add a photo from a chat file, URL or uploaded asset, reserve an upload slot, reorder, remove, set alt text, or add, replace, or remove a video. Not destructive — a remove is recovered by re-adding the asset, not by field revert. Variation-photo associations move only through the variation authoring family (listing_variations_preview/apply/propose).
listing_read
ChatGPTRead everything about one listing, on demand and by part. parts is a subset of the eleven listing parts; include adds summary, the publish-grade Etsy diff, or plain-words publish blockers. media_candidates pages candidate photos with asset IDs for listing_photos_edit add target=active; Use media_gallery for browsing and selecting active photos: an exclusive bounded page without read_id or full photos coverage. Continue on request with next_offset and revision, or use the widget navigation. photo_preview={media_id} returns one bounded native MCP photo preview for an explicitly requested individual image; never use a preview-call burst as a fallback for an oversized gallery or photos read. it is exclusive of other read modes and grants no read coverage. A fitting category_attributes read gives attribute_entries keyed by property_id for an attributes write, preserving value ids, scale ids and multiple values; attributes itself is display text only. A fitting read returns read_id for a later write. Description is available through content exact mode in bounded fragments; other oversized indivisible fields retain their refusal. Content preview is an excerpt with no write coverage. content.field=notes reads private Workspace notes through the same bounded chain, without write coverage or an Etsy source. compact=true replaces repeated description comparison values with exact-content selectors, without covering omitted values, and counts successful readiness checks while retaining every failed check. Prefer compact when combining photos and publish_blockers. Use shop_overview for a shop-wide question and listings_find to locate a listing by seller-facing facts; never ask the seller for an internal listing_id. Read-only; listing-scoped.
listings_edit
ChatGPTChange listing fields on one listing, on the listings named by listing_ids, or on every listing a query finds. For one seller intent on the same targets, bundle compatible changes in one changes array rather than calling once per field. Resolve needed references first. Change category before looking up category-dependent attributes. Send attributes, annotations, labels, and description replace_text separately from other field changes. Use a fresh client_request_id for a new intent; reuse it only to retry the identical request. Each change is {field, apply}: set a value, merge items into a list, transform with a named op (replace_text {find, replace} in text, increase_percent on price, remove_values from a list), or assign one value per listing id. For assign, include at most 10 listings per call; split larger sets into smaller calls. Setting return_policy_id to null clears Workspace only; if Etsy has a selected policy, publish will refuse that clear. Use another policy id to replace it. A change to one listing is saved at once and returns a receipt whose recovery_ref undoes it through change_revert; there, a replace_text find must occur exactly once in the description and needs based_on_read. A change across several listings, or one that needs confirming such as a category change, returns an operation handle: read its summary and confirm it with operation_authorize, or set apply_safe_proposals=true to confirm a self-authorizable proposal in this call using the same policy and frozen-preview checks. This requires the operation_authorize grant for a name-scoped connection. Seller-only proposals remain proposed. Execution is asynchronous: use the returned status and handle with operation_read to check completion; authorized does not mean applied. Labels apply at once across any number of listings with no operation_authorize step; follow its handle with operation_read. Example: {"client_request_id": "c1", "listing_id": "<id>", "changes": [{"field": "tags", "apply": {"mode": "merge", "append": ["gift"]}}, {"field": "materials", "apply": {"mode": "set", "value": ["cotton"]}}]}. Org-scoped.
listings_find
ChatGPTDiscover and size a set of listings by a ListingQuery, or read named fields for explicit listing_ids. Returns bounded rows and a read_id a later set-write can bind to. Rows paginate to fit the budget; use next_offset. External MCP display_rows add presentation fields without expanding requested rows or read coverage. When the host displays the widget, avoid duplicating its photos and returned statistics as a Markdown table unless requested. For one listing card, use listing_ids=[id]. Selection supplies context for the next seller request, not write authority. Never both query and listing_ids. Read-only; org-scoped.
operation_authorize
ChatGPTAuthorize a proposed operation so it proceeds to execution — the normal next step after a proposal returns its handle. Refuses only where the operation is marked for the seller alone, answering with the Tusella review link. Repeating it changes nothing. Org-scoped.
operation_control
ChatGPTCancel a proposed or authorized operation, or pause, resume, or cancel queued or executing asynchronous work. Cancelling one that has not started yet ends it outright; cancelling a running one stops further work. Repeating an action changes nothing. Org-scoped.
operation_read
ChatGPTFollow an operation a proposal created: what it will do, what it did, where it stands. detail is summary (default), targets, or preview — never embeds every target in a summary. Read-only; org-scoped.
operations_find
ChatGPTLocate operations by conversation, listing, kind, or status — reaching one proposed in an earlier turn with no producer call. conversation defaults to current when the call carries a durable conversation, else any (the whole organization, including operations with no origin conversation). Every returned operation_id is admitted for operation_read and operation_control in this turn; a returned recovery_ref undoes that operation through change_revert. Read-only; org-scoped.
pin_create
ChatGPTCreate one real Tusella Pin draft. Drafting never submits. Choose a photo or ordered slides, account, board, text and destination.
pin_edit
ChatGPTEdit one draft using its last read revision. To undo a draft edit, read current state and edit the prior values. Submitted Pins refuse this draft operation.
pin_read
ChatGPTRead a real Tusella Pin’s current draft, revisions, delivery outcome and remote URL. Unknown or simulated outcomes are not publication proof.
pin_revert
ChatGPTUndo the most recent draft edit using its recovery_ref and current draft revision. Refuses when another change or submission has advanced the Pin.
pin_submit
ChatGPTPublish or schedule ONE Pin explicitly directed by the user. First obtain their specific Pin, account, board and timing instruction; do not submit a drafting-only request. Uses the separate Pinterest publication grant. Cancel only before sending; published Pins have no ordinary undo. A queued result is not proof of publication.
pins_find
ChatGPTFind Tusella Pins by shop, listing, Pinterest account or lifecycle, with bounded continuation.
pinterest_media_find
ChatGPTFind team photos or an attached listing’s photos, with Pinterest eligibility and reasons. Use media ids to prepare a Pin.
pinterest_media_import
ChatGPTImport one chat photo into your team's photo library. Returns a ready media_asset_id for single or carousel Pin drafts. No listing is required and importing never submits a Pin. Retry the same photo with the same client_request_id. Reuse file_id when possible; fresh upload IDs are replayed only after validating identical original bytes.
pinterest_media_preview
ChatGPTPreview one team photo as an inline image. Preview is optional before user-directed Pinterest submission.
pinterest_reference_lookup
ChatGPTFind accessible shops, Pinterest accounts, public boards or board sections. Each board page is live and account-specific.
publish_review_create
ChatGPTPrepare a durable Saved review for the seller to confirm in Tusella. Never dispatches, publishes, or schedules — the seller's own Publish click is the sole authorization. Give listing_ids or query, never both; a bound listing may be used when both are omitted. An optional name labels the set in Publishing. When no included listing is ready to publish, returns refused=true with the blockers instead of an error.
reference_lookup
ChatGPTFind the valid value before writing a constrained field: category search, category attributes and values, shop sections, shipping profiles, return policies, production partners (created/edited in Etsy), readiness (processing) definitions — the source of readiness_state_id — or the shop's labels (archived ones excluded unless include_archived is true). An empty result for a shop kind with zero rows is not an error. Shop reference rows also return reference_id, the local UUID for cross-shop Copy mappings; keep using the named provider IDs for listing edits. For attributes first use kind=category_attributes with include_values=false; required_only=true finds required attributes. If include_values is omitted, fitting catalogs remain complete and an oversized catalog returns compact descriptors instead. values_included=false means search/page category_attribute_values by taxonomy_id, property_id and the returned freshness.revision_id. Profile kinds accept entity_id with explicit shop_id for exact qualified parent fields/fingerprint; profile_section=usage, destinations or upgrades pages exact evidence. receipt_ref reads bounded before/after/provider/request evidence via receipt_section. Original processing units remain unknown without receipt input. Shop-profile reads never refresh; use shop_profiles_refresh explicitly. Keep revision_id and query unchanged across pages; restart discovery if a revision is unavailable. Read-only; org-scoped.
shop_overview
ChatGPTOrient on a shop before finding anything: listing counts by status and by change-vs-Etsy state, shop sections with listing counts, top tags, active-listing price range, and unpublished-changes count. Answers for a shop with zero listings. compact=true returns counts and explicit omissions; reference_lookup pages full shop sections, while top tags are a capped sample. Read-only; org-scoped.
team_overview
ChatGPTOrient on the connected team, its shops and their terms, your role and access. shops_page optionally pages current connected shops in stable ID order; consistency is live across pages.
change_revert
Claudelisting_create
Claudelisting_photos_edit
Claudelisting_read
Claudelistings_edit
Claudelistings_find
Claudeoperation_authorize
Claudeoperation_control
Claudeoperation_read
Claudeoperations_find
Claudepublish_review_create
Claudereference_lookup
Claudeshop_overview
Claudeteam_overview
Claude