Source-cited EU/UK/US/AU market-access checks for Amazon and cross-border product compliance.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use when Amazon or another marketplace requests compliance files or suspends a listing pending documents. Returns the product/market evidence checklist, evidence held and gaps immediately; no case or follow-up required.
The case this call continues, from an earlier result. Omit to start a new product case.
Optional destination-market hints. Omit when product_description names the destination.
Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction.
Language for seller-facing text. Questions and messages come back in it; en or zh.
Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow.
Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US.
Whether the product contains or ships with any battery, including a coin cell in a remote.
Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing.
Human-readable product or SKU name
Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document.
Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements.
Exclude decision rules not checked against primary sources
Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU.
The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's.
Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics.
Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied.
Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements.
Whether the product is marketed as a children's product; keep unknown when not established.
Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use.
Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope.
True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing.
Use when Amazon or another marketplace requests compliance files or suspends a listing pending documents. Returns the product/market evidence checklist, evidence held and gaps immediately; no case or follow-up required.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
| has_battery | boolean | Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| product_name | string | Human-readable product or SKU name |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| eu_destination | string | Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU. |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| sells_in_california | boolean | Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| accessible_small_parts | boolean | Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use. |
| includes_mains_charger | boolean | Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"sells_in_california": {
"type": "boolean",
"description": "Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
}
}
}Use when a forwarder or carrier queries or refuses a battery shipment. Returns applicable UN 38.3 test-summary requirements, shipping marks and transport evidence gaps for the cell/pack. Answers immediately from declared facts; does not inspect documents.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| has_battery | boolean | Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| product_name | string |
Use when a buyer, customs or distributor requests an EU Declaration of Conformity. Returns applicable legislation, standards, evidence gaps and fields needing confirmation immediately. Does not issue or sign a declaration.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
| has_battery | boolean |
Use when checking labels, artwork or packaging. Returns destination-market marks, warning language, responsible-entity details and evidence gaps from declared product facts. Answers immediately; does not inspect artwork.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
| has_battery | boolean | Whether the product contains or ships with any battery, including a coin cell in a remote. |
Use when a US importer or broker requests CPC/GCC certification, FCC SDoC or entry-filing data. Returns applicable certificate requirements, supporting evidence and responsible-party details immediately; does not issue certificates.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
| has_battery | boolean |
Compare requirements for a product across 2-4 of EU, UK, US and Australia. Answers immediately: no case, no account, no follow-up. Send category, markets and known facts. Missing facts produce optional refinements; do not ask or rerun automatically.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets* | array | |
| category* | string | Product category |
| language | string | Response language. Defaults to Chinese. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| food_type | string | The food the product will contact. Simulant selection for migration testing depends on it. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
| has_battery |
Get a short scope and human-review service summary. Set detail=full for the coverage matrix, input definitions and methodology; optional, not a prerequisite. Start product cases at Stage 1 with market_access_check.
| Argument | Type | Description |
|---|---|---|
| detail | string | Full adds per-market coverage, input definitions and methodology. |
| language | string | Response language. Defaults to Chinese. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "Full adds per-market coverage, input definitions and methodology."
},
"language": {
"enum": [
"zh",
"en"
],
"type": "string",
"default": "zh",
"description": "Response language. Defaults to Chinese."
}
}
}Retrieve the primary sources, verification date and evidence gaps for a claim_id from an earlier result. Copy the exact ID; not a general question-answering tool.
| Argument | Type | Description |
|---|---|---|
| case_id | string | Opaque ComplianceCN product-case ID returned by the first successful free workflow call. Carry it unchanged through clarification retries, Stage 2 and human review for the same product/SKU. Never reuse it for another product or SKU. |
| claim_id* | string | |
| language | string | Response language. Defaults to Chinese. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"claim_id"
],
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "Opaque ComplianceCN product-case ID returned by the first successful free workflow call. Carry it unchanged through clarification retries, Stage 2 and human review for the same product/SKU. Never reuse it for another product or SKU."
},
"claim_id": {
"type": "string",
"maxLength": 160,
"minLength": 3
},
"language": {
"enum": [
"zh",
"en"
],
"type": "string",
"default": "zh",
"description": "Response language. Defaults to Chinese."
}
}
}Free, unlimited EU/UK/US/AU product assessments with human review for a signed next-step pack. Send a plain-language `message` in English or Chinese; the first response already contains preliminary requirements. Follow `next_action`: execute it exactly as returned and answer questions by `key`. The first reviewed pack is free per confirmed seller email; further packs are arranged with ComplianceCN. Provide email and consent through this same tool when next_action requests them; no browser form is required. Human review requires email confirmation and reviewer sign-off.
| Argument | Type | Description |
|---|---|---|
| string | For request_review_email only: the seller's real notification email, used with their permission. | |
| action | string | Follow the returned next_action. Use correct_stage_2 for seller corrections; confirm_stage_1/correct_stage_1 are legacy aliases. |
| answers | object | Optional structured answers keyed by the stable question.key values returned by the previous call. |
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| message | string | The seller's initial product/market description or their latest natural-language clarification. Do not repeat information already supplied. |
| language | string | Preferred response language; inferred from the seller message when omitted. |
Check structured product facts, destination markets and evidence held. Returns requirements, an evidence checklist and gaps in one response. For plain-language input use market_access_check. Automated findings are provisional; a signed pack requires human review.
| Argument | Type | Description |
|---|---|---|
| case_id | string | The case this call continues, from an earlier result. Omit to start a new product case. |
| markets | array | Optional destination-market hints. Omit when product_description names the destination. |
| category | string | Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction. |
| language | string | Language for seller-facing text. Questions and messages come back in it; en or zh. |
| age_group | string | Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow. |
| food_type | string | The food the product will contact. Simulant selection for migration testing depends on it. |
| has_radio | boolean | Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US. |
Start free email alerts for a checked product when the seller explicitly requests them. Requires a real email, consent_to_alerts=true and a saved product/market profile. Covers matching human-reviewed ComplianceCN updates, not every regulatory change. There is no payment and no checkout step.
| Argument | Type | Description |
|---|---|---|
| email* | string | Seller email for product-change alerts. Provide only after the seller explicitly asks for the alert subscription. |
| product_profile* | object | The same normalized product profile used for the completed preflight. Do not include document contents or unrelated personal data. |
| preflight_result | object | The completed preflight result when available. Its requirement, rule and claim IDs improve future change matching. |
| consent_to_alerts* | boolean | Must be true. The seller explicitly agrees to save this product profile and receive matched product-change and subscription-service emails. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product_profile",
"email",
"consent_to_alerts"
],
"properties": {
"email": {
"type": "string",
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"description": "Seller email for product-change alerts. Provide only after the seller explicitly asks for the alert subscription."
},
"product_profile": {
"type": "object",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"food_type": {
"enum": [
"dry",
"aqueous",
"acidic",
"fatty",
"alcoholic",
"mixed",
"unknown"
],
"type": "string",
"description": "The food the product will contact. Simulant selection for migration testing depends on it."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"is_sunscreen": {
"type": "boolean",
"description": "Whether the product is sold as sun protection. Sunscreens carry separate testing and labelling duties."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"repeated_use": {
"enum": [
"single_use",
"repeated_use",
"unknown"
],
"type": "string",
"description": "Whether the article is single-use or reused. Repeated use requires migration testing across successive cycles."
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"evidence_text": {
"type": "string",
"maxLength": 6000,
"description": "Document/evidence information already known or extracted by an agent. File upload is optional and separate. Do not paste sensitive certificates or full reports into agent chat."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"evidence_notes": {
"type": "string",
"maxLength": 6000,
"description": "Document and evidence information known by the seller or agent: filenames, supplier claims, models, standards, issuers, dates, or extracted key text. Explicit evidence may be mapped to evidence IDs; authenticity, completeness and SKU coverage still need original-file and human review."
},
"contact_duration": {
"enum": [
"short",
"long_term",
"unknown"
],
"type": "string",
"description": "How long the product touches food in normal use. Long-term contact triggers stricter migration testing."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"claims_therapeutic": {
"type": "boolean",
"description": "Whether the product claims to treat, prevent or cure anything. A therapeutic claim moves a cosmetic into a different regime."
},
"contact_temperature": {
"enum": [
"ambient",
"hot_fill",
"cooking_reheating",
"freezing",
"unknown"
],
"type": "string",
"description": "The temperature at contact. Hot fill and cooking raise migration limits and change the test."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"sells_in_california": {
"type": "boolean",
"description": "Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements."
},
"clarification_answer": {
"type": "string",
"maxLength": 6000,
"minLength": 1,
"description": "Continuation shortcut for the exact same case_id when answering questions_required. Send the seller's natural-language answer here; the service restores and merges the previous canonical product profile. Never use this field to introduce a different product or SKU."
},
"ingredients_reviewed": {
"type": "boolean",
"description": "Whether the full ingredient list has already been checked against restricted-substance annexes."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"evidence_observations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"issues": {
"type": "array",
"items": {
"type": "string",
"maxLength": 240
},
"default": [],
"maxItems": 16,
"description": "Concise unresolved checks only; never include document quotations or report text."
},
"status": {
"enum": [
"reported_held",
"mentioned_uncertain",
"not_held",
"needs_human_review"
],
"type": "string",
"default": "mentioned_uncertain"
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"default": "low"
},
"provenance": {
"enum": [
"seller_statement",
"agent_extraction",
"llm_inference",
"keyword_inference"
],
"type": "string",
"default": "agent_extraction"
},
"evidence_id": {
"anyOf": [
{
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Canonical evidence ID when the apparent document type can be mapped safely; otherwise null."
},
"document_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"document_type": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
],
"description": "Plain-language apparent document type; this does not authenticate or approve the document."
},
"issuer_or_lab": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"description": "Issuing organisation or laboratory name only; omit personal names and addresses."
},
"models_covered": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"default": [],
"maxItems": 20,
"description": "Model/SKU identifiers explicitly stated by the seller, agent or extracted document facts."
},
"document_reference": {
"anyOf": [
{
"type": "string",
"maxLength": 260
},
{
"type": "null"
}
],
"description": "Filename or short seller/agent reference only. Do not send a local path, URL, document body or quotation."
},
"standards_referenced": {
"type": "array",
"items": {
"type": "string",
"maxLength": 160
},
"default": [],
"maxItems": 24
},
"report_or_certificate_number": {
"anyOf": [
{
"type": "string",
"maxLength": 140
},
{
"type": "null"
}
]
}
}
},
"default": [],
"maxItems": 40,
"description": "Sanitised document observations that may continue between workflow stages: apparent type, filename/reference, models, organisation, date, identifiers, standards, confidence and unresolved issues. Do not include file contents, verbatim extracts, quotations, addresses or unrelated personal information."
},
"food_contact_material": {
"enum": [
"plastic",
"metal",
"ceramic_glass",
"paper_board",
"silicone_rubber",
"multi_material",
"unknown"
],
"type": "string",
"description": "The material that touches food. Migration limits and test methods differ by material."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"is_electrically_operated": {
"type": "boolean",
"description": "Whether the toy is electrically operated, including mains-powered or battery-powered operation."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
},
"battery_compartment_security": {
"enum": [
"tool_required",
"two_independent_actions",
"other_secured",
"unsecured",
"unknown"
],
"type": "string",
"description": "How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard."
},
"toy_chemical_assessment_complete": {
"type": "boolean",
"description": "Whether a chemical safety assessment covering migration limits has already been completed for this toy."
}
},
"description": "The same normalized product profile used for the completed preflight. Do not include document contents or unrelated personal data."
},
"preflight_result": {
"type": "object",
"description": "The completed preflight result when available. Its requirement, rule and claim IDs improve future change matching.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"consent_to_alerts": {
"type": "boolean",
"const": true,
"description": "Must be true. The seller explicitly agrees to save this product profile and receive matched product-change and subscription-service emails."
}
}
}| Human-readable product or SKU name |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| includes_mains_charger | boolean | Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
| battery_compartment_security | string | How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
},
"battery_compartment_security": {
"enum": [
"tool_required",
"two_independent_actions",
"other_secured",
"unsecured",
"unknown"
],
"type": "string",
"description": "How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard."
}
}
}| Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| product_name | string | Human-readable product or SKU name |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| eu_destination | string | Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU. |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| food_contact_material | string | The material that touches food. Migration limits and test methods differ by material. |
| includes_mains_charger | boolean | Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope. |
| is_electrically_operated | boolean | Whether the toy is electrically operated, including mains-powered or battery-powered operation. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"food_contact_material": {
"enum": [
"plastic",
"metal",
"ceramic_glass",
"paper_board",
"silicone_rubber",
"multi_material",
"unknown"
],
"type": "string",
"description": "The material that touches food. Migration limits and test methods differ by material."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"is_electrically_operated": {
"type": "boolean",
"description": "Whether the toy is electrically operated, including mains-powered or battery-powered operation."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
}
}
}| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| product_name | string | Human-readable product or SKU name |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| eu_destination | string | Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU. |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| sells_in_california | boolean | Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| food_contact_material | string | The material that touches food. Migration limits and test methods differ by material. |
| accessible_small_parts | boolean | Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
| battery_compartment_security | string | How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"sells_in_california": {
"type": "boolean",
"description": "Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"food_contact_material": {
"enum": [
"plastic",
"metal",
"ceramic_glass",
"paper_board",
"silicone_rubber",
"multi_material",
"unknown"
],
"type": "string",
"description": "The material that touches food. Migration limits and test methods differ by material."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
},
"battery_compartment_security": {
"enum": [
"tool_required",
"two_independent_actions",
"other_secured",
"unsecured",
"unknown"
],
"type": "string",
"description": "How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard."
}
}
}| Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| product_name | string | Human-readable product or SKU name |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| sells_in_california | boolean | Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| accessible_small_parts | boolean | Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
| toy_chemical_assessment_complete | boolean | Whether a chemical safety assessment covering migration limits has already been completed for this toy. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"sells_in_california": {
"type": "boolean",
"description": "Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
},
"toy_chemical_assessment_complete": {
"type": "boolean",
"description": "Whether a chemical safety assessment covering migration limits has already been completed for this toy."
}
}
}| boolean |
| Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| is_sunscreen | boolean | Whether the product is sold as sun protection. Sunscreens carry separate testing and labelling duties. |
| repeated_use | string | Whether the article is single-use or reused. Repeated use requires migration testing across successive cycles. |
| verified_only | boolean | Exclude rules not yet checked against primary sources. Default false: unverified material is included but labelled via review_status and the trust envelope. |
| eu_destination | string | Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU. |
| contact_duration | string | How long the product touches food in normal use. Long-term contact triggers stricter migration testing. |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| claims_therapeutic | boolean | Whether the product claims to treat, prevent or cure anything. A therapeutic claim moves a cosmetic into a different regime. |
| contact_temperature | string | The temperature at contact. Hot fill and cooking raise migration limits and change the test. |
| ingredients_reviewed | boolean | Whether the full ingredient list has already been checked against restricted-substance annexes. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| food_contact_material | string | The material that touches food. Migration limits and test methods differ by material. |
| accessible_small_parts | boolean | Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use. |
| includes_mains_charger | boolean | Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope. |
| is_electrically_operated | boolean | Whether the toy is electrically operated, including mains-powered or battery-powered operation. |
| battery_compartment_security | string | How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard. |
| toy_chemical_assessment_complete | boolean | Whether a chemical safety assessment covering migration limits has already been completed for this toy. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"category",
"markets"
],
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 2
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Product category"
},
"language": {
"enum": [
"zh",
"en"
],
"type": "string",
"default": "zh",
"description": "Response language. Defaults to Chinese."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"not_applicable",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"food_type": {
"type": "string",
"maxLength": 80,
"description": "The food the product will contact. Simulant selection for migration testing depends on it."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"is_sunscreen": {
"type": "boolean",
"description": "Whether the product is sold as sun protection. Sunscreens carry separate testing and labelling duties."
},
"repeated_use": {
"enum": [
"single_use",
"repeated_use",
"unknown"
],
"type": "string",
"description": "Whether the article is single-use or reused. Repeated use requires migration testing across successive cycles."
},
"verified_only": {
"type": "boolean",
"description": "Exclude rules not yet checked against primary sources. Default false: unverified material is included but labelled via review_status and the trust envelope."
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"contact_duration": {
"type": "string",
"maxLength": 80,
"description": "How long the product touches food in normal use. Long-term contact triggers stricter migration testing."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"claims_therapeutic": {
"type": "boolean",
"description": "Whether the product claims to treat, prevent or cure anything. A therapeutic claim moves a cosmetic into a different regime."
},
"contact_temperature": {
"type": "string",
"maxLength": 80,
"description": "The temperature at contact. Hot fill and cooking raise migration limits and change the test."
},
"ingredients_reviewed": {
"type": "boolean",
"description": "Whether the full ingredient list has already been checked against restricted-substance annexes."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"food_contact_material": {
"type": "string",
"maxLength": 120,
"description": "The material that touches food. Migration limits and test methods differ by material."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"is_electrically_operated": {
"type": "boolean",
"description": "Whether the toy is electrically operated, including mains-powered or battery-powered operation."
},
"battery_compartment_security": {
"enum": [
"tool_required",
"two_independent_actions",
"other_secured",
"unsecured",
"unknown"
],
"type": "string",
"description": "How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard."
},
"toy_chemical_assessment_complete": {
"type": "boolean",
"description": "Whether a chemical safety assessment covering migration limits has already been completed for this toy."
}
}
}| consent_to_contact |
| boolean |
| For request_review_email: true only with the seller's permission to email them about this case. Reuse existing scoped consent; never infer it. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"email": {
"type": "string",
"maxLength": 320,
"description": "For request_review_email only: the seller's real notification email, used with their permission."
},
"action": {
"enum": [
"continue",
"start_stage_2",
"confirm_stage_2",
"request_review_email",
"correct_stage_2",
"confirm_stage_1",
"correct_stage_1"
],
"type": "string",
"default": "continue",
"description": "Follow the returned next_action. Use correct_stage_2 for seller corrections; confirm_stage_1/correct_stage_1 are legacy aliases."
},
"answers": {
"type": "object",
"description": "Optional structured answers keyed by the stable question.key values returned by the previous call.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"anyOf": [
{
"type": "string",
"maxLength": 6000
},
{
"type": "boolean"
},
{
"type": "number"
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 240
},
"maxItems": 40
}
]
}
},
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"message": {
"type": "string",
"maxLength": 6000,
"minLength": 1,
"description": "The seller's initial product/market description or their latest natural-language clarification. Do not repeat information already supplied."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"description": "Preferred response language; inferred from the seller message when omitted."
},
"consent_to_contact": {
"type": "boolean",
"description": "For request_review_email: true only with the seller's permission to email them about this case. Reuse existing scoped consent; never infer it."
}
}
}| has_battery | boolean | Whether the product contains or ships with any battery, including a coin cell in a remote. |
| battery_type | string | Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing. |
| is_sunscreen | boolean | Whether the product is sold as sun protection. Sunscreens carry separate testing and labelling duties. |
| product_name | string | Human-readable product or SKU name |
| repeated_use | string | Whether the article is single-use or reused. Repeated use requires migration testing across successive cycles. |
| evidence_held | array | Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document. |
| evidence_text | string | Document/evidence information already known or extracted by an agent. File upload is optional and separate. Do not paste sensitive certificates or full reports into agent chat. |
| sales_channel | string | Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements. |
| verified_only | boolean | Exclude decision rules not checked against primary sources |
| eu_destination | string | Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU. |
| evidence_notes | string | Document and evidence information known by the seller or agent: filenames, supplier claims, models, standards, issuers, dates, or extracted key text. Explicit evidence may be mapped to evidence IDs; authenticity, completeness and SKU coverage still need original-file and human review. |
| contact_duration | string | How long the product touches food in normal use. Long-term contact triggers stricter migration testing. |
| supply_chain_role | string | The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's. |
| applicable_modules | array | Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics. |
| claims_therapeutic | boolean | Whether the product claims to treat, prevent or cure anything. A therapeutic claim moves a cosmetic into a different regime. |
| contact_temperature | string | The temperature at contact. Hot fill and cooking raise migration limits and change the test. |
| product_description | string | Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied. |
| sells_in_california | boolean | Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements. |
| clarification_answer | string | Continuation shortcut for the exact same case_id when answering questions_required. Send the seller's natural-language answer here; the service restores and merges the previous canonical product profile. Never use this field to introduce a different product or SKU. |
| ingredients_reviewed | boolean | Whether the full ingredient list has already been checked against restricted-substance annexes. |
| is_childrens_product | boolean | Whether the product is marketed as a children's product; keep unknown when not established. |
| evidence_observations | array | Sanitised document observations that may continue between workflow stages: apparent type, filename/reference, models, organisation, date, identifiers, standards, confidence and unresolved issues. Do not include file contents, verbatim extracts, quotations, addresses or unrelated personal information. |
| food_contact_material | string | The material that touches food. Migration limits and test methods differ by material. |
| accessible_small_parts | boolean | Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use. |
| includes_mains_charger | boolean | Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope. |
| is_electrically_operated | boolean | Whether the toy is electrically operated, including mains-powered or battery-powered operation. |
| evidence_inventory_complete | boolean | True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing. |
| battery_compartment_security | string | How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard. |
| toy_chemical_assessment_complete | boolean | Whether a chemical safety assessment covering migration limits has already been completed for this toy. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"case_id": {
"type": "string",
"pattern": "^ccase_[a-f0-9]{24}$",
"description": "The case this call continues, from an earlier result. Omit to start a new product case."
},
"markets": {
"type": "array",
"items": {
"enum": [
"EU",
"US",
"UK",
"AU"
],
"type": "string"
},
"maxItems": 4,
"minItems": 1,
"description": "Optional destination-market hints. Omit when product_description names the destination."
},
"category": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string",
"description": "Optional structured category hint. Canonical IDs and common English/Chinese labels are accepted. Omit when product_description contains enough information for extraction."
},
"language": {
"enum": [
"zh",
"en",
"English",
"english",
"Chinese",
"chinese",
"中文",
"英文"
],
"type": "string",
"default": "zh",
"description": "Language for seller-facing text. Questions and messages come back in it; en or zh."
},
"age_group": {
"enum": [
"under_3",
"3_to_13",
"14_plus",
"unknown"
],
"type": "string",
"description": "Intended user age. Decides whether toy safety rules apply and which small-parts and warning duties follow."
},
"food_type": {
"enum": [
"dry",
"aqueous",
"acidic",
"fatty",
"alcoholic",
"mixed",
"unknown"
],
"type": "string",
"description": "The food the product will contact. Simulant selection for migration testing depends on it."
},
"has_radio": {
"type": "boolean",
"description": "Whether the product transmits: Bluetooth, Wi-Fi, NFC, or any other radio. Decides the RED conformity route in the EU and FCC authorisation in the US."
},
"has_battery": {
"type": "boolean",
"description": "Whether the product contains or ships with any battery, including a coin cell in a remote."
},
"battery_type": {
"enum": [
"button_coin",
"lithium_ion",
"other",
"none",
"unknown"
],
"type": "string",
"description": "Cell chemistry. Decides whether UN 38.3 transport testing and battery-passport duties apply. Use unknown rather than guessing."
},
"is_sunscreen": {
"type": "boolean",
"description": "Whether the product is sold as sun protection. Sunscreens carry separate testing and labelling duties."
},
"product_name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable product or SKU name"
},
"repeated_use": {
"enum": [
"single_use",
"repeated_use",
"unknown"
],
"type": "string",
"description": "Whether the article is single-use or reused. Repeated use requires migration testing across successive cycles."
},
"evidence_held": {
"type": "array",
"items": {
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
"default": [],
"maxItems": 90,
"description": "Evidence IDs the seller already holds, from a previous result's evidence_checklist. Marks each item held rather than unknown; it does not verify the document."
},
"evidence_text": {
"type": "string",
"maxLength": 6000,
"description": "Document/evidence information already known or extracted by an agent. File upload is optional and separate. Do not paste sensitive certificates or full reports into agent chat."
},
"sales_channel": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Where the product is sold. Marketplaces impose their own evidence requests on top of the legal requirements."
},
"verified_only": {
"type": "boolean",
"default": true,
"description": "Exclude decision rules not checked against primary sources"
},
"eu_destination": {
"enum": [
"DE",
"other_eu",
"unknown"
],
"type": "string",
"description": "Destination member state, where it changes the answer. Language and producer-registration duties differ across the EU."
},
"evidence_notes": {
"type": "string",
"maxLength": 6000,
"description": "Document and evidence information known by the seller or agent: filenames, supplier claims, models, standards, issuers, dates, or extracted key text. Explicit evidence may be mapped to evidence IDs; authenticity, completeness and SKU coverage still need original-file and human review."
},
"contact_duration": {
"enum": [
"short",
"long_term",
"unknown"
],
"type": "string",
"description": "How long the product touches food in normal use. Long-term contact triggers stricter migration testing."
},
"supply_chain_role": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The seller's role in the chain. Decides which duties are theirs rather than the manufacturer's or importer's."
},
"applicable_modules": {
"type": "array",
"items": {
"enum": [
"battery-electronics",
"toys",
"cosmetics",
"food-contact",
"toy",
"玩具",
"battery",
"electronics",
"电池电子产品",
"带电池电子产品",
"cosmetic",
"化妆品",
"food_contact",
"foodcontact",
"食品接触材料",
"食品接触用品",
"食品接触产品"
],
"type": "string"
},
"maxItems": 4,
"description": "Optional additional modules that should be assessed together with the primary category, for example toys plus battery-electronics."
},
"claims_therapeutic": {
"type": "boolean",
"description": "Whether the product claims to treat, prevent or cure anything. A therapeutic claim moves a cosmetic into a different regime."
},
"contact_temperature": {
"enum": [
"ambient",
"hot_fill",
"cooking_reheating",
"freezing",
"unknown"
],
"type": "string",
"description": "The temperature at contact. Hot fill and cooking raise migration limits and change the test."
},
"product_description": {
"type": "string",
"maxLength": 6000,
"minLength": 10,
"description": "Preferred first input: describe the product, destination market, sales channel and any known supplier documents in plain language. The tool extracts a preliminary profile and fills the internal checklist. Required when category/markets are not already supplied."
},
"sells_in_california": {
"type": "boolean",
"description": "Whether the product is sold into California. Proposition 65 warning duties apply on top of federal requirements."
},
"clarification_answer": {
"type": "string",
"maxLength": 6000,
"minLength": 1,
"description": "Continuation shortcut for the exact same case_id when answering questions_required. Send the seller's natural-language answer here; the service restores and merges the previous canonical product profile. Never use this field to introduce a different product or SKU."
},
"ingredients_reviewed": {
"type": "boolean",
"description": "Whether the full ingredient list has already been checked against restricted-substance annexes."
},
"is_childrens_product": {
"type": "boolean",
"description": "Whether the product is marketed as a children's product; keep unknown when not established."
},
"evidence_observations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"issues": {
"type": "array",
"items": {
"type": "string",
"maxLength": 240
},
"default": [],
"maxItems": 16,
"description": "Concise unresolved checks only; never include document quotations or report text."
},
"status": {
"enum": [
"reported_held",
"mentioned_uncertain",
"not_held",
"needs_human_review"
],
"type": "string",
"default": "mentioned_uncertain"
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"default": "low"
},
"provenance": {
"enum": [
"seller_statement",
"agent_extraction",
"llm_inference",
"keyword_inference"
],
"type": "string",
"default": "agent_extraction"
},
"evidence_id": {
"anyOf": [
{
"enum": [
"ce_declaration",
"ce_label_artwork",
"rohs_evidence",
"radio_test_report",
"un38_3_test_summary",
"battery_label_artwork",
"eu_economic_operator",
"weee_registration",
"battery_epr_registration",
"fcc_authorization",
"fcc_sdoc",
"fcc_label_artwork",
"us_responsible_party",
"lithium_shipping_marks",
"prop65_assessment",
"marketplace_safety_report",
"ukca_or_ce_mark",
"uk_rohs_evidence",
"uk_radio_compliance",
"uk_importer_details",
"uk_weee_registration",
"uk_battery_epr_registration",
"uk_un38_3_test_summary",
"uk_marketplace_safety_report",
"au_rcm_supplier_declaration",
"au_radio_compliance",
"au_eess_supplier_evidence",
"au_importer_supplier_details",
"au_battery_shipping_evidence",
"au_marketplace_safety_report",
"toy_safety_assessment",
"en71_mechanical_report",
"en71_chemical_report",
"electrical_toy_report",
"battery_compartment_assessment",
"choking_risk_assessment",
"age_grading_rationale",
"toy_warning_artwork",
"german_warning_copy",
"marketplace_toy_evidence_package",
"toy_third_party_test_report",
"toy_cpc_certificate",
"toy_retesting_plan",
"toy_cbp_efiling_evidence",
"toy_tracking_label_artwork",
"toy_small_parts_warning_artwork",
"uk_toy_declaration",
"uk_en71_report",
"uk_toy_marking",
"uk_toy_importer_details",
"uk_toy_radio_compliance",
"uk_toy_battery_evidence",
"uk_toy_warning_artwork",
"uk_toy_retesting_plan",
"uk_toy_marketplace_evidence_package",
"au_toy_safety_report",
"au_toy_supplier_declaration",
"au_toy_warning_artwork",
"au_toy_importer_details",
"au_toy_radio_compliance",
"au_toy_battery_evidence",
"au_toy_retesting_plan",
"au_toy_marketplace_evidence_package",
"cosmetic_formula_review",
"cosmetic_safety_report",
"cosmetic_pif",
"cosmetic_cpn_notification",
"cosmetic_label_artwork",
"cosmetic_responsible_person",
"cosmetic_claim_substantiation",
"cosmetic_facility_registration",
"cosmetic_adverse_event_process",
"cosmetic_notification",
"food_contact_material_spec",
"food_contact_use_conditions_spec",
"food_contact_migration_report",
"food_contact_plastic_oml_sml_report",
"food_contact_ceramic_glass_release_report",
"food_contact_paper_board_component_review",
"food_contact_coating_adhesive_ink_review",
"food_contact_metal_release_review",
"food_contact_hot_use_protocol",
"food_contact_repeated_use_simulation",
"food_contact_doc",
"food_contact_traceability",
"food_contact_label_artwork",
"food_contact_polymer_resin_clearance",
"food_contact_fda_status",
"food_contact_supplier_declaration",
"food_contact_california_prop65_screen"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Canonical evidence ID when the apparent document type can be mapped safely; otherwise null."
},
"document_date": {
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"document_type": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
],
"description": "Plain-language apparent document type; this does not authenticate or approve the document."
},
"issuer_or_lab": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
],
"description": "Issuing organisation or laboratory name only; omit personal names and addresses."
},
"models_covered": {
"type": "array",
"items": {
"type": "string",
"maxLength": 120
},
"default": [],
"maxItems": 20,
"description": "Model/SKU identifiers explicitly stated by the seller, agent or extracted document facts."
},
"document_reference": {
"anyOf": [
{
"type": "string",
"maxLength": 260
},
{
"type": "null"
}
],
"description": "Filename or short seller/agent reference only. Do not send a local path, URL, document body or quotation."
},
"standards_referenced": {
"type": "array",
"items": {
"type": "string",
"maxLength": 160
},
"default": [],
"maxItems": 24
},
"report_or_certificate_number": {
"anyOf": [
{
"type": "string",
"maxLength": 140
},
{
"type": "null"
}
]
}
}
},
"default": [],
"maxItems": 40,
"description": "Sanitised document observations that may continue between workflow stages: apparent type, filename/reference, models, organisation, date, identifiers, standards, confidence and unresolved issues. Do not include file contents, verbatim extracts, quotations, addresses or unrelated personal information."
},
"food_contact_material": {
"enum": [
"plastic",
"metal",
"ceramic_glass",
"paper_board",
"silicone_rubber",
"multi_material",
"unknown"
],
"type": "string",
"description": "The material that touches food. Migration limits and test methods differ by material."
},
"accessible_small_parts": {
"type": "boolean",
"description": "Whether a child could reach a part that fits in a small-parts cylinder, including parts freed by reasonably foreseeable use."
},
"includes_mains_charger": {
"type": "boolean",
"description": "Whether a mains plug, wall charger or power adapter ships in the box. A supplied charger is separately in scope."
},
"is_electrically_operated": {
"type": "boolean",
"description": "Whether the toy is electrically operated, including mains-powered or battery-powered operation."
},
"evidence_inventory_complete": {
"type": "boolean",
"default": false,
"description": "True only when evidence_notes/evidence_text and evidence_held together form a complete inventory. Otherwise unprovided applicable evidence remains unknown, not missing."
},
"battery_compartment_security": {
"enum": [
"tool_required",
"two_independent_actions",
"other_secured",
"unsecured",
"unknown"
],
"type": "string",
"description": "How the battery compartment is secured. Button and coin cells carry stricter duties because ingestion is the hazard."
},
"toy_chemical_assessment_complete": {
"type": "boolean",
"description": "Whether a chemical safety assessment covering migration limits has already been completed for this toy."
}
}
}