Fit Extension for UCP

A vendor-namespace extension that makes footwear fit a measurable property of a catalog variant.

Name  ai.vsize.shopping.fit
Schema  https://vsize.ai/ucp/schemas/fit.json
Extends  dev.ucp.shopping.catalog.search, dev.ucp.shopping.catalog.lookup
Discussion  UCP #1027
Background  The missing floor, drafted

Purpose

An agent buying shoes on someone's behalf cannot try the shoe on. Today the Universal Commerce Protocol carries size as a label (Size: EU 40) and fit as free text through ask. Neither is something an agent can compute with. This extension makes fit a measurable property: the variant carries the dimensions of the space inside the shoe; the buyer may supply consented foot measurements; when both are present, the variant also carries a zone-by-zone assessment with an explicit confidence.

Fit is a comparison between two measurements, not a summary of reviews.

Principles

1. The variant carries its internal dimensions

"fit": {
  "internal_dimensions": {
    "functional_length_mm": 257.0,
    "ball_width_mm": 92.5,
    "ball_girth_mm": 238.0,
    "instep_girth_mm": 244.0,
    "heel_width_mm": 63.0,
    "toe_height_mm": 27.5,
    "tolerance_mm": 2.0,
    "source": "last_derived",
    "vocabulary": "ISO 19409:2022 / ISO 19410-1:2022",
    "last_reference": "opaque-id"
  }
}
FieldMeaning
functional_length_mmUsable internal length, heel to where the longest toe is meant to reach. Required.
ball_width_mm, ball_girth_mmWidth and girth at the ball.
instep_girth_mmGirth at the instep.
heel_width_mmWidth at the heel seat.
toe_height_mm, heel_height_mmToe-box height; heel height of the shoe.
tolerance_mmMeasurement uncertainty. Required.
sourceOne of last_measured, last_derived, in_shoe_measured, estimated. Required.
last_referenceOpaque id of the last, so an agent can see that two variants share one.

2. The buyer supplies a foot profile, with consent

Sent in catalog context, which UCP defines as provisional, non-identifying buyer signals. One entry per foot; feet differ.

"context": {
  "foot_profile": {
    "feet": [
      { "side": "left",  "length_mm": 251.0, "ball_width_mm": 94.0, "ball_girth_mm": 236.0, "instep_girth_mm": 241.0, "heel_width_mm": 62.0 },
      { "side": "right", "length_mm": 254.5, "ball_width_mm": 95.0, "ball_girth_mm": 238.0, "instep_girth_mm": 243.0, "heel_width_mm": 62.5 }
    ],
    "measurement_method": "phone_scan",
    "measured_at": "2026-10-20",
    "tolerance_mm": 1.5,
    "consent": true
  }
}

3. The assessment carries its uncertainty

Returned on the variant only when a foot profile was supplied and the assessor could compare.

"fit": {
  "internal_dimensions": { "...": "..." },
  "fit_assessment": {
    "overall": "good",
    "confidence": 0.78,
    "foot_side": "right",
    "zones": [
      { "zone": "toe",    "delta_mm":  4.5, "verdict": "good" },
      { "zone": "ball",   "delta_mm": -1.5, "verdict": "snug" },
      { "zone": "instep", "delta_mm":  2.0, "verdict": "good" },
      { "zone": "heel",   "delta_mm":  0.5, "verdict": "good" }
    ],
    "limiting_zone": "ball",
    "assessed_by": "ai.vsize",
    "method": "geometric comparison, last-derived dimensions"
  }
}

overall and each zone verdict are one of good, snug, tight, loose, unknown. confidence and assessed_by are required, so an agent always knows how sure the assessment is and who made it.

Non-goals

Open questions

  1. Do internal_dimensions belong on the catalog variant, or in a separate capability?
  2. May foot_profile travel in catalog context, or does buyer measurement data need its own consent path, like identity linking?
  3. May vocabulary reference an externally governed, paid standard, the question UCP #971 raises for print?

Status and path

This is a draft published under a vendor namespace, as the UCP contribution guide recommends for emerging use cases. If a second party, a merchant or a scanning provider, wants to expose or consume these fields, the intent is to propose dev.ucp.shopping.fit through an Enhancement Proposal to the Shopping Tech Council. Comments are welcome in UCP discussion #1027.

Draft 1, November 2026. Published by VSIZE, Novainvent AB, Sweden. Schema licensed under Apache 2.0, in line with UCP.

← All insights