POST /api/v2/murph/chat response always carries the assistant’s text
answer. On turns where Murph runs a tool that has a canonical interactive
surface, the response also carries a structured rendering artifact. MCPUI
hosts (the in-product Murph UI, and external hosts such as Claude or ChatGPT)
render that artifact instead of reconstructing the surface from the text.
Each artifact field is optional and nullable. A client that does not render
MCPUI can ignore every artifact and show the text
answer alone — the answer
is always self-contained.How to render an artifact
Every artifact names the MCP App that renders it and the data to hand it:- Load the MCP App at the artifact’s
resourceUri. - Pass the artifact’s
dataobject to the app as the tool result’sstructuredContent. The app routes ondata.endpointto the namedview.
discoveryMcpui
Emitted on a successful discover_products tool call. Renders the product
discovery surface — a browsable, selectable list of the discovered products
grouped by storefront, with per-product brief-relevance reasoning.
| Field | Type | Notes |
|---|---|---|
kind | "discover-products" | Identifies the artifact. |
resourceUri | "ui://agentic-api/api-call/mcp-app.html" | The MCP App that renders it. |
view | "discover-products" | The view the app routes to. |
canonicalSurface | true | The artifact is the canonical surface for this result; do not rebuild it from the text answer. |
discoveryId | string | The discovery session id, when present. Lets the widget re-fetch products (GET /api/v2/buyer/discovery/{discoveryId}/products) so it can self-hydrate even if data was truncated for size. |
data | object | The discover_products response envelope (success, status, endpoint, method, data). Hand this to the app as structuredContent. |
answer is a concise orientation
(totals, price range, any recommended plans) plus next steps — it deliberately
does not re-list every product, because the widget already shows the full,
selectable set.
Other rendering artifacts
The chat response uses the same pattern for other canonical surfaces:| Field | Emitted on | resourceUri | view |
|---|---|---|---|
creativeMcpui | a successful creative-session call | ui://agentic-api/api-call/mcp-app.html | creative-iteration |
inventoryMcpui | a seller inventory-selector / capabilities call | ui://agentic-api/inventory-selector/mcp-app.html | inventory-selector |
mcpAppWidget | an open_<widget> directive (e.g. a seller setup or credential form) | the named widget’s ui://… resource | — |
kind, resourceUri, canonicalSurface, and a data payload to
hand the app as structuredContent; creativeMcpui additionally carries a
refresh directive describing the tool call that reloads the surface, and
inventoryMcpui carries the esaId and the initial selector filters.
Related
Conversation scope
Bind a Murph conversation to your account or a single advertiser.
Ask Murph
How Murph works as the in-product assistant.