Raw schema
{
"type": "object",
"properties": {
"requirement": {
"type": "string",
"description": "Plain-language description of the physical need. Maps to intent.purpose. Include function, dimensions, materials, load/performance requirements, environment, and interfaces where known."
},
"quantity": {
"type": "integer",
"description": "Number of units needed. Maps to intent.quantity.",
"minimum": 1
},
"constraints": {
"type": "string",
"description": "Hard constraints: tolerances, certifications, materials to avoid, size/weight limits. Maps to intent.functional_requirements."
},
"budget_usd": {
"type": "number",
"description": "Approximate budget in USD. Maps to intent.budget_envelope."
},
"deadline": {
"type": "string",
"description": "Required delivery date or timeframe. Maps to intent.timeline."
},
"contact": {
"type": "string",
"description": "Optional email or callback endpoint for quote delivery."
},
"business_context": {
"type": "string",
"description": "Optional business requirements (expected volumes, cost targets, ROI constraints). If provided, the quote includes a business case."
},
"callback_url": {
"type": "string",
"description": "Optional HTTPS URL. When the quote is ready, a2a2p POSTs it as JSON to this URL."
},
"intent": {
"type": "object",
"description": "Layer 1 — the problem. What the physical matter needs to DO. Use this for intent-driven requests where the agent describes purpose and a2a2p recommends solutions.",
"properties": {
"purpose": {
"type": "string",
"description": "What the physical matter needs to accomplish (one line minimum, required)."
},
"environment": {
"type": "array",
"items": {
"type": "string",
"enum": [
"indoor",
"outdoor",
"saltwater",
"uv_exposure",
"high_temp",
"low_temp",
"vibration",
"food_contact",
"medical",
"aerospace",
"high_humidity",
"chemical_exposure"
]
},
"description": "Conditions the part must survive."
},
"functional_requirements": {
"type": "object",
"description": "Structured physical constraints.",
"properties": {
"max_load": {
"type": "number",
"description": "Maximum load in Newtons."
},
"max_weight": {
"type": "number",
"description": "Maximum weight of the part in kg."
},
"flexibility": {
"type": "string",
"enum": [
"rigid",
"semi_rigid",
"flexible"
],
"description": "Rigid, semi-rigid, or flexible."
},
"thermal_range": {
"type": "object",
"properties": {
"min": {
"type": "number"
},
"max": {
"type": "number"
}
},
"description": "Operating temperature range in Celsius."
},
"electrical": {
"type": "string",
"description": "Electrical properties (conductive, insulating, etc.)."
}
}
},
"geometric_envelope": {
"type": "object",
"properties": {
"max_x": {
"type": "number"
},
"max_y": {
"type": "number"
},
"max_z": {
"type": "number"
}
},
"description": "Max bounding box in mm if known."
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "How many units needed."
},
"timeline": {
"type": "string",
"description": "When needed ('2 weeks', 'ASAP', 'by March')."
},
"budget_envelope": {
"type": "object",
"properties": {
"max": {
"type": "number"
},
"type": {
"type": "string",
"enum": [
"per_unit",
"total"
]
}
},
"description": "Budget if known."
},
"priority": {
"type": "string",
"enum": [
"cost",
"speed",
"strength",
"precision",
"aesthetics"
],
"description": "What matters most when tradeoffs arise."
},
"compliance": {
"type": "array",
"items": {
"type": "string"
},
"description": "Required standards or certifications."
}
}
},
"specification": {
"type": "object",
"description": "Layer 2 — the solution. What the physical matter IS. Populate what is known. Precise specifications produce faster, tighter quotes. Controlled vocabularies are preferred but open values are accepted.",
"properties": {
"part_type": {
"type": "string",
"enum": [
"bracket",
"housing",
"gear",
"shaft",
"enclosure",
"fixture",
"adapter",
"structural",
"custom"
],
"description": "Category of physical part."
},
"material": {
"type": "string",
"description": "Material (controlled vocab preferred: aluminum_6061, steel_304, PLA, ...; open values accepted)."
},
"process": {
"type": "string",
"enum": [
"cnc_milling",
"cnc_turning",
"fdm_3d_print",
"sla_3d_print",
"sls_3d_print",
"sheet_metal",
"casting",
"injection_molding",
"extrusion"
],
"description": "Manufacturing process."
},
"dimensions": {
"type": "object",
"description": "Critical dimensions with units, or bounding box."
},
"tolerance_class": {
"type": "string",
"enum": [
"coarse",
"medium",
"fine",
"precision"
],
"description": "Required precision: coarse, medium, fine, precision."
},
"surface_finish": {
"type": "string",
"enum": [
"as_machined",
"polished",
"brushed",
"bead_blasted",
"raw"
],
"description": "Surface finish."
},
"post_processing": {
"type": "array",
"items": {
"type": "string",
"enum": [
"anodizing",
"powder_coat",
"painting",
"none"
]
},
"description": "Post-processing treatments."
},
"design_files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"format": {
"type": "string"
}
}
},
"description": "STEP/STL/DXF file references."
}
}
},
"rejected_alternatives": {
"type": "array",
"description": "Options already considered and ruled out. Prevents re-suggesting and builds the learning corpus.",
"items": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "Which spec field (material, process, part_type, etc.)."
},
"value": {
"type": "string",
"description": "The rejected option."
},
"reason": {
"type": "string",
"description": "Why it was rejected."
}
}
}
}
},
"required": []
}