10 tools registered. Strongest in WebMCP use, weakest in usefulness.
{ name: "scan_images_c2pa" /* short, unique, verb-based */ }scan_images_c2pa, inspect_image_c2pa, list_models, estimate_credit_cost, search_articles{
name: "scan_images_c2pa",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}scan_images_c2pa, inspect_image_c2pa, list_models, estimate_credit_cost, search_articles<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="scan_images_c2pa" tooldescription="...">
<!-- the same action, as UI -->
</form>{
"name": "scan_images_c2pa",
"description": "Scan every <img> on the current page for C2PA Content Credentials (content provenance metadata) and return a per-image summary: whether a manifest is present, the claim generator (the tool that produced or edited the image), the title, and the signer name. Use this to find which images on a page carry provenance data. Note: provenance is decoded but NOT cryptographically verified.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25,
"description": "Maximum number of images to fetch and scan (default 25, max 100)."
}
},
"required": []
},
"annotations": {}
}list_models: declares no required list, so an agent cannot tell which parameters are mandatory; list_generations: declares no required list, so an agent cannot tell which parameters are mandatory{
name: "list_models",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}scan_images_c2pa, inspect_image_c2pa, list_models, estimate_credit_cost, search_articles{
name: "scan_images_c2pa",
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true }
}document.modelContext.dispatchEvent(new Event("toolchange"));inspect_image_c2pa: CSS selector or URL fetches third-party content; get_article: Fetches third-party content by slug; generate_video: image_url fetches third-party content{
name: "inspect_image_c2pa",
execute: async (args) => {
// Validate/sanitize args before acting on them.
if (!isValid(args)) throw new Error("invalid arguments");
/* ... */
}
}{ name: "scan_images_c2pa" /* short, unique, verb-based */ }scan_images_c2pa, inspect_image_c2pa, list_models, estimate_credit_cost, search_articles<!-- Give the tool a visible counterpart: a declarative form is one the person can see and use too. -->
<form toolname="scan_images_c2pa" tooldescription="...">
<!-- the same action, as UI -->
</form>{}{}{}