{"ok":true,"site":{"host":"dropspot3d.vercel.app","url":"https://dropspot3d.vercel.app/","type":"live","desc":"DropSpot3D","tools":[{"name":"get_product_diagram","kind":"answer","impl":"imperative","description":"Get the 3D model reference and bounding-box dimensions (diagram_width=length, diagram_height=height, diagram_depth=width) for a car unit. Call this FIRST before log_defect so you know the coordinate system: x/y/z for a defect must be a world point on the car's surface, measured from a fixed corner of its bounding box (0,0,0), x toward the front, y upward, z toward the driver side, each within 0..diagram_width / 0..diagram_height / 0..diagram_depth respectively.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"The product/unit ID to inspect."}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"log_defect","kind":"act","impl":"imperative","description":"Place a defect tag at an exact 3D point on the car model - this is the SAME action a human performs by dragging a tag onto the hologram; it triggers the same crosshair-sweep-and-drop animation. Prefer the `zone` parameter (a named location on the car) over guessing raw x/y/z - known zones and their approximate coordinates: front_bumper=(4.12,0.3,0.89), hood=(3.6,0.43,0.89), windshield=(2.6,0.82,0.89), roof=(1.6,1.05,0.89), rear_windshield=(0.85,0.77,0.89), trunk=(0.4,0.43,0.89), rear_bumper=(0.12,0.26,0.89), left_front_door=(2.4,0.43,1.73), left_rear_door=(1.35,0.43,1.73), right_front_door=(2.4,0.43,0.05), right_rear_door=(1.35,0.43,0.05), left_front_fender=(3.2,0.36,1.64), right_front_fender=(3.2,0.36,0.14), left_headlight=(3.98,0.41,1.45), right_headlight=(3.98,0.41,0.33), left_mirror=(2.7,0.73,1.78), right_mirror=(2.7,0.73,0). Only pass raw x/y/z (call get_product_diagram first to learn the bounding box) if the defect is between zones or none of the named zones fit. Choose severity by asking: does this defect affect FUNCTION or safety (high), is it APPEARANCE-only (low), or is it borderline/unclear (medium)? If you cannot tell what the defect actually is from the description, use defect_type \"unknown\" and leave severity unset - a human will classify it, or call suggest_classification once you have more information. If the inspection note included a photo URL you looked at to identify this defect, pass that exact URL as `photo_url` - it gets stored with the defect and shown to the human reviewing it, so they see the real photo, not just your description of it.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string"},"zone":{"type":"string","enum":["front_bumper","hood","windshield","roof","rear_windshield","trunk","rear_bumper","left_front_door","left_rear_door","right_front_door","right_rear_door","left_front_fender","right_front_fender","left_headlight","right_headlight","left_mirror","right_mirror"],"description":"A named location on the car - preferred over raw coordinates."},"x":{"type":"number","description":"World x (front-back) - only if not using `zone`."},"y":{"type":"number","description":"World y (up-down) - only if not using `zone`."},"z":{"type":"number","description":"World z (left-right) - only if not using `zone`."},"defect_type":{"type":"string","enum":["scratch","dent","paint_defect","misalignment","crack","missing_part","unknown"]},"severity":{"type":"string","enum":["low","med","high"]},"note":{"type":"string","description":"Optional free-text note, e.g. quoting the inspection note."},"photo_url":{"type":"string","description":"URL of the real defect photo, if one was given to you."}},"required":["product_id","defect_type"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_defect_history","kind":"answer","impl":"imperative","description":"Get all logged defects for a product/unit, including who/what placed each one (source: human or agent), resolved status, and any pending suggestion. Useful for trend analysis across a shift.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string"}},"required":["product_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_defect","kind":"act","impl":"imperative","description":"Edit or resolve an existing defect tag by ID: change its severity, note, or mark it resolved. Do NOT use this to change defect_type or severity based on a guess when the type is genuinely unclear - use suggest_classification instead so a human confirms before the record changes.","inputSchema":{"type":"object","properties":{"defect_id":{"type":"string"},"severity":{"type":"string","enum":["low","med","high"]},"note":{"type":"string"},"resolved":{"type":"boolean"},"photo_url":{"type":"string","description":"Attach a real photo of the defect, if one was given to you."}},"required":["defect_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"generate_qa_report","kind":"act","impl":"imperative","description":"Compile a QA summary for a product (or a whole batch of product_ids): defect counts by type and severity, how many are unresolved, and a pass/fail recommendation (fails if any high-severity defect is unresolved). Pass exactly one of product_id or product_ids.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string"},"product_ids":{"type":"array","items":{"type":"string"}},"shift_id":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"flag_for_rework","kind":"act","impl":"imperative","description":"Mark an entire product/unit as needing rework, separate from tagging individual defects. Use this when the accumulation of defects (or one severe one) means the whole unit should be pulled from the line, not just logged.","inputSchema":{"type":"object","properties":{"product_id":{"type":"string"},"reason":{"type":"string"}},"required":["product_id","reason"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"suggest_classification","kind":"act","impl":"imperative","description":"Propose a defect_type and severity for a defect a human flagged as \"unknown\" (or one you logged as unknown yourself) because it could not be classified with confidence. This does NOT change the defect record directly - it stores a pending suggestion that a human must accept or reject in the UI, so the defect's real classification never changes without human confirmation.","inputSchema":{"type":"object","properties":{"defect_id":{"type":"string"},"suggested_defect_type":{"type":"string","enum":["scratch","dent","paint_defect","misalignment","crack","missing_part","unknown"]},"suggested_severity":{"type":"string","enum":["low","med","high"]},"suggestion_note":{"type":"string","description":"Brief reasoning for the suggestion."}},"required":["defect_id","suggested_defect_type","suggested_severity"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Productivity & Business","favicon":"/favicons/dropspot3d.vercel.app.svg","apiSurface":"spec","toolCount":7}}