6 tools registered. Strongest in usefulness, weakest in human experience.
No agent run recorded yet.
{ name: "about" /* short, unique, verb-based */ }about, request_listing, surprise_me, share_on_x, share_on_linkedin{
name: "about",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}about, request_listing, surprise_me, share_on_x, share_on_linkedin<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="about" tooldescription="...">
<!-- the same action, as UI -->
</form>{
"name": "about",
"description": "Returns information about the WebMCP Directory: what it is, who built it, and where to learn more about the Model Context Protocol.",
"inputSchema": {
"type": "object",
"properties": {}
},
"annotations": {}
}record_unsupported_request: registered at 1265.899999999965ms// Register tools as soon as they're ready, not behind a deferred/async chunk.
document.modelContext.provideContext({ tools: [/* ... */] });share_on_x: declares no required list, so an agent cannot tell which parameters are mandatory; record_unsupported_request: description is 655 characters, over Chrome's 500-character guidance{
name: "share_on_x",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}about, request_listing, surprise_me, share_on_x, share_on_linkedin{
name: "about",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}request_listing: review, email; share_on_linkedin: post, user{ name: "request_listing", annotations: { untrustedContentHint: true } }document.modelContext.dispatchEvent(new Event("toolchange"));share_on_x: Free-text parameter `message` is forwarded to X (Twitter) as a tweet.; record_unsupported_request: Free-text parameters `request` and `interpreted_goal` are recorded verbatim.{
name: "share_on_x",
execute: async (args) => {
// Validate/sanitize args before acting on them.
if (!isValid(args)) throw new Error("invalid arguments");
/* ... */
}
}{ name: "about" /* short, unique, verb-based */ }share_on_linkedin: weakabout, request_listing, surprise_me, share_on_x, share_on_linkedin<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="about" tooldescription="...">
<!-- the same action, as UI -->
</form>obstruction: weak{}{
"request": "Show me the details of one of those results.",
"interpreted_goal": "The user wants to view details of a search result, but there is no search or detail-viewing tool available."
}{
"email": "user@example.com",
"site_url": "https://example.com"
}