UCP Checker
Back to status
assistant-experiments.vercel.app icon
UCP Score

UCP Score for assistant-experiments.vercel.app

UCP conformance score, top priorities, impact & effort matrix, and copy-paste fixes for every issue.

✓Verified
A100/100
Analyzed Oct 7, 2026 · 1 recommendation ·Custom · v2026-04-08 upgrade
100
/ 100
UCP Conformance Score
A

assistant-experiments.vercel.app publishes a conforming profile with broad capability coverage.

Agent Discovery100
UCP Conformance100
Capability Coverage100
Working

Agent Discovery is solid (100/100).

Start Here

Move to the latest UCP protocol version

Verified

assistant-experiments.vercel.app publishes a valid UCP profile. That is what it declares. An observed agent run shows how far an agent actually gets.

Latency
155ms
Version
2026-04-08
Robots.txt
Allowed ✅

Top Priorities

1
Move to the latest UCP protocol version

Your profile declares a valid but older protocol version. A newer one is published.

Low impact Low effort

Impact & Effort Matrix

Prioritised recommendations by expected impact and implementation effort

Quick Wins(0)

High impact, low effort

  • No items
Strategic Investments(0)

High impact, high effort

  • No items
Incremental Gains(0)

Medium impact & effort

  • No items
Consider Later(1)

Lower priority

  • Move to the latest UCP protocol version

How you compare on Custom

Response time benchmarked against 124 Customs we monitor.

fastCustom median 359msslow
Your store
155ms
Custom percentile
Top quartile
Faster than 78% of Custom stores
Cohort range
165–645ms
p25 to p75 (middle half)
Headless / custom stackCustom-built storefronts have the most flexibility but also the most surface area for inconsistency between environments. Run the score in staging before each deploy that touches profile, schemas, or transports.

Recommendations

All improvements ranked by priority, with evidence and actionable fixes.

1

Move to the latest UCP protocol version

Low impact Low effort

Your profile declares a valid but older protocol version. A newer one is published.

Why it matters

Older versions stay valid (agents use the version you declare), but newer abilities (embedded checkout, agent payment mandates, linked customer accounts, card authentication, payment terms and store location lookup) only work against the latest version. The profile itself barely changes: the signing keys move to a root-level "keys" list, and the rest of the update is in what capabilities can say.

Show fix

Set the version to 2026-08-25 and publish your public keys as a root-level "keys" list. The older "signing_keys" field is still accepted, but "keys" is the one every verifier reads.

"ucp": {
  "version": "2026-08-25",
  ...
},
"keys": [ ... ]   // beside "ucp", not inside it
UCP_VERSION_OUTDATED

Full Check Breakdown

Every signal we evaluate, grouped by category.

Functional probes ran .
Agent Discovery8/8 passed

Can AI agents find your store and its UCP profile?

  • HTTPSCore

    Profile served over a secure connection.

    Profile URL uses https://

    Why it matters

    Agents reject non-HTTPS endpoints outright. Signed payloads over HTTP are meaningless because the channel itself is tamperable.

  • UCP profile reachableCore

    Profile fetched OK from /.well-known/ucp.

    HTTP 200

    Why it matters

    Agents start every session by fetching this URL. If it 404s or times out, the store is invisible to agent commerce.

  • AI bot accessCore

    robots.txt allows agent crawlers to fetch the profile.

    robots.txt allows /.well-known/ucp

    Why it matters

    Agents respect robots.txt. Even a published profile gets ignored if the file is disallowed for known agent user-agents.

  • llms.txtExperimental

    Hand-written brief at /llms.txt for AI agents.

    Found at /llms.txt

    Why it matters

    Emerging convention (analogous to robots.txt). Recommendation/discovery agents read it for brand context, return policy, and crawl preferences.

  • sitemap.xmlCore

    XML sitemap published at /sitemap.xml.

    Found at /sitemap.xml

    Why it matters

    Tells agents which pages are canonical and how often they change. Without it, agents fall back to following internal links.

  • Open Graph tagsCore

    OG meta tags on the homepage.

    og:title and og:type/url present

    Why it matters

    OG tags drive how your store unfurls in agent surfaces, Slack, iMessage, and ChatGPT shares.

  • Organization schema (JSON-LD)Core

    Schema.org Organization (or OnlineStore) JSON-LD on homepage.

    Organization-typed JSON-LD detected

    Why it matters

    Gives agents a structured representation of your brand identity — used to verify you are who your profile claims you are.

  • Mobile viewport metaCore

    Viewport meta tag for mobile rendering.

    <meta name="viewport"> present

    Why it matters

    Mobile agent sessions render in browser sandboxes that respect this. Without it, screenshots taken by agents are unreadable.

