7 tools registered. Strongest in WebMCP use, weakest in human experience.
get_pricing, list_curriculum, get_course_summary, get_enrollment_link<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="get_pricing" tooldescription="...">
<!-- the same action, as UI -->
</form>{
"name": "get_pricing",
"description": "Current ShipReal plans and prices for the visitor's billing region, read from the live pricing table on this page.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"untrustedContentHint": false,
"title": "Get pricing"
}
}// The browser fires toolchange itself on register/unregister - never dispatch it by hand.
// Retire stale tools via the registration AbortSignal so agents see a coherent registry.
var controller = new AbortController();
document.modelContext.registerTool(tool, { signal: controller.signal });
// later, when the tool no longer applies:
controller.abort();start_checkout: weak; start_seat_checkout: weakget_pricing, list_curriculum, get_course_summary, get_enrollment_link<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="get_pricing" tooldescription="...">
<!-- the same action, as UI -->
</form>{}{}{}