12 tools registered. Strongest in shared experience, weakest in trust.
search_catalog: 1 parameter has no description (catalog); browse_store: description is 882 characters, over Chrome's 500-character guidance; browse_store: 2 parameter descriptions are over Chrome's 15{
name: "search_catalog",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}search_catalog: Description instructs agent on tool use and preferences; browse_store: Description instructs agent on tool use and preferences; get_product: Description instructs agent on tool use and preferences; show_variant: Description instructs agent on tool use and preferences{
name: "search_catalog",
// Metadata DESCRIBES the tool - it never addresses the agent reading it.
// Rewrite any name, description, title, or schema field description that
// instructs the agent (which tool to prefer, what to output, rules to
// ignore) so it states what the tool does and what it returns instead.
description: "Searches the catalog and returns matching items with prices."
}{
"name": "search_catalog",
"description": "Search the store catalog for products, collections, articles, and pages. Does NOT add anything to the cart; use add_to_cart for cart changes. If the user asks for a specific product variant, call get_product after search_catalog to get its variant ID for add_to_cart, or use show_variant to display it.",
"inputSchema": {
"type": "object",
"required": [
"catalog"
],
"properties": {
"catalog": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search query string."
},
"pagination": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max results per type (1-10). Defaults to 5.",
"default": 5,
"minimum": 1,
"maximum": 10
}
}
}
}
}
}
},
"annotations": {
"readOnlyHint": true,
"untrustedContentHint": true
}
}get_ucp_profile: registered at 1723ms// Register tools as soon as they're ready, not behind a deferred/async chunk.
document.modelContext.registerTool({ /* ... */ });search_catalog: 1 parameter has no description (catalog); browse_store: description is 882 characters, over Chrome's 500-character guidance; browse_store: 2 parameter descriptions are over Chrome's 15{
name: "search_catalog",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}{ name: "proceed_to_checkout" /* short, unique, verb-based */ }browse_store, get_product, show_variant{
name: "browse_store",
// Declare readOnlyHint: true on tools that truly have no side effects -
// that is the claim that lets an agent relax confirmation on reads.
// (false is the default, so declaring it adds no information.)
annotations: { readOnlyHint: true }
}manage_orders: user, customer{ name: "manage_orders", annotations: { untrustedContentHint: true } }cancel_cart// consequentialHint: true marks a significant or irreversible action (a purchase,
// a booking, a payment) so the agent confirms with the person before running it.
{ name: "cancel_cart", annotations: { consequentialHint: true } }search_catalog: Description instructs agent on tool use and preferences; browse_store: Description instructs agent on tool use and preferences; get_product: Description instructs agent on tool use and preferences; show_variant: Description instructs agent on tool use and preferences{
name: "search_catalog",
// Metadata DESCRIBES the tool - it never addresses the agent reading it.
// Rewrite any name, description, title, or schema field description that
// instructs the agent (which tool to prefer, what to output, rules to
// ignore) so it states what the tool does and what it returns instead.
description: "Searches the catalog and returns matching items with prices."
}{
"catalog": {
"query": "carry-on suitcase under 300 dollars"
}
}{
"catalog": {
"navigate": true,
"id": "{{steps.0.tool_results.catalog.products.0.id}}"
}
}{
"cart": {
"line_items": [
{
"item": {
"id": "{{steps.1.tool_results.catalog.product.variants.0.id}}"
},
"quantity": 2
}
]
}
}