27 tools registered. Strongest in trust, weakest in tool selection.
check_ai_crawler_access, validate_llms_txt, validate_a2a_agent_card, validate_webmcp_tool, check_mx_records// Make the tool's effect visible on the page the person is looking at:
// update the same UI your existing human flow uses when check_ai_crawler_access runs,
// so the person co-browsing sees what the agent just did.
execute: async (args, { signal }) => {
const result = await performAction(args, signal);
renderResultInPage(result); // the human-visible half of the same action
return result;
}{
"name": "check_ai_crawler_access",
"description": "Return a read-only RFC 9309 robots.txt access report for AI and search crawlers. Accepts robots.txt text or a public robots.txt URL plus an optional path. Includes merged matching groups, octet-normalized longest-match decisions, per-crawler evidence, transport status, crawler-registry provenance and policy snippets.",
"inputSchema": {
"additionalProperties": false,
"anyOf": [
{
"required": [
"url"
]
},
{
"required": [
"content"
]
}
],
"properties": {
"content": {
"description": "Pasted robots.txt content to validate locally, e.g. 'User-agent: GPTBot'.",
"type": "string"
},
"crawlers": {
"description": "Crawler tokens to evaluate as an array, e.g. ['GPTBot','Google-Extended'].",
"items": {
"type": "string"
},
"type": "array"
},
"path": {
"description": "Path to evaluate against robots.txt rules, e.g. '/' or '/tools/'.",
"type": "string"
},
"url": {
"description": "Robots.txt URL or bare domain to fetch, e.g. 'https://example.com/robots.txt'.",
"format": "uri",
"type": "string"
}
},
"required": [],
"type": "object"
},
"annotations": {
"readOnlyHint": true,
"untrustedContentHint": true
}
}check_ai_crawler_access, validate_llms_txt, validate_a2a_agent_card, validate_webmcp_tool, check_mx_records// Make the tool's effect visible on the page the person is looking at:
// update the same UI your existing human flow uses when check_ai_crawler_access runs,
// so the person co-browsing sees what the agent just did.
execute: async (args, { signal }) => {
const result = await performAction(args, signal);
renderResultInPage(result); // the human-visible half of the same action
return result;
}validate_llms_txt: 1 parameter description is over Chrome's 150-character guidance; validate_webmcp_tool: 1 parameter description is over Chrome's 150-character guidance; check_dns_records: 2 paramete{
name: "validate_llms_txt",
inputSchema: {
type: "object",
properties: {
query: { type: "string", description: "What to search for" }
},
required: ["query"]
}
}{ name: "decode_ssl_certificate" /* short, unique, verb-based */ }generate_tlsa_record: readOnlyHint=true// readOnlyHint must match what the tool actually does - drop it (or set false) on a tool that writes,
// and never pair readOnlyHint: true with consequentialHint: true. If the write is significant or
// hard to undo (a purchase, a booking, a payment), declare consequentialHint: true so the agent
// confirms with the person first.
{ name: "generate_tlsa_record", annotations: { readOnlyHint: false } }