UCP Conformance5/5 passed

Does your profile meet the published spec?

  • Profile passes schema validationCore

    Profile structure conforms to the published UCP spec.

    No structural errors

    Why it matters

    Strict UCP agents reject profiles with structural errors. The error code in the diagnostic shows which field failed.

  • Protocol version present and well-formedCore

    ucp.version follows YYYY-MM-DD format.

    Version: 2026-04-08

    Why it matters

    UCP versions are dates, not semver. Agents pick the closest matching schema based on this string.

  • Signing keys publishedCore

    Root-level keys array (canonical since 2026-07-12; legacy signing_keys also accepted) for response verification.

    signing_keys present

    Why it matters

    Required for tokenized payment flows in v2026-04-08+. Stores using checkout-link redirects (e.g. WooCommerce native) often skip this safely.

  • No validation warningsCore

    Profile passes structural and field-level rules.

    No outstanding validation issues

    Why it matters

    Each warning is a strict-spec deviation — the recommendations section above lists them with copy-code fixes.

  • Spec & schema URLs resolve (8)Core

    Resolves the 8 spec/schema URLs declared across the profile to confirm agents can fetch each one.

    All 8 URLs resolved.

    Why it matters

    Spec and schema URLs let agents validate request/response shapes before sending. Broken URLs degrade runtime validation to "best effort" and cause strict agents to refuse the capability entirely.

Capability Coverage6/6 passed

What operations can agents actually perform?

  • Capabilities declaredCore

    Number of agent-readable capabilities under ucp.capabilities.

    5 capabilities detected

    Why it matters

    Capabilities tell agents what operations to attempt. More coverage = more sessions complete end-to-end without falling back to scraping.

  • Checkout capabilityCore

    Store declares a checkout-namespaced capability.

    dev.ucp.shopping.checkout detected

    Why it matters

    Without a checkout capability, agents can browse but can't complete a purchase end-to-end.

  • Transports declaredInterop

    Service transports (REST/MCP/A2A/Embedded) declared on services.

    MCP, REST

    Why it matters

    Transports tell agents how to actually call your endpoints. MCP and REST are the most widely supported today.

  • Payment handlersCore

    Tokenized payment handlers registered for in-conversation checkout.

    1 handler registered

    Why it matters

    Tokenized payment lets agents complete purchases without redirecting the buyer to a hosted checkout. Empty by design is valid for WooCommerce-style native checkouts.

  • MCP transport reachableInterop

    Live reachability check against https://assistant-experiments.vercel.app/api/mcp.

    tools/list returned a JSON-RPC response in 296ms

    Why it matters

    A declared transport that does not respond means agents will hit a dead end the moment they try to use the capability — even if the profile itself looks perfect.

  • REST transport reachableInterop

    Live reachability check against https://assistant-experiments.vercel.app/ucp.

    Reachable in 353ms (HTTP 200)

    Why it matters

    A declared transport that does not respond means agents will hit a dead end the moment they try to use the capability — even if the profile itself looks perfect.

/llms.txt content

The plain-text brief this store publishes to AI agents. Captured on the most recent check.

16.9 KBf1f1ad9f38e1dc88
mentions UCPdeclares checkout flow
Name: Whatever Stays
Base: https://assistant-experiments.vercel.app
Last-Updated: 2026-10-07
Rate-Limit: 2 req/s
Contact: [email protected]
Sitemaps:
  - General sitemap: https://assistant-experiments.vercel.app/sitemap.xml
  - AI-specific sitemap: https://assistant-experiments.vercel.app/ai-sitemap.xml (links to per-property markdown mirrors)

# Whatever Stays

> Hand-picked vacation homes, bookable by humans and agents

---

## About

Whatever Stays is a curated collection of vacation rentals designed to be cleanly described, fully accessible, and bookable by AI assistants and human travelers alike.

## Start here: the search endpoint

If a user is asking "is anything available for X dates and Y guests?", **fetch the search endpoint first** — it returns only the bookable matches with their total prices pre-computed. One fetch, all properties screened. Two equivalent forms — pick whichever your tooling handles better:

### `GET /api/search?...` → JSON (recommended for agents)

