Result cards

Chloe's search, hotel, rates, comparison and booking-review results are drawn as interactive cards inside the assistant. The cards follow the MCP Apps standard (the io.modelcontextprotocol/ui extension).

Which assistants draw them

Assistant Cards
Claude (web, desktop, mobile) Yes
ChatGPT Yes
Dyme's website chat Yes
Meta Muse and other assistants No. Answers are text, and hotel and flight answers end with a link to a page that shows the same results as cards.

How they work

  • A tool that draws a card names it in _meta.ui.resourceUri (a ui://dyme/… address, mirrored to _meta["ui/resourceUri"] and ChatGPT's openai/outputTemplate). The card field in tools.json gives each one.
  • The card is HTML served as an MCP resource with the type text/html;profile=mcp-app. The assistant runs it in a sandboxed frame and passes it the tool's result.
  • A card can call a small set of tools itself, for photos, rooms, the results map, a comparison's progress and Chloe's take as it loads. These are marked "visibility": ["app"], listed under "Used by the cards" in the tool reference, and the model never sees them.
  • A card uses the assistant's own fonts and colours and adds Dyme's accent.
  • Links from a card open in a new browser tab: the hotel's page, a booking link, or another site in a price comparison.

What the model sees

The assistant's model reads each tool's text result and structured result, not the card. Tool results tell the model to give a short judgement and leave the list to the card, so the answer does not repeat every option.

Card addresses change

Assistants keep a copy of a card by its address. When a card changes, Dyme publishes it at a new address and keeps every older address working, so an older conversation still shows its cards.