Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "get_cockpit"
⟨76 unchanged words⟩ it health counts as UNKNOWN (yellow). Only ACTIVE marketplaces are listed (>= 10 units sold+pending in the last 30 days, from the data-hub); inactive ones are counted in dormant_summary. Always state the period and that amounts are VAT included.
{"properties":{"cockpit_id":{"type":"integer"},"include_dormant":{"description":"Include also dormant marketplaces (< 10 units in the last 30 days); default: hidden and counted in dormant_summary.","type":"boolean"},"include_health":{"type":"boolean"},"month" ⟨11 unchanged words⟩
Added "ads_update_sp_product_ad_state" (124 tools before, 125 now)
Mette in pausa o riattiva (ENABLED/PAUSED) uno o PIÙ product ad SP, cioè il singolo ASIN/SKU sponsorizzato dentro un ad group, senza toccare campagna o ad group. ad_id da ads_list_sp_product_ads. ARCHIVED non è ammesso (irreversibile). SINGOLA: ad_id + state. BATCH: items=[{ad_id, state}], MAX 25 per chiamata. Esito verificato PER-ID.
Added "ads_performance", "get_cockpit", "get_sop" and 5 more (116 tools before, 124 now)
READ-ONLY, DETERMINISTICO. Performance Ads dal Data-Hub con numeri calcolati dal server, SEMPRE uguali a parità di dati: finestre FISSE di 7/14/30 giorni chiuse 3 giorni prima dell'ultimo dato (attribuzione Amazon ancora incompleta), ACoS/CTR/CVR/CPC/RPC/AOV dalle somme SQL, confronto con il periodo precedente, e per ogni riga una colonna action con la regola applicata: HOLD_DATA (pochi click: non toccare), HOLD_OK, BID_DOWN (ACoS sopra target: bid suggerito = ricavo/click × ACoS target, taglio max 25%/40%), BID_DOWN_ZERO_SALES (click senza ordini, max −30%, floor 0.10), BID_UP (+10/15% se AC…
Cockpit for a calendar month: for each outpost the month-to-date sales (VAT included, from the Vendooly data-hub), the month target, the end-of-month projection, Ads ACoS/TACoS, open findings (stock-outs, blocked listings, Ads on out-of-stock items) and a traffic light rosso/giallo/grigio/verde with reasons and the next action (rules 2026-10-15). Without cockpit_id uses the first active cockpit, or all visible outposts if none exists. include_health=true also reads Account Health live (one Amazon report per outpost: slower); without it health counts as UNKNOWN (yellow). Always state the perio…
Read one SOP with all its steps (from list_sops → id). Follow the steps in order when the user asks to run the procedure.
Authorization not required, issuer https://vendooly.com
Changed the definition of "ads_create_portfolio", "ads_create_sp_ad_group", "ads_create_sp_campaign" and 35 more
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create Ads portfolio"}
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP ad group"}
Changed the definition of "audit_aplus_coverage", "bulk_update_listings", "check_feed_status" and 3 more
⟨111 unchanged words⟩ implementata: le correzioni si fanno da Seller Central. Il catalogo viene dal data-hub (`catalog_source`): se il seller non è ancora sincronizzato risponde `catalog_not_ready` con le alternative (list_aplus_documents / get_aplus_document), non un errore muto.
⟨14 unchanged words⟩ patches?: [...], product_type?, validate_only?}]. product_type is optional: each SKU's product type is read from its listing (results[].product_type_used). Use when you need to update titles or ⟨27 unchanged words⟩
Added "fiscal_transactions_export" (115 tools before, 116 now)
READ-ONLY. Fiscal transactions file for the accountant (VAT/OSS support): one row per order item for sales (VENDITA), refunds (RIMBORSO), A-to-Z claims and chargebacks, with Amazon posted date, marketplace, order id, SKU, quantity, currency, ship-to country, B2B flag (Amazon Business order), net price, VAT (Amazon ChargeType *Tax, separate), shipping and gift wrap with their VAT, promotions, taxable base, VAT and implied rate. Source: SP-API Finances + Orders (no buyer name, address or email). Use when the user needs the VAT transactions / "report transazioni IVA" and the Amazon VAT Transacti…
Authorization not required, issuer https://vendooly.com
Changed the definition of "invite_team_member" and "list_team_members"
⟨27 unchanged words⟩ to invite.","type":"string"},"permissions":{"description":"For role=member: access level per function, each none | read | write. Keys: sales (max read), catalog, pricing_inventory, ads, account_team (max read). Omitted keys = none. If permissions is omitted entirely the member gets read-only on sales, catalog, pricing_inventory and ads, and none on account_team. Price/stock and Ads writes must be granted explicitly. Ignored for admin (full access).","properties":{"account_team":{"enum":["none","read"],"type":"string"},"ads":{"enum":["none","read","write"],"type":"string"},"catalog":{"enum":["none","read","write"],"type":"string"},"pricing_inventory":{"enum":["none","read","write"],"type":"string"},"sales":{"enum":["none","read"],"type":"string"}},"type":"object"},"role":{"description":"admin = full access; ⟨52 unchanged words⟩
Added "invite_team_member" and "list_team_members" (113 tools before, 115 now)
Invite a colleague to the user's OWN Vendooly organization (the one of this connection — you cannot choose another). Use when the user says "invite this person to my account/team". Only owners/admins can invite. `role` is admin (sees every seller) or member (sees only the sellers listed in `seller_ids`; get them from list_team_members → sellers). With send_email=true (default) Vendooly emails the invitation; with send_email=false NO email is sent and the tool returns an invite link (valid 7 days) for the user to pass on. Ask the user to confirm the email and role before calling.
List the people of the user's Vendooly organization (role, status, assigned sellers) and the seller ids that can be assigned to a member. Owners/admins only.
Certificate changed, valid to 2027-01-04
Authorization not required, issuer https://vendooly.com
Added "bulk_set_shipping_template"; changed the definition of "get_product_types" and "update_listing" (112 tools before, 113 now)
⟨29 unchanged words⟩ — no need to open the S3 link. The schema is personalised for the selected seller: shipping_templates = the seller's shipping templates (modelli di spedizione) as [{id, name}] — use product_type="PRODUCT" to list them. Templates (rates, zones, transit times) can only be created or edited in Seller Central → Shipping settings: SP-API cannot change them, only assign them to SKUs (update_listing shipping_template / bulk_set_shipping_template). Set raw_schema=true for the full schema, include_enums=false to skip the fetch.
⟨31 unchanged words⟩ a 5 ~100 char l'uno), title →item_name.item_name, shipping_template → merchant_shipping_group (modello di spedizione: ID o nome esatto come in Seller Central; il tool risolve il nome nell'ID e rifiuta i nomi sconosciuti elencando i modelli veri; vale per le offerte FBM).
Changed the definition of "check_listing_restrictions"
⟨210 unchanged words⟩ ungated?', 'is brand X gated for me?'. BRAND MODE: when the supplier gives only brand names (no ASIN/EAN, common in EU/UK), pass brands[] (optional category / classification_id): the tool samples the brand's best-selling ASINs from the catalog and returns by_brand_query with verdict, asins_evaluated and confidence (alta/media/bassa); say it is an estimate on a sample. For listings already uploaded and blocked use list_inactive_listings ⟨9 unchanged words⟩
⟨47 unchanged words⟩ :"string"},"type":"array"},"brands":{"description":"MODALITÀ PER MARCHIO (senza asins/identifiers): nomi di marchio da controllare (max 10), quando il fornitore non dà ASIN né EAN. Per ogni marchio lo strumento prende dal catalogo i suoi ASIN più venduti (campione) e dà un verdetto per marchio (libero / da_sbloccare / non_vendibile / marchio_non_trovato) con il numero di ASIN valutati e la confidenza. È una STIMA: per decidere un acquisto controlla poi gli ASIN/EAN esatti.","items":{"type":"string"},"type":"array"},"category":{"description":"Solo con brands: categoria in parole (es. \"giocattoli\", \"integratori\") per limitare il campione a quella categoria del marchio. Il campione è dichiarato come campione di categoria.","type":"string"},"classification_id":{"description":"Solo con brands: id numerico del nodo di categoria Amazon (browse node) per limitare il campione. Alternativo o insieme a category.","type":"string"},"
Added "fba_reimbursement_check" (111 tools before, 112 now)
READ-ONLY. "How many FBA units did I lose / got damaged, and how many were NOT reimbursed?" — the FBA lost & damaged balance per SKU (what ZoneWizard logistics, Igolai, Getida do). Reads the inventory ledger (Adjustments: lost M/5, found F/N, damaged E/6, other damage H/K/7/U, disposed D) and the reimbursements report (Lost_Warehouse, Damaged_Warehouse, CustomerReturn, reversals) and returns per SKU: units lost/found/damaged/disposed, units + amount already reimbursed, and amazon_open_units = the units Amazon ITSELF still marks unreconciled (= to claim) with event date, 60-day claim deadline,…
Authorization not required, issuer https://vendooly.com
Authorization required → not required, issuer https://vendooly.com
Added "ads_list_sp_audiences", "ads_update_sp_audience_bidding", "check_listing_restrictions" and 1 more; changed the definition of "ads_list_sp_campaigns" and "ads_update_sp_campaign" (107 tools before, 111 now)
⟨91 unchanged words⟩ vs Rest of Search) usa execute_sql su fact_campaign_placement_daily. audience_adjustments = moltiplicatori % ATTUALI per SEGMENTO DI PUBBLICO [{audience_id, percentage}] (nomi con ads_list_sp_audiences, modifica con ads_update_sp_audience_bidding).
⟨92 unchanged words⟩ 25. Esito verificato per-id (budget e/o stato). I SEGMENTI DI PUBBLICO non si toccano qui (usa ads_update_sp_audience_bidding): quando cambi placement o strategia il tool rilegge la campagna e mantiene i segmenti esistenti.
First tool surface recorded: 107 tools (server version 1.0.0)
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Authorization required, Bearer, issuer https://vendooly.com
Certificate recorded, valid to 2026-11-06
Authorization required, Bearer, issuer https://vendooly.com
Showing the latest 32 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
List the cockpits of the user's organization (a cockpit = a group of outposts watched together with monthly sales targets and a traffic light). Max 10 active per organization.
List the standard operating procedures (SOP) saved in the user's Vendooly organization: title, schedule, number of steps, outposts it applies to. Use it to answer "what do we do every day/week" or before running a procedure. Max 10 active SOP per organization.
Create (without cockpit_id) or update a cockpit of the user's organization. Owners/admins only. outpost_ids from list_clients (omit = all outposts). status=archived / active. Max 10 active cockpits.
Create (without sop_id) or update (with sop_id) a SOP of the user's organization. Owners/admins only. steps = ordered list of {title, body?, role?} (max 40). outpost_ids = the outposts it applies to (from list_clients; omit = all). status=archived archives it, status=active restores it. Max 10 active SOP: the 11th is refused with limit_reached. Show the user the title and steps before saving.
Set the monthly sales target of one outpost (seller × marketplace) for a calendar month. Owners/admins only. vat says whether the target is VAT included (inclusa, default, same basis as the data) or excluded (esclusa: the cockpit then flags it yellow because it compares different bases). status: proposto (default) | validato | concordato; changing the numbers of a validato/concordato target without passing status puts it back to proposto. Only validato/concordato targets drive the projection light. Confirm amount, month and VAT with the user before saving.
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP campaign"}
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP keywords"}
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP negative keywords"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP negative targets"}
{"destructiveHint":false,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP product ads"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create SP product targets"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Archive SP campaign"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Delete SP negative keywords"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Delete SP negative targets"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Delete SP product targets"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB ad group"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB campaign"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB keyword bid"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB keyword state"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB target bid"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SB target state"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SD ad group"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SD campaign"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP ad group"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP audience bid adjustments"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP campaign"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP keyword bid"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP keyword state"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP target bid"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update SP target state"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Bulk update inventory"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Bulk update ⟨5 unchanged words⟩
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Bulk update prices"}
{"destructiveHint":falsetrue,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Create listing"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Delete listing"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Reprice to Buy Box"}
{"destructiveHint":falsetrue,"openWorldHint":falsetrue,"readOnlyHint":truefalse,"title":"Send feedback to Vendooly"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update item highlights"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update listing"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update FBM stock quantity"}
{"destructiveHint":true,"openWorldHint":falsetrue,"readOnlyHint":false,"title":"Update price"}
⟨82 unchanged words⟩ di sapere com'è finita davvero una scrittura massiva. SOLO per feed_id nati da bulk_* / submit_listings_feed: il submissionId di update_listing / create_listing / delete_listing NON è un feed (qui risponde `not_found` con hint) — quelle modifiche si verificano con get_listing (sku) dopo ~15 minuti.
⟨27 unchanged words⟩ "string","number"]},"feed_id":{"description":"ID del feed restituito da bulk_update_prices / bulk_update_inventory / bulk_update_listings / bulk_delete_listings / submit_listings_feed (NON il submissionId di update_listing)","type":"string"},"wait":{"description" ⟨19 unchanged words⟩
⟨58 unchanged words⟩ su 30g dal Settlement: fee+refund > incasso), listing_issue_99300 (bullet point soppressi da Amazon per claim promozionali/inviti al contatto/tempi di consegna: la listing spesso resta in vendita ma senza bullet; fix = riscrivere i bullet con update_listing e ricontrollare con get_listing included_data=issues). Ogni finding ha evidenza numerica (payload), ⟨64 unchanged words⟩
⟨18 unchanged words⟩ ,"buybox_suppressed","stockout_risk","ads_no_stock","negative_margin","listing_issue_99300"],"type":"string"},"severity":{ ⟨23 unchanged words⟩
⟨88 unchanged words⟩ to SKUs (update_listing shipping_template / bulk_set_shipping_template). attributes=["care_instructions", ...] returns, per attribute, the structure needed for update_listing patches (fields of each item with type/enum/max_length, required fields, example_patch ready to copy) + attributes_missing for names not in this product type (a PATCH on those would fail with 90000900); attribute_names lists every attribute of the schema. Set raw_schema=true for the full schema, include_enums=false to skip the fetch.
⟨26 unchanged words⟩ "type":["string","number"]},"attributes":{"description":"Attribute names whose structure you need (e.g. [\"care_instructions\",\"material\"])","items":{"type":"string"},"type":"array"},"include_enums":{"type":"boolean"},"locale" ⟨12 unchanged words⟩
⟨75 unchanged words⟩ alternativa patches:[...] grezzi (JSON Patch SP-API, path /attributes/<nome>; la struttura dell'attributo si legge con get_product_types attributes=["<nome>"]). Il productType del PATCH viene preso dalla listing (GET productTypes) quando product_type non è passato: 'PRODUCT' resta solo come ultima spiaggia e con il suo schema generico ogni attributo specifico (care_instructions, style, …) dà issue 90000900. L'esito riporta product_type_used e product_type_source (arg | listing | fallback_*). validate_only:true = dry-run (Amazon valida senza applicare). ESITO: `ok` true/false + `message` già leggibile + `verify_with` (= get_listing sullo SKU dopo ~15 min; propagazione tipica <30 min, fino a 24 h). Il `submissionId` NON è un feed: non passarlo a check_feed_status. ok:false con issues[] severity ERROR = rifiutata da Amazon, correggi e riprova (prima con validate_only).
⟨71 unchanged words⟩ ,"type":"array"},"product_type":{"description":"Product type Amazon (es. WINDOW_SHADE). Opzionale: se manca si legge dalla listing; passalo solo per forzarlo","type":"string"},"shipping_template":{"description" ⟨45 unchanged words⟩
⟨73 unchanged words⟩ ,"product_type":{"type":"string"},"shipping_template":{"description":"Modello di spedizione da assegnare (ID o nome come in Seller Central). Elenco: get_product_types product_type=\"PRODUCT\" → shipping_templates","type":"string"},"sku":{"type":"string"},"title" ⟨20 unchanged words⟩
Assegna lo STESSO modello di spedizione (merchant_shipping_group) a molti SKU in una volta, con un feed JSON_LISTINGS_FEED (fino a 5.000 SKU per chiamata, un feed) invece di update_listing SKU per SKU. shipping_template = ID o nome come in Seller Central (elenco: get_product_types product_type="PRODUCT" → shipping_templates). Prima chiama con validate_only:true (valida la modifica su 3 SKU di prova, non scrive), mostra all'utente modello e numero di SKU, poi senza validate_only per inviare. Esito con check_feed_status(feed_id). NON crea né modifica i modelli (tariffe/zone/tempi si cambiano so…
READ-ONLY. Elenca i SEGMENTI DI PUBBLICO utilizzabili per i moltiplicatori di bid delle campagne Sponsored Products (audience bid adjustments, disponibili in IT/DE/FR/ES/UK). source: "amazon" (default: pubblici costruiti da Amazon, es. chi ha già comprato dal brand, chi ha cliccato o messo nel carrello, alta probabilità di acquisto), "amc" (pubblici creati in Amazon Marketing Cloud) o "all". search = filtro testuale opzionale. Ritorna audience_id, name, description, source. Gli audience_id vanno passati a ads_update_sp_audience_bidding; i segmenti già impostati su una campagna si leggono in a…
Imposta i MOLTIPLICATORI PER SEGMENTO DI PUBBLICO di UNA campagna Sponsored Products (dynamicBidding.shopperCohortBidding): aggiunge o modifica (set=[{audience_id, percentage}]), toglie (remove=[audience_id]) o azzera tutto (clear_all=true). percentage = aumento % del bid, INTERO 0-900: i segmenti possono solo ALZARE il bid, mai abbassarlo. Si applica SOPRA il moltiplicatore di placement (es. bid 1€, Top of Search +50% = 1,50€, pubblico +100% = 3€). Massimo 10 segmenti per campagna. Il tool RILEGGE la campagna live, fonde le modifiche con i segmenti esistenti e rimanda INVARIATI i moltiplicat…
READ-ONLY. Gated products: BEFORE listing or buying stock, tells whether THIS seller account can sell each ASIN on the outpost's marketplace (or other marketplaces of the same region) in a given condition, using Amazon's Listings Restrictions API (getListingsRestrictions). Per ASIN: libero (no restriction) / serve_approvazione (APPROVAL_REQUIRED, with Amazon's approval_links to Seller Central) / non_idoneo (NOT_ELIGIBLE, no path to unlock) / asin_non_trovato (ASIN_NOT_FOUND on that marketplace). Results are GROUPED BY BRAND (brand read from the Amazon catalog, cached) with a verdict per brand…
READ-ONLY. Amazon EPR (Extended Producer Responsibility) report for one seller outpost and one CLOSED calendar period, from SP-API GET_EPR_MONTHLY_REPORTS / GET_EPR_QUARTERLY_REPORTS / GET_EPR_ANNUAL_REPORTS (Product Listing role, sellers only). Returns a summary per ship-to country and EPR category/subcategory: units sold, total reported weight (kg) and material weights (paper, glass, aluminum, steel, plastic, wood, other) as calculated by Amazon, the exact period written in the file (report_period_start/end), data-quality flags (rows without weight, category or registration number) and the …