Pre-flight compliance gate for Amazon Seller Central listings...
This skill tells the agent which Amazon listing requirements and regulatory rules probably apply to a product, which facts only the seller can supply, and where to stop. Its job is to inform the agent, not lecture the seller. It gathers the seller's answers in one grouped question, checks whether the seller is gated on the ASIN, optionally confirms current rules live, and presents a met / unmet / not applicable checklist for an explicit go or hold.
It never writes a listing. The write stays with the skill that owns it,
usually amazon-sp-listing-optimizer, behind that skill's own preview →
confirm → submit. This gate adds a go or no-go in front of that write.
Informational, not legal advice. The gate helps find the requirements that apply. It does not certify a listing as compliant with Amazon policy or the law. The seller is responsible for compliance.
Standalone: "can I list this?", "what do I need to sell X?", "is this compliant?", "why am I gated in this category?", or a new product with no listing yet.
As a gate before a listing write, when the change touches any of:
Plain price, quantity, typo, length, or formatting fixes skip the gate. If you're unsure whether a change is compliance-sensitive, run the gate. It's cheap next to a suppressed listing.
Operations are named by Amazon operationId. Resolve each tool name through
the server's discovery.
On a code-mode SP-API MCP server:
search, get_schema, and execute. Call tools
inside execute with await call_tool(name, params).restriction_getListingsRestrictions
(verified 2026-09-24). Confirm it with search("getListingsRestrictions")
and read its schema with get_schema before the first call. Its
parameters:asin, sellerId, and marketplaceIdsconditionType (new_new, new_open_box, new_oem,
refurbished_refurbished, used_*, collectible_*, and others),
reasonLocale, and productTypelist_identities, filter to the seller's
merchant ID inside the sandbox, and call set_active_identity at the
top of every execute block that touches seller data. The selection
isn't isolated per session. Ask which seller unless the user already said;
never pick one yourself.getListingsRestrictions needs sellerId: the seller's merchant ID,
which is the selected identity's label. Never substitute an account ID,
an MCID, or a guess. If it's genuinely unavailable, mark gating "seller
to confirm".Seller Assistant (Amazon's AI assistant for seller questions) is the live source for rule confirmation, but it is not an SP-API operation, so SP-API servers don't expose it; Amazon's Selling Partner connector does. Use it only if the host lists it. Otherwise run the gate on the bundled map and say the live check wasn't available. The protocol is in references/seller-assistant.md.
Cost order. Steps 2–3 can end the flow for nothing or one fast read. Step 5 costs several round trips. Never pay for Step 5 on a product that Steps 2–3 already ruled out.
From the seller's description, plus the listing's current attributes if the calling skill passed them, tag every regulator bucket and disclosure rule that might apply, and note what you couldn't determine. Use the section index in references/regulatory-map.md and read only the matching sections: "Every listing" and "Category-level" always, plus the buckets the product plausibly hits.
Under-classifying is the common mistake. A "kids' night light with Bluetooth" is a children's product (CPSC), a lighting product (energy labelling), and a radio device (FCC), and it could involve a laser. Let the seller's answers narrow the list.
If the map marks the product prohibited, say it once, plainly, with the policy reference, and stop:
This step costs no tool calls, so it comes first. If Step 5 later contradicts the map, apply the same rule then.
If an ASIN exists in this marketplace, call getListingsRestrictions with
asin, sellerId, marketplaceIds, and the conditionType (for example
new_new). If the condition isn't known yet, ask for that one fact alone.
Don't run the full Step 4 question set to get it.
Read restrictions[].reasons[].reasonCode. Several reasons can come back
at once; handle the most restrictive. Quote each reason's message
verbatim, because the wording varies ("not accepting applications", "need
approval to list in this brand", "other listing limitations"). Live checks
returned NOT_ELIGIBLE far more often than APPROVAL_REQUIRED, usually
with no link.
| Result | Meaning | What to do |
|---|---|---|
NOT_ELIGIBLE |
No path to list this ASIN and condition | Stop. Say it once, with Amazon's message. Don't continue to Steps 4–5 |
APPROVAL_REQUIRED |
Gated | Record it, surface the apply-to-sell link from links[], and block the write until approval is granted. Continue only if the seller wants the rest of the checklist anyway |
ASIN_NOT_FOUND |
ASIN not in this marketplace | Treat it as a new product (below) |
empty restrictions |
Clear for this condition and marketplace | Continue |
For a new product with no ASIN, skip the call. Mark gating "seller to confirm" and rely on the category-approval list plus the seller's Step 4 answer.
Ask a single grouped question covering only the facts Step 1 made relevant, using the matching blocks in references/seller-questions.md. Read only those blocks. Use the host's structured question tool if it has one; otherwise send one message with numbered items.
Record each answer as met, unmet, or not applicable. "I don't know" counts as unmet. Never infer a compliance fact, and don't drip-feed questions or loop.
Only where Seller Assistant is available, and only when it can change the outcome:
Skip it when the map covers the product cleanly and nothing is contested. In that case, say the checklist rests on the map as of its date, and offer the live check.
When calling it, submit the seller's own words, verbatim, and poll per references/seller-assistant.md. Compare the answer with the map, note any gaps or changes, and keep the help-hub links. If there are no links, say so and point to Seller Central Help > Product compliance. On a terminal failure status, fall back to the map and say the live check didn't return.
Show one line per requirement, marked met / unmet / not applicable / seller to confirm. Cover:
If Step 5 was skipped or unavailable, say the checklist rests on the reference map rather than a live check. Then add the enforcement note once if the product is borderline, and the informational-not-legal-advice line once. End with one question: proceed with the listing write as drafted?
If anything is unmet, offer to draft the listing while holding submission until the seller supplies the missing item.
amazon-sp-listing-optimizer for the write when it's available.NOT_ELIGIBLE, say it once with the reference and stop. Don't hunt for a
workaround or repeat the warning.The policy to cite anywhere is Amazon's selling policies.