Vendooly
REMOTE · MCP.VENDOOLY.COM
Amazon Seller Central, Ads and Vendor Central in ChatGPT & Claude. 106 tools; writes need approval.
Available components
Last scanned (12 hours ago)
Scores higher than 93% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability56
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 33350 tokens (~231/item across 144 items; 144 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage86
- 99% of tools have a non-trivial description (not blank, and not just the tool's name).Partial
- 59% of tool parameters carry a description.Partial
Tool Safety94
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 7 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "diagnose_sales_drop" implies "drop" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 144 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Checks we ran (13)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −1
No change was recorded against any check on this day. Endpoint Security went from 91 to 89.
- 4 Nov 26 +1
- New tool “wp_update_post”, which the server declares destructive security
- New tool “wp_create_post” functional
- New tool “wp_list_posts” functional
- New tool “wp_list_sites” functional
- New tool “wp_list_terms” functional
- 3 Nov 26 −1
- Stability: fail → pass ▲ security
- Destructive annotations: 88% → 78% ▼ functional
- Schema quality: 208 → 234 ▼ functional
- New tool “execute_sql” functional
- New tool “list_action_log” functional
- New tool “log_action” functional
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 96 to 99.
- 30 Oct 26 +1
- Stability: 0.90 → fail ▼ security
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “execute_sql” was removed ▼ security
- New tool “woo_update_price”, which the server declares destructive security
- New tool “woo_update_stock”, which the server declares destructive security
- Tool “invite_team_member” rewrote its description, which is the text the model reads security
- Tool “list_team_members” rewrote its description, which is the text the model reads security
- Destructive annotations: 78% → 88% ▲ functional
- Schema quality: 234 → 208 ▲ functional
- New tool “woo_amazon_mapping” functional
- New tool “woo_get_stock” functional
- New tool “woo_hub_query” functional
- New tool “woo_list_orders” functional
- New tool “woo_list_products” functional
- New tool “woo_list_stores” functional
- “invite_team_member” added an optional parameter “store_ids” cosmetic
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 −1
No change was recorded against any check on this day. Endpoint Security went from 91 to 89. Other categories moved too: Stability & Change Management rose 4.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://mcp.vendooly.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.vendooly.com | CN=YE2,O=Let's Encrypt,C=US | 6 Oct 2026 | 4 Jan 2027 | ECDSA 256 | ECDSA-SHA384 | 6bf4e7634474c61ba876d5ef0897383d5d9 |
| SANs: mcp.vendooly.com | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.vendooly.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| vendooly.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.vendooly.com/.well-known/oauth-protected-resource/mcp", scope="amazon.read", error="invalid_token"
Bearer resource_metadata="https://mcp.vendooly.com/.well-known/oauth-protected-resource/mcp", scope="amazon.read", error="invalid_token" Protected resource metadata
| Document | https://mcp.vendooly.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.vendooly.com/mcp |
| Authorisation server | https://vendooly.com |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.vendooly.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.vendooly.com/mcp | HTTPS enforced | 308 | https://mcp.vendooly.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
get_vendor_purchase_order_details ~67
Vendor PO details
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| po_number | string | yes | – |
No output schema declared.
No examples provided.
get_vendor_purchase_orders ~83
Vendor POs
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| days_back | number | – | – |
| include_details | boolean | – | – |
| po_item_state | string | – | – |
No output schema declared.
No examples provided.
get_vendor_remittances ~94
Vendor: importi stimati dai PO (SP-API non espone remittance reali in lettura)
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| days_back | number | – | – |
| summary_only | boolean | – | – |
No output schema declared.
No examples provided.
get_vendor_trading_terms ~113
Vendor trading terms — SP-API non espone termini commerciali (payment terms, sconti, accordi) in lettura. Questo tool restituisce una spiegazione della limitazione e rimanda a Vendor Central e a get_vendor_remittances per i netCost per PO.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
No output schema declared.
No examples provided.
invite_team_member ~405
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` and the WooCommerce stores listed in `store_ids`; get them from list_team_members → sellers / stores). 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| string | yes | Email of the person to invite. | |
| permissions | object | – | 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… |
| role | string | yes | admin = full access; member = only the sellers in seller_ids. |
| seller_ids | array | – | For role=member: seller ids (from list_team_members → sellers) the member may see. |
| send_email | boolean | – | true (default): email the invitation. false: no email, return the invite link. |
| store_ids | array | – | For role=member: WooCommerce store ids (from list_team_members → stores) the member may see. Omitted = none. |
No output schema declared.
No examples provided.
list_action_log ~176
History of the operations done on the seller's outposts (seller × marketplace): bid/budget changes, price changes, listing fixes, etc., with who did them (user, ai, session), value before → after and, when already evaluated, the measured impact on the KPI (outcome migliorato/neutro/peggiorato/non_valutabile). Newest first. outpost_id filters one outpost (see list_clients); without it lists every outpost the user can see. Use it before proposing a change to know what was already tried and how it went.
| Name | Type | Req | Description |
|---|---|---|---|
| kpi | string | – | – |
| limit | number | – | Max rows (default 50, cap 200). |
| outpost_id | integer | – | Outpost (seller × marketplace) id; omit for all visible outposts. |
No output schema declared.
No examples provided.
list_aplus_documents ~147
READ-ONLY. Elenco dei documenti A+ Content del seller su questo marketplace, con stato (DRAFT | SUBMITTED | APPROVED | REJECTED), badge e data di aggiornamento. Solo APPROVED è visibile al cliente. Per la domanda "quanto del mio catalogo ha A+" usa audit_aplus_coverage, non questo.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| max_pages | number | – | Pagine di documenti da scorrere (default 10) |
No output schema declared.
No examples provided.
list_clients ~42
List the connected Amazon outposts (an outpost = one seller on one marketplace; the account_id of each is what you pass to other tools). Org-scoped.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_cockpits ~56
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_archived | boolean | – | – |
No output schema declared.
No examples provided.
list_context_topics ~57
List built-in documentation topics (guides and recipes for using Vendooly tools correctly: write confirmation flow, catalog cache fields, rate limits, multi-account, cross analyses). Read the relevant guide BEFORE an operation you are not familiar with.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_inactive_listings ~904
READ-ONLY. Elenco CATALOGO-WIDE dei listing che NON sono in vendita, CON IL MOTIVO — la risposta a "quali prodotti sono inattivi/bloccati/soppressi?", "cosa mi ha bloccato Amazon dopo il caricamento?", "perché questo articolo non si vende?". Legge lo stato reale della Listings Items API (BUYABLE / DISCOVERABLE) e gli enforcement dichiarati da Amazon: LISTING_SUPPRESSED (offerta non acquistabile), ATTRIBUTE_SUPPRESSED (attributo rifiutato), CATALOG_ITEM_REMOVED (pagina disattivata), SEARCH_SUPPRESSED (nascosto dalla ricerca), più le esenzioni in scadenza (tipico GPSR: ancora attivo ma bloccherà alla data indicata → state "at_risk"). Ritorna: counts per stato, by_reason (gruppi per motivo, con gli attributi da correggere e gli SKU), items (dettaglio con action_hint) e summary pronto da leggere. Distingue "bloccato da Amazon" da "zero disponibilità" e NON inventa il motivo quando Amazon non lo dichiara: per gli SKU FBA che Amazon non motiva legge l'inventario e separa "zero pezzi in FBA" da "stock fermo/STRANDED" (merce in magazzino ma offerta non acquistabile — si sblocca dal listing, non rifornendo). Per gli STRANDED riporta la CAUSA REALE dal report Stranded Inventory di Amazon (lo stesso dato di Seller Central → "Correggi inventario stranded"): stranded.reason (es. Listing error, Listing closed, Pricing error), error_message, azione consigliata da Amazon, data in cui è diventato stranded e data di RIMOZIONE AUTOMATICA (urgenza) — reason_code FBA_STRANDED_<MOTIVO>; include anche gli SKU con merce in FBA ma offerta cancellata (from_stranded_report=true). scope: not_buyable (default) | search_suppressed | errors (tutte le issue ERROR, anche su listing ancora vendibili) | all. changed_since="YYYY-MM-DD" filtra i soli listing aggiornati da quella data — usalo dopo un caricamento a batch. COSTO: 1 chiamata SP-API ogni 20 SKU; Amazon pagina al massimo 1000 SKU per ricerca (se truncated, restringi con changed_since o scope). La correzione si fa con update_listing / bulk_u…
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| changed_since | string | – | Solo listing aggiornati da questa data (YYYY-MM-DD o ISO8601) — "cosa si è rotto dopo il batch di ieri" |
| check_fba_stock | boolean | – | Default true: legge FBA Inventory (1 chiamata) per spiegare gli SKU FBA che Amazon non motiva. false = report più rapido, quegli SKU restano "motivo non dichiarato" |
| check_stranded_report | boolean | – | Report Stranded Inventory (~20 s, riusato 20 min) per la causa reale degli stranded. Default automatico: richiesto solo se ci sono SKU stranded; true = forzalo (porta anche gli SKU stranded con offer… |
| issue_locale | string | – | Lingua dei messaggi Amazon (es. it_IT); default = lingua del marketplace |
| max_pages | number | – | Pagine da 20 SKU da scorrere (default 25 = 500 SKU, max 50 = cap Amazon) |
| scope | string | – | not_buyable (default) = tutto ciò che il cliente non può comprare |
| stranded_wait_sec | number | – | Attesa massima del report stranded in secondi (default 60, max 300); oltre → stranded_report.pending e si riprende al giro dopo |
| top_n | number | – | Quanti item dettagliati restituire (default 50); by_reason li conta comunque tutti |
No output schema declared.
No examples provided.
list_my_products ~216
List own products from local cache (SKU, ASIN, title, price, stock FBA+MFN, fulfillment channel, velocity = avg units/day last 30d, days_cover = stock/velocity — paginated, default 50 rows, no customer data). Use velocity/days_cover for stock-out risk ("sells 3.2/day, runs out in ~4 days"). Filter channel:"FBM" for merchant-fulfilled only. NB: sorted by sales rank, so unranked FBM items appear in the last pages — use the channel filter instead of paginating.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| channel | string | – | FBA | FBM |
| limit | number | – | – |
| offset | number | – | – |
| only_in_stock | boolean | – | – |
| q | string | – | – |
No output schema declared.
No examples provided.
list_sops ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_archived | boolean | – | Also list archived SOP (default false). |
No output schema declared.
No examples provided.
list_team_members ~55
List the people of the user's Vendooly organization (role, status, assigned sellers and WooCommerce stores, per-function permissions) and the seller ids and store ids that can be assigned to a member. Owners/admins only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
log_action ~237
Record one operation done on ONE outpost (seller × marketplace) in the Vendooly action log, so it is remembered and its impact on the KPI can be measured later. Owners/admins only. Call it right AFTER a write that succeeded (Ads, price, listing, stock) or after a manual change the user reports, with the value before → after. Internal Vendooly log: writes nothing on Amazon.
| Name | Type | Req | Description |
|---|---|---|---|
| action_type | string | yes | Short code, e.g. bid_change, budget_change, price_change, negative_keyword, listing_fix (max 60 chars). |
| actor_ref | string | – | Optional: name of the person/agent/session. |
| actor_type | string | – | Who did it (default user). |
| description | string | yes | What was done, in one sentence (max 500 chars). |
| kpi | string | yes | KPI the operation is meant to move. |
| outpost_id | integer | yes | – |
| ref | string | – | Optional: campaign/keyword/SKU/ASIN id or a link. |
| value_after | string | – | – |
| value_before | string | – | – |
No output schema declared.
No examples provided.
ping ~10
Healthcheck
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
plan_title_seo_fix ~371
Titolo conforme SENZA perdere SEO, passo 1 (solo lettura): per ogni SKU accorcia il titolo a 72 caratteri (o usa new_titles), calcola le parole di ricerca perse e le ricolloca in generic_keyword (≤250 byte, niente doppioni); quello che non entra va come frase presa pari pari dal titolo vecchio in coda al bullet più affine, o alla descrizione. MAI parole nuove. Se il taglio è già stato fatto passa original_titles (sku → titolo lungo di prima): il titolo attuale resta e si ricollocano solo le parole perse. Ritorna plan_id + anteprima prima→dopo per SKU con status ok|ready|needs_review (needs_review = restano parole in manual_review, decide una persona). Mostra SEMPRE l'anteprima all'utente prima di apply_title_seo_batch. Piano valido 24 ore.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| include_bullets | boolean | – | false = non toccare bullet e descrizione: ciò che non entra nelle keyword resta in manual_review (default true) |
| limit | number | – | Massimo SKU (default 200, max 1000) |
| new_titles | object | – | Mappa sku → titolo corto deciso dal seller (al posto del taglio automatico) |
| original_titles | object | – | Mappa sku → titolo lungo originale, quando il titolo è già stato tagliato |
| skus | array | – | SKU da pianificare (vuoto = scansione del catalogo fino a limit) |
No output schema declared.
No examples provided.
reprice_to_buybox ~222
ACTION. Reprices the given SKUs to win the Buy Box: compares your price with the Buy Box price and proposes a new one (`delta` below the Buy Box, never below `floor`). With confirm=false it returns a PREVIEW (before→after); with confirm=true it applies the prices. ALWAYS show the preview and get the user's explicit approval before calling with confirm=true.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| confirm | boolean | – | true = actually apply the prices |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| delta | number | – | How far below the Buy Box to price (default 0.01) |
| floor | number | – | Hard minimum price |
| skus | array | yes | – |
No output schema declared.
No examples provided.
save_cockpit ~134
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cockpit_id | integer | – | – |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| description | string | – | – |
| name | string | – | – |
| outpost_ids | array | – | – |
| status | string | – | – |
No output schema declared.
No examples provided.
save_sop ~245
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| description | string | – | – |
| outpost_ids | array | – | – |
| schedule | string | – | Free text, e.g. "daily 08:30" or "Monday". |
| sop_id | integer | – | Omit to create a new SOP. |
| source | string | – | Where it comes from, e.g. "crm:sop#30". |
| status | string | – | – |
| steps | array | – | – |
| title | string | – | – |
No output schema declared.
No examples provided.
search_catalog ~127
Search the Amazon catalog. IMPORTANT: use identifiers (ASIN/EAN/ISBN) for reliable, compact results. Keyword search returns up to 10 items (summaries only) and may be incomplete — prefer identifiers when you know the ASIN or EAN.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| identifierType | string | – | – |
| identifiers | string | – | – |
| keywords | string | – | – |
No output schema declared.
No examples provided.
send_feedback ~193
Send the user's feedback (a bug, an idea, a question or a general comment) straight to the Vendooly team — they read every one. Use it whenever the user reports a problem, is frustrated, hits an error, or suggests something. ALSO proactively OFFER to send it when something clearly is not working ("vuoi che lo segnali al team Vendooly?") and call it once they agree. Put the user's words in `message`; use `ai_context` to summarize what they were trying to do, which account/tool, and any error you saw. Confirm to the user once it is sent.
| Name | Type | Req | Description |
|---|---|---|---|
| ai_context | string | – | Short note: what the user was doing, which account/tool, any error message you observed. |
| category | string | – | Type of feedback (default other). |
| message | string | yes | The feedback in the user's own words (what happened / what they want). |
No output schema declared.
No examples provided.
set_cockpit_target ~249
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.
| Name | Type | Req | Description |
|---|---|---|---|
| acos_max | number | – | Max ACoS % (optional). |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| month | string | yes | YYYY-MM |
| note | string | – | – |
| outpost_id | integer | yes | – |
| sales_target | number | yes | – |
| status | string | – | – |
| tacos_max | number | – | Max TACoS % (optional). |
| vat | string | – | – |
No output schema declared.
No examples provided.
set_packing_information ~208
ACTION. Registra le SCATOLE del piano inbound FBA (dopo il packing confermato): per ogni packing group, le scatole con dimensioni in CM, peso in KG, quantità di scatole identiche e contenuto (SKU+quantità per scatola, salvo content_source diverso). Passo obbligatorio PRIMA di generare le opzioni di placement. Chiedi all'utente dimensioni/peso reali: Amazon le verifica in ricezione.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| groupings | array | yes | – |
| inbound_plan_id | string | yes | – |
No output schema declared.
No examples provided.
title_seo_rollback ~145
Titolo-SEO (SCRITTURA): rimette titolo, generic_keyword, bullet e descrizione com'erano prima di un lotto, dal registro.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| batch_id | string | yes | batch_id da apply_title_seo_batch o title_seo_status |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
No output schema declared.
No examples provided.
title_seo_status ~87
Titolo-SEO: stato per l'outpost (ultimo piano con i conteggi, ultimi lotti con esito, verificato, annullabile).
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
No output schema declared.
No examples provided.
update_item_highlights ~348
Update Item Highlights on a listing. L'attributo UFFICIALE è title_differentiation (max 125 char, rollout titoli modulari 27/7/2026); item_highlights è il nome legacy visto su alcuni schema US — il tool risolve da solo quale espone lo schema del product type e scrive su quello. ATTENZIONE: non tutti i marketplace/product type lo espongono — dove manca il tool rifiuta con esito chiaro (not_supported) rimandando ai bullet_point (update_listing → bullet_point). VINCOLO Amazon: title_differentiation è accettato SOLO se il titolo (item_name) è ≤ 75 char — con un titolo più lungo il tool si ferma (title_over_limit): prima accorcia il titolo, poi scrivi gli highlights. Chiama senza confirm per il dry-run (VALIDATION_PREVIEW), confirm=true per scrivere.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| confirm | boolean | – | true to apply after reviewing the dry-run |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| highlights | array | yes | Array of highlight strings (frasi brevi separate, totale ≤ 125 char) |
| product_type | string | – | Amazon product type — auto-detected if omitted |
| sku | string | yes | – |
No output schema declared.
No examples provided.
update_listing ~594
Modifica una listing esistente. SHORTCUT amichevoli (consigliati — costruiscono la struttura attributo corretta, niente schema SP-API a mano): bullets:[...] → bullet_point ("Funzionalità principali", la leva dei punti-elenco su amazon.it/EU, fino a 5 ~100 char l'uno), title → 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). In 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).
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| bullets | array | – | Punti elenco (bullet_point), fino a 5 |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| patches | array | – | JSON Patch SP-API grezzi (alternativa agli shortcut) |
| product_type | string | – | Product type Amazon (es. WINDOW_SHADE). Opzionale: se manca si legge dalla listing; passalo solo per forzarlo |
| shipping_template | string | – | Modello di spedizione da assegnare (ID o nome come in Seller Central). Elenco: get_product_types product_type="PRODUCT" → shipping_templates |
| sku | string | yes | – |
| title | string | – | Nuovo titolo (item_name) |
| validate_only | boolean | – | true = dry-run, valida senza scrivere |
No output schema declared.
No examples provided.
update_mfn_quantity ~115
Update MFN inventory quantity for a SKU
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| quantity | number | yes | – |
| sku | string | yes | – |
No output schema declared.
No examples provided.
update_price ~117
Update price for a SKU
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| currency | string | – | – |
| price | number | yes | – |
| sku | string | yes | – |
No output schema declared.
No examples provided.
weekly_recap ~121
READ-ONLY operational recap, aggregates only (no customer data): revenue, orders, FBA/FBM split, account health and top products by sales velocity. Use when the user asks "how did it go", "recap", "how am I doing".
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string|number | – | ID dell'outpost Amazon (= un seller su uno specifico marketplace; vedi list_clients). Opzionale se il token è legato a un solo outpost. |
| days | number | – | Days to analyze (default 7) |
No output schema declared.
No examples provided.
woo_amazon_mapping ~154
READ-ONLY. Maps WooCommerce products to the Amazon catalog of an outpost (account_id): same SKU in the Amazon catalog (data-hub), and with lookup_ean=true the EAN/GTIN searched in the Amazon catalog (max 20 EANs per call). Shows matched, unmatched, items without SKU or EAN. Changes nothing on either side.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | Amazon outpost (seller × marketplace) from list_clients |
| limit | number | – | Max WooCommerce products (default 200, cap 500) |
| lookup_ean | boolean | – | Also search unmatched EANs in the Amazon catalog (default false) |
| store_id | string | yes | – |
No output schema declared.
No examples provided.
woo_get_stock ~124
READ-ONLY, LIVE. Stock of WooCommerce products/variations (one row per sellable item: product_id, variation_id, SKU, EAN, quantity, stock status). By product_id, by sku, or the whole catalog; low_stock_threshold returns only items at or below it (or out of stock).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max products (default 100, cap 500) |
| low_stock_threshold | number | – | – |
| product_id | string | – | – |
| sku | string | – | – |
| store_id | string | yes | – |
No output schema declared.
No examples provided.
woo_hub_query ~255
READ-ONLY, HISTORY from the Vendooly data-hub (synced from the WooCommerce store by the worker: initial load, then every hour and right after each store webhook). Views: products (catalog with SKU/EAN/price/stock), stock (daily stock & price snapshots), orders (order headers with a pseudonymous customer_hash instead of buyer data, with units), daily_sales (units and gross sales per day and SKU, cancelled/failed/refunded excluded), customers_rfm (per pseudonymous customer_hash: last order, first order, order count, spend, recency in days — for RFM; only orders synced with a customer_hash; the days window filters on the last order), sync_status (freshness), amazon_mapping (same SKU in this organization's Amazon catalog). Use it for trends and history; for the current state of the store use the live woo_* tools.
| Name | Type | Req | Description |
|---|---|---|---|
| days | number | – | Window for stock, orders, daily_sales (default 30, max 730) |
| limit | number | – | Max rows (default 200, cap 1000) |
| store_id | string | yes | From woo_list_stores |
| view | string | – | Default products |
No output schema declared.
No examples provided.
woo_list_orders ~120
READ-ONLY, LIVE. Recent WooCommerce orders (no personal data: only number, status, date, totals, currency, countries and line items with SKU/quantity) plus revenue by currency excluding cancelled/refunded/failed.
| Name | Type | Req | Description |
|---|---|---|---|
| days_back | number | – | Default 30, max 365 |
| limit | number | – | Max orders (default 50, cap 200) |
| status | string | – | WooCommerce status, e.g. processing, completed, on-hold (comma separated allowed) |
| store_id | string | yes | – |
No output schema declared.
No examples provided.
woo_list_products ~133
READ-ONLY, LIVE from the WooCommerce store. Products with SKU, EAN/GTIN (core global_unique_id or common GTIN plugin fields), regular/sale price, stock and variations (expanded for variable products). Filters: search, sku, status (publish|draft|private|any).
| Name | Type | Req | Description |
|---|---|---|---|
| include_variations | boolean | – | Default true |
| limit | number | – | Max products (default 50, cap 500) |
| search | string | – | – |
| sku | string | – | – |
| status | string | – | – |
| store_id | string | yes | From woo_list_stores |
No output schema declared.
No examples provided.
woo_list_stores ~75
READ-ONLY. WooCommerce stores connected to this Vendooly organization (store_id, URL, status, last sync, last webhook, last error). Call it first: every other woo_* tool needs store_id. If none is connected, tell the user to connect one in Settings → Integrations → Connect WooCommerce.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
woo_update_price ~178
ACTION on the WooCommerce store. Changes regular_price and/or sale_price (or clears the sale with clear_sale_price=true) of one product or variation. Changes beyond the safety limit (default ±50% vs the current price) are refused. Returns before → after. In safe mode the first call returns a PREVIEW with confirm_id: show it and call again with confirm_id only after the user approves.
| Name | Type | Req | Description |
|---|---|---|---|
| clear_sale_price | boolean | – | – |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| product_id | string | yes | – |
| regular_price | number | – | – |
| sale_price | number | – | – |
| store_id | string | yes | – |
| variation_id | string | – | – |
No output schema declared.
No examples provided.
woo_update_stock ~142
ACTION on the WooCommerce store. Sets the stock quantity of one product or variation (enables stock management on it). Returns before → after. In safe mode the first call returns a PREVIEW with confirm_id: show it and call again with confirm_id only after the user approves.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| product_id | string | yes | – |
| quantity | integer | yes | – |
| store_id | string | yes | – |
| variation_id | string | – | For a variation of a variable product |
No output schema declared.
No examples provided.
wp_create_post ~260
ACTION on the WordPress site. Creates a blog post. content is HTML (WordPress blocks optional). Default status is draft (not visible to readers); use publish only if the user explicitly asks, or future with date (ISO 8601) to schedule. In safe mode the first call returns a PREVIEW with confirm_id: show it and call again with confirm_id only after the user approves. Not retried on network errors (no duplicates): if it times out, check with wp_list_posts before retrying.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | Category ids from wp_list_terms |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| content | string | yes | Post body, HTML |
| date | string | – | ISO 8601 publish date (required for future) |
| excerpt | string | – | – |
| featured_media | integer | – | Media id already in the WordPress library |
| site_id | string | yes | – |
| slug | string | – | – |
| status | string | – | Default draft |
| tags | array | – | Tag ids from wp_list_terms |
| title | string | yes | – |
No output schema declared.
No examples provided.
wp_list_posts ~138
READ-ONLY, LIVE from the WordPress site. Blog posts (id, status, title, slug, link, dates, categories, tags, excerpt, content length), newest first. Filters: status (any|draft|pending|publish|future|private|trash), search. With post_id returns that single post including its full HTML content (use it before wp_update_post).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max posts (default 20, cap 200) |
| post_id | string | – | – |
| search | string | – | – |
| site_id | string | yes | From wp_list_sites |
| status | string | – | – |
No output schema declared.
No examples provided.
wp_list_sites ~88
READ-ONLY. WordPress sites/blogs connected to this Vendooly organization (site_id, URL, WordPress user, status, last error). Call it first: every other wp_* tool needs site_id. If none is connected, tell the user to connect one in Settings → Integrations → Connect WordPress blog (an Application Password is created on their site; no plugin needed).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
wp_list_terms ~82
READ-ONLY, LIVE. Categories and tags of the WordPress site (id, name, slug, post count). Use the ids in categories/tags of wp_create_post / wp_update_post.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Max per taxonomy (default 100, cap 500) |
| search | string | – | – |
| site_id | string | yes | – |
No output schema declared.
No examples provided.
wp_update_post ~206
ACTION on the WordPress site. Changes only the given fields of an existing post (title, content, excerpt, status, date, slug, categories, tags, featured_media); e.g. status=publish publishes a draft. Returns before → after. In safe mode the first call returns a PREVIEW with confirm_id: show it and call again with confirm_id only after the user approves.
| Name | Type | Req | Description |
|---|---|---|---|
| categories | array | – | – |
| confirm_id | string | – | Token di conferma ritornato dall'anteprima. Ripassa lo STESSO payload + confirm_id per eseguire davvero la scrittura. |
| content | string | – | – |
| date | string | – | – |
| excerpt | string | – | – |
| featured_media | integer | – | – |
| post_id | string | yes | – |
| site_id | string | yes | – |
| slug | string | – | – |
| status | string | – | – |
| tags | array | – | – |
| title | string | – | – |
No output schema declared.
No examples provided.
How do I install the Vendooly MCP server?
Vendooly is a hosted endpoint at https://mcp.vendooly.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.vendooly.com
claude mcp add --transport http com-vendooly-vendooly 'https://mcp.vendooly.com/mcp'
What is the Vendooly MCP server?
Vendooly is an MCP server listed in the public MCP registry as com.vendooly/vendooly. Amazon Seller Central, Ads and Vendor Central in ChatGPT & Claude. 106 tools; writes need approval. This page covers its hosted endpoint (https://mcp.vendooly.com/mcp).
Is the Vendooly MCP server safe to use?
Vendooly scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Vendooly MCP server expose?
Vendooly exposes 144 tools: list_clients, get_client_status, get_fba_inventory, fba_inbound_discrepancies, fba_reimbursement_check, and 139 more. Their descriptions and schemas cost roughly 33,350 tokens of context every time the server is loaded.
Does the Vendooly MCP server require authentication?
Yes. Vendooly asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Vendooly MCP server still maintained?
Vendooly is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the Vendooly MCP server?
VerifyMCP ran 13 checks on Vendooly, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.