Returns a structured JSON document with the filtered properties, full quotes, deep-links, and the markdown URL for each. CORS-open. The cleanest, lowest-overhead interface — no HTML parsing required.

Example: `/api/search?checkIn=2026-06-10&checkOut=2026-06-17&guests=2`

Response shape:
```
{
  "query":      { "location": null, "checkIn": "…", "checkOut": "…", "guests": 2, "page": 1, "perPage": 24 },
  "pagination": { "page": 1, "perPage": 24, "totalCount": 403, "totalPages": 17, "nextUrl": "…?page=2", "prevUrl": null, "hasMore": true, "isComplete": false, "remainingPages": 16 },
  "count":      24,   // results on THIS page (≤ perPage)
  "agentGuidance": "Page 1 of 17 … keep fetching pagination.nextUrl until it is null …",
  "results":    [ { id, slug, name, location, bedrooms, sleeps, priceRangeUSD, availabilityWindows, url, markdownUrl, bookUrl, quote?: … }, … ],
  "reference":  "https://.../llms.txt"
}
```

Add `?page=N` to paginate (24 per page; `?perPage=N` overrides up to 100). Out-of-range `page` values are clamped to the last page.

**Completeness contract — don't stop at page 1.** Both `/api/search` and `/s` are paginated (24 results/page by default), so the unfiltered catalog is 17 pages and any filtered result set paginates the same way. A single page is a *partial* view. Before you answer ANY question that depends on the full set — "cheapest", "best value", "all options", "how many match", "compare everything", "is anything available" — you MUST retrieve every page: loop `pagination.nextUrl` until it is `null` (equivalently, fetch `page=1..totalPages`). To do it in fewer requests, set `perPage=100` (the max) — that turns the 17-page catalog into 5 fetches. The `pagination` block returns `hasMore`, `isComplete`, `totalPages`, and `nextUrl` precisely so you can drive this loop programmatically; the JSON also carries a plain-language `agentGuidance` string saying the same thing.

### `GET /s?...` → HTML (human-friendly twin)

Same filter parameters, same results, but rendered as a server-side HTML page (with an embedded `ItemList` JSON-LD). Use this when deep-linking to a search-results page is preferable.

### Parameters (both endpoints)

- `location` — free text, case-insensitively matched against city, region, country, name, and neighborhood. Optional.
- `checkIn`, `checkOut` — ISO dates (YYYY-MM-DD). When both are present, results are filtered to properties bookable for the full range and each result includes a server-computed total.
- `guests` — integer; properties with `sleeps >= guests` are kept. Optional.
- `amenities` — comma-separated amenity keys; results must have ALL of them (e.g. `amenities=pool,hot_tub`). Free-text `location`/`query` also matches amenities. Optional.
- `page` — integer ≥ 1. 24 results per page by default. Out-of-range page values clamp to the last page (no 404).
- `perPage` — integer 1..100, optional. Defaults to 24.

Each result includes a deep-link to `/property/{id}/{slug}/book?...` pre-filled with the searched dates/guests so search → book is a single chained GET.

## WebMCP tools (Chrome Agentic Browsing)

