Try a handoff
SOMNI FIT HANDSHAKE · VERSION 1.0

A fitting process
that can travel.

Bring shopper-approved structured answers into the same Somni profile, quiz and fit engine. The shopper reviews them before use and makes a separate choice about any retailer handoff.

What works now

  1. Paste and review a labelled summary or JSON. Continue on the same device without an account, or sign in for private storage.
  2. An authenticated integration can prepare a 15-minute continuation link through the API or the prepare_sleep_handoff MCP tool.
  3. The same shopper opens the link, checks the proposed answers, corrects or excludes guesses, and approves a new private profile.
  4. Somni keeps confirmed answers and asks for missing details. Importing does not send a retailer introduction, a message, or a marketing subscription.

A deployed MCP endpoint is not an installed integration. The shopper’s client must connect and authorize it. The portable contract can be adapted for supported clients; ChatGPT, Claude and Gemini are not claimed as universally connected or automatically discovering Somni.

Public product discovery

Assistants can read the public product directory or call the read-only search_sleep_products MCP tool. Filter by product terms, construction or category; no private profile is read. Results link to original evidence and public Somni pages. They do not establish personal fit, current price, availability or compatibility.

For customer-approved continuations, transfer only structured shopping and sleep preferences using the contract below. This includes which parts of the existing setup to keep, replace or add, plus bedding feel and material choices. The customer reviews imported answers before they affect results.

ChatGPT and Claude require an authorized, supported MCP connection. A Gemini API application can use a function adapter to the public directory and reviewed handoff; this does not install Somni inside the consumer Gemini app. Platform listing and approval remain separate.

API contract

Read the live field guide. Send POST /api/v1/handshake/create with { packet, request_id }; use a fresh UUID for a new request and the same UUID for an exact retry.

{
  "schema_version": "1.0",
  "source": "external_ai_agent",
  "shopper_approved": true,
  "requested_action": "continue_fit",
  "answers": {
    "count": 1,
    "s1.name": "Alex",
    "sleep_position": "side",
    "weight_lb": 185,
    "height_cm": 178,
    "budget_max_usd": 2000,
    "mattress_size": "queen",
    "firmness_preference": "plush",
    "zip_code": "80241"
  },
  "provenance": {
    "count": "explicit",
    "s1.name": "explicit",
    "sleep_position": "explicit",
    "weight_lb": "explicit",
    "height_cm": "explicit",
    "budget_max_usd": "explicit",
    "mattress_size": "explicit",
    "firmness_preference": "inferred",
    "zip_code": "explicit"
  }
}

The example’s permission flag is not authentication or independent proof of consent. Sites supplies the request’s validated user identity. Service access alone is insufficient. Every data-bearing operation checks ownership. Reusing an idempotency key with different data is rejected.

The returned URL contains an opaque reference in its fragment. It contains no answers or contact information. Somni exchanges it through an authenticated POST, removes it from the visible address, and holds it in same-tab session storage during sign-in. The token alone does not grant access. Redemption is atomic and creates only one profile.

Browser applications use same-origin requests. External clients use the platform-managed authenticated MCP connection; no API secret belongs in a browser. This release does not provide a second, custom OAuth service or accept caller-supplied user IDs.

Answer and evidence rules

  • Supply explicit, inferred or unknown provenance for each answer. Missing provenance is unknown; an explicit source label still requires review.
  • Use count: 2 and separate s1./s2. field keys for couples. Never copy one person’s preferences to the other.
  • Support and pressure-relief coordinates come from Somni’s model after required answers are confirmed. Imported scores, diagnoses, retailer claims and full transcripts are refused.
  • Pressure intensity is not pressure frequency. A shoulder intensity rating can mark the shoulder area, but cannot fill the frequency answer.
  • Height and midsection shape customize the illustration. Explicit shoulder and hip refinements can make bounded, provisional fit adjustments; imported guesses remain unconfirmed until customer review.
  • Fit score, profile completeness and evidence strength are separate. No numeric confidence percentage is claimed without outcome validation.
  • Delivery ZIP does not establish store distance, display status, inventory or fulfillment.

Up to 60 structured answers and 16,384 bytes are accepted. The current supported adult weight range is 50–700 lb.

Storage and attribution

Pending transfers are encrypted and expire after 15 minutes. Only reviewed answers enter the encrypted, account-owned profile. The pending payload is replaced with a receipt of the selected field names, provenance, consent version and reported source after redemption. Profiles and receipts have a 30-day lifetime; expired records are blocked immediately. Pending records are purged during later imports and profile-associated receipts during profile deletion. An unattended purge remains an operational requirement.

The reported source is unverified metadata, not a verified referral or commercial conversion. POET is a future attribution adapter, not a connected service in this release. No other Omniguild project, account or customer database is accessed.

Store-floor displays, purchase inventory and delivery availability are distinct. Connected production retailer handoffs require verified catalogs, staff authorization, a separate shopper-approved summary and an attribution agreement. Synthetic demonstrations remain clearly labelled.