This site implements the **WebMCP** standard, so in-browser AI agents (Chrome's Agentic Browsing) can call structured tools directly instead of screenshotting and pixel-hunting the UI. Tools are registered two ways:

**Imperative API** (`navigator.modelContext.registerTool`), available on every page:

- `search_properties` — args `{ location?, checkIn?, checkOut?, guests?, page? }`. Returns matching properties with price ranges and, when dates are given, a total quote + booking URL. (read-only)
- `get_property_quote` — args `{ propertyId, checkIn, checkOut, guests? }`. Returns a full price breakdown and whether the dates are bookable. (read-only)
- `book_property` — args `{ propertyId, checkIn, checkOut, guests, firstName, lastName, email, phone?, notes? }`. Creates the reservation and returns a confirmation URL. Use the human user's REAL name and email. (mutates state)

**Declarative API** (form attributes `toolname` / `tooldescription` / `toolparamdescription`), on the visible forms:

- `search_properties_form` — the search form on `/` and `/s`.
- `check_availability` — the date/guest form on each property page.
- `enter_guest_details` — the guest-identity form on `/book` (step 1).
- `complete_booking_payment` — the card form on `/pay` (step 2). Demo only: no card is charged, card fields are discarded server-side.

Agents that DON'T speak WebMCP keep working via the GET deep-links and JSON endpoints described below — WebMCP is an additive fast-path, not a replacement.

## Agentic Commerce Protocol (ACP)

For OFF-site agent platforms (e.g. ChatGPT Instant Checkout) we also expose an [Agentic Commerce Protocol](https://www.agenticcommerce.dev) surface — server-to-server, no browser:

- **Product feed:** `GET https://assistant-experiments.vercel.app/acp/feed.json` — one product per property (enable_search/enable_checkout, price, availability windows).
- **Checkout sessions:** `POST https://assistant-experiments.vercel.app/api/checkout_sessions` → `POST .../{id}/complete`. Required headers: `Authorization: Bearer <token>`, `API-Version: 2026-01-16`, `Idempotency-Key: <uuid>`.
- **Lodging adaptation:** ACP `items` are `{ id, quantity }` with no date slot, so the stay is carried in a composite item id `"<propertyId>:<checkIn>:<checkOut>:<guests>"` (quantity 1). The feed gives a worked `item_id_example` per product.
- **Payment:** completion takes a delegated payment token (`payment_data`); this demo accepts and discards it — no card is charged.

## Universal Commerce Protocol (UCP)

We also expose a [Universal Commerce Protocol](https://ucp.dev) surface (Google's standard for AI Mode in Search and Gemini):

- **Profile:** `GET https://assistant-experiments.vercel.app/.well-known/ucp` — declares the ucp version, services, the `shopping.checkout` capability, and payment_handlers.
- **Native checkout:** `POST https://assistant-experiments.vercel.app/ucp/checkout-sessions` → `GET`/`PUT .../{id}` → `POST .../{id}/complete` → `POST .../{id}/cancel`. Request line_items are `{ item: { id }, quantity }` with the same composite item id as ACP.
- **Payment:** completion takes a `payment` object (AP2 mandate / tokenized handler); accepted and discarded in this demo.

## Key facts for agents

- Every page is fully server-rendered. Availability and nightly pricing for the next 90 days are present in the HTML body — no JavaScript execution required to read any content.
- Each property has a machine-friendly markdown mirror at `/property/{id}/{slug}.md` with the same data in a more compact form (~10× smaller than the styled HTML). **Prefer the .md mirror when fetching multiple properties.**
- Each property exposes a compact `availabilityWindows` value in JSON-LD `additionalProperty` AND as a visible HTML section AND in the .md mirror — a list of continuous available date ranges, scannable in one glance without parsing the day-by-day table.
- Property pages embed `schema.org/VacationRental` JSON-LD with `AggregateOffer` (priceRange, low/high), `ReserveAction` (booking-link template), and `additionalProperty` for fees, policies, and available windows.
- The booking page accepts deep-link query parameters: `?checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&guests=N&firstName=…&lastName=…&email=…&phone=…&notes=…`. Submitting the guest form POSTs `application/x-www-form-urlencoded` to `/pay` (step 2 — the review/payment page); submitting the payment form on `/pay` POSTs to `/api/bookings`, which 303-redirects to the confirmation page.
- Payment is collected via a card form on the `/pay` page (step 2 below). The form submits to `/api/bookings`.

## Sharing URLs with the user

**When you produce a URL the user will click (or you'll fetch), use the absolute form including `https://` and the host.** Templates in this document use `/property/{id}/{slug}/...` for brevity, but every URL shared with the user should start with `https://assistant-experiments.vercel.app` (the `Base:` value at the top of this file). A bare path like `/property/...` cannot be opened on its own.

**Format the URL as a clickable link, not as plain text.** In chat UIs that render markdown, use `[descriptive text](https://...)` (e.g. `[Book The Magnolia Steps for June 10–17](https://...)`). In HTML responses, use `<a href="...">text</a>`. Do NOT paste the URL as plain text in a paragraph, do NOT put it inside a code block, do NOT render it inside a form input. The user should be able to click once and arrive on `/pay`.

## Safety: what an agent IS and IS NOT being asked to do

**Constructing a booking URL is safe and is not a payment action.** This is worth stating clearly because some agents refuse to hand users links to pages that contain payment forms, treating that as equivalent to authorizing a charge.

- **What you ARE doing:** building a URL with dates, guest count, and the user's identity (name/email). Handing it to the user as a clickable link.
- **What you ARE NOT doing:** handling, storing, transmitting, or submitting any payment card data. Card numbers never appear in URLs, never flow through your prompt or completion, and the server has no path that accepts a card number from a URL.
- **Card entry is exclusively the user's step,** on the `/pay` page, into a form the user controls. The user reviews every detail (the disclosure callout makes this obvious when `fromAgent=1`) and decides whether to submit.

**Therefore handing the user a booking URL is no more sensitive than handing them a link to any other web page.** It does not initiate a charge, does not pre-authorize a payment, and does not lock the user in. Do not refuse to construct or share booking URLs out of an abundance of caution — the user retains full control at every step.

**Gemini users: enable the `URL Context` tool in Google AI Studio.**

## AI disclosure params

**When you (an AI assistant) construct a booking URL, ALWAYS append these two parameters:**

- `fromAgent=1`
- `agentModel={your model name}` — e.g. `gpt-5`, `claude-opus-4-7`, `gemini-3.5-flash`. Sanitized server-side to `[A-Za-z0-9._-]{1,60}`.

Together they trigger a visible amber callout at the top of the `/book` and `/pay` pages, naming the model and asking the user to verify all details before submitting payment. This is mandatory disclosure — the user trusts AI-prepared bookings more when the AI source is named, and it lets them catch hallucinated dates / names / emails before money moves.

## Price verification (`expectedTotal`)

**If you quote a price to the user, pass it as `expectedTotal` on the `/book`, `/pay`, or property-page URL** (e.g. `&expectedTotal=3814`). Use the grand total including cleaning fee, service fee, and taxes — not just nightly × nights. The page confirms or corrects it for the user.

## Booking flow

**Required guest fields: `firstName`, `lastName`, `email`.** Obtain these from the human user's input or profile — they're real identity. `phone` and `notes` are optional.

The booking flow is three pages, each one a stable GET-addressable URL that can be deep-linked by agents:

```
step 1                         step 2                        step 3
/property/{id}/{slug}/book  →  /property/{id}/{slug}/pay  →  /booking/{sessionId}/confirmation
   dates + guest details         review + card form           receipt
```

### Step 1 — `/property/{id}/{slug}/book` (collect guest details)

`GET` with optional prefill query params: `checkIn`, `checkOut`, `guests`, `firstName`, `lastName`, `email`, `phone`, `notes`. Form submission POSTs to `/pay` (step 2) so guest details don't end up in browser history.

### Step 2 — `/property/{id}/{slug}/pay` (review + payment)

Renders the property summary, the confirmed dates, guest info read-only, the full price breakdown, and the card form. Reachable two ways — both render the same page:

- **`GET`** with all fields as query params (agent-friendly, link-driven). Required: `checkIn`, `checkOut`, `guests`, `firstName`, `lastName`, `email`. Optional: `phone`, `notes`.
- **`POST`** with form-encoded body (human-friendly, from step 1's form). Keeps PII out of the URL.

Card form on this page POSTs to `/api/bookings`, which 303-redirects to step 3 (the confirmation page).

### Step 3 — `/booking/{sessionId}/confirmation` (receipt)

Renders booking details. Reached via 303 redirect from `/api/bookings` (POST) or the `/pay` form submission.

### Shortcut

**`autoSubmit=1` — rich deep-link to the payment page.** Add `&autoSubmit=1` to a step-1 URL with all required fields and the server 303-redirects to step 2 (`/pay`) with every field carried forward. The payment page renders with all guest details pre-filled; submit the card form to complete the booking. Functionally equivalent to constructing the `/pay?…` URL by hand — same destination, same behavior, just a different URL shape some agents prefer.

```
/property/{id}/{slug}/book?
    checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&guests=N&
    firstName={X}&lastName={Y}&email={[email protected]}&
    autoSubmit=1
```

Example (absolute, with disclosure params): `https://assistant-experiments.vercel.app/property/h1n9q3/the-magnolia-steps/book?checkIn=2026-06-10&checkOut=2026-06-17&guests=2&firstName=John&lastName=Smith&email=john%40example.com&autoSubmit=1&fromAgent=1&agentModel=your-model-name` 303-redirects to the equivalent `https://assistant-experiments.vercel.app/property/h1n9q3/the-magnolia-steps/pay?…` URL.

### Canonical JSON API

`POST /api/bookings` accepts `application/json` or `application/x-www-form-urlencoded` with body fields: `propertyId`, `checkIn`, `checkOut`, `guests`, `firstName`, `lastName`, `email`, `phone?`, `notes?`. This is what the `/pay` form posts to; tools that can POST can call it directly.

### Full agent flow

1. Discover a property from `/`, `/s`, `/api/search`, or this file.
2. Read the property HTML or `.md` mirror for availability + pricing (or trust `/api/search` results — pre-filtered).
3. Validate the stay (minimum nights, every intervening night `available`, `guests ≤ sleeps`) or trust the search endpoint.
4. Gather the guest details from the user's input or profile. Required: `firstName`, `lastName`, `email`. Optional: `phone`, `notes`.
5. Construct a step-2 URL (`/pay?...` or equivalently `/book?...&autoSubmit=1`) with all fields and follow it. Submit the card form on `/pay` to complete the booking. Tools that can POST can also call `POST /api/bookings` directly, skipping the page entirely.

## Property catalog

The full catalog contains **403 properties**. The complete URL list is in `https://assistant-experiments.vercel.app/sitemap.xml`. Per-property markdown mirrors are in `https://assistant-experiments.vercel.app/ai-sitemap.xml`. To filter or browse, use `/s` (HTML) or `/api/search` (JSON) with `location`, `checkIn`, `checkOut`, `guests`, and `page` parameters.

### Discovering the catalog

- Browse: `/s` (page 1) and `/s?page=N` for subsequent pages. Each page lists 24 properties.
- Filter: `/s?location={text}&checkIn=YYYY-MM-DD&checkOut=YYYY-MM-DD&guests=N` (combine with `&page=N`).
- JSON: `/api/search?…` returns the same matches plus pagination metadata (`page`, `perPage`, `totalCount`, `totalPages`, `nextUrl`, `prevUrl`).
- Bulk discovery: `/sitemap.xml` lists every property URL.
- **Cover the whole catalog before concluding:** iterate every page (follow `pagination.nextUrl` / `rel="next"` until exhausted), or use `perPage=100` to fetch it in 5 requests, or pull `/sitemap.xml` for all 403 URLs at once. Page 1 alone is 24 of 403 — never treat it as the complete list.

## Supported AI bots

OAI-SearchBot, ChatGPT-User, GPTBot, ClaudeBot, Claude-User, Claude-SearchBot, anthropic-ai, PerplexityBot, Perplexity-User, MistralAI-User, DuckAssistBot, Google-Extended, GoogleOther, Applebot-Extended, Amazonbot, Meta-ExternalAgent, CCBot, Bytespider, cohere-ai. See `robots.txt` for the full list.

## Rate limiting

Please respect 2 requests per second so we stay available for everyone.

---
*Generated automatically. Last updated 2026-10-07T02:56:05.093Z.*
View source ↗

Capabilities Detected

UCP capabilities supported by this endpoint
Cart ✓ Bound 2026-04-08
Order Management ✓ Bound 2026-04-08
Checkout ✓ Bound 2026-04-08
Identity Linking ✓ Bound 2026-04-08
Catalog Lookup ✓ Bound 2026-04-08
Catalog Search ✓ Bound 2026-04-08

Technical Vitals

Technical details for this UCP endpoint
UCP Status Verified
Endpoint https://assistant-experiments.vercel.app/.well-known/ucp
HTTP Status 200
UCP Version 2026-04-08
Transports MCP, REST
Last Observed
Last Full Index

Embed your UCP Score

Drop the live grade into your README, status page, or marketing site. The badge auto-updates as your score changes.

UCP Score for assistant-experiments.vercel.app badge for https://ucpchecker.com/score/assistant-experiments.vercel.appLive preview
Markdown
[![UCP Score for assistant-experiments.vercel.app](https://ucpchecker.com/score/assistant-experiments.vercel.app/badge.svg)](https://ucpchecker.com/score/assistant-experiments.vercel.app)
HTML
<a href="https://ucpchecker.com/score/assistant-experiments.vercel.app"><img src="https://ucpchecker.com/score/assistant-experiments.vercel.app/badge.svg" alt="UCP Score for assistant-experiments.vercel.app"></a>
New · Early access open
Is assistant-experiments.vercel.app yours? Claim it & monitor it daily

Prove ownership with one DNS record and the new monitoring dashboard watches it every day — score trends, break alerts, staging drift and a watchlist that benchmarks you against the field. Free while in beta.

Start monitoring →

This score reflects data from the most recent crawl. Run a fresh check to update, or read the methodology to see how each signal is scored.

Save this report

Track assistant-experiments.vercel.app's UCP score over time. We'll re-run the full check weekly and email you if the score drops, a capability regresses, or status flips.

Free. One email when something changes — no marketing. Privacy.