Tool tree
gradeNot graded
audit_websiteAction
Audit a website for SEO and GEO (AI-search) readiness. Fetches the page server-side, measures load speed, structured data, meta tags, mobile-friendliness, headings, and content, then adds a results card to the on-screen workspace. Use this first for any site you want to analyze.
View tool JSON
{
"name": "audit_website",
"kind": "act",
"impl": "imperative",
"description": "Audit a website for SEO and GEO (AI-search) readiness. Fetches the page server-side, measures load speed, structured data, meta tags, mobile-friendliness, headings, and content, then adds a results card to the on-screen workspace. Use this first for any site you want to analyze.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to audit, e.g. \"example-bakery.com\" or \"https://example.com\"."
},
"businessName": {
"type": "string",
"description": "Optional business name, used to personalize the JSON-LD fix snippet, e.g. \"Example Bakery\"."
}
},
"required": [
"url"
]
}
}check_schemaAnswer
Inspect a site's structured data (JSON-LD / schema.org markup) in detail — how many blocks, which @types, and whether any are malformed. Structured data is what lets AI assistants read a business's services, hours, and location. Audits the site first if it isn't already in the workspace.
View tool JSON
{
"name": "check_schema",
"kind": "answer",
"impl": "imperative",
"description": "Inspect a site's structured data (JSON-LD / schema.org markup) in detail — how many blocks, which @types, and whether any are malformed. Structured data is what lets AI assistants read a business's services, hours, and location. Audits the site first if it isn't already in the workspace.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to inspect for structured data."
}
},
"required": [
"url"
]
}
}check_webmcpAnswer
Check whether a site is WebMCP-ready — i.e. whether it declares its own actions (document.modelContext.registerTool, or the zero-JS <form toolname=…> on-ramp) so a visitor's AI agent can ACT on it, not just read it. Reports the site's rung on the agent-reachability ladder and how confident the check is (a static server-fetch can't run JS that registers tools at runtime, so it says so honestly). Audits the site first if needed.
View tool JSON
{
"name": "check_webmcp",
"kind": "answer",
"impl": "imperative",
"description": "Check whether a site is WebMCP-ready — i.e. whether it declares its own actions (document.modelContext.registerTool, or the zero-JS <form toolname=…> on-ramp) so a visitor's AI agent can ACT on it, not just read it. Reports the site's rung on the agent-reachability ladder and how confident the check is (a static server-fetch can't run JS that registers tools at runtime, so it says so honestly). Audits the site first if needed.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to check for WebMCP readiness."
}
},
"required": [
"url"
]
}
}score_geoAction
Return the GEO-readiness score (0–100) and tier for a site — how ready it is to be read and cited by AI search engines like ChatGPT, Perplexity, and Gemini. Audits the site first if needed.
View tool JSON
{
"name": "score_geo",
"kind": "act",
"impl": "imperative",
"description": "Return the GEO-readiness score (0–100) and tier for a site — how ready it is to be read and cited by AI search engines like ChatGPT, Perplexity, and Gemini. Audits the site first if needed.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to score."
}
},
"required": [
"url"
]
}
}suggest_fixesAction
Return a prioritized, actionable fix list for a site, including ready-to-paste JSON-LD structured data where relevant. Every suggestion traces to a measured finding — nothing is invented. Audits the site first if needed.
View tool JSON
{
"name": "suggest_fixes",
"kind": "act",
"impl": "imperative",
"description": "Return a prioritized, actionable fix list for a site, including ready-to-paste JSON-LD structured data where relevant. Every suggestion traces to a measured finding — nothing is invented. Audits the site first if needed.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to generate fixes for."
},
"businessName": {
"type": "string",
"description": "Optional business name to personalize the JSON-LD snippet."
}
},
"required": [
"url"
]
}
}compare_sitesAction
Audit and compare two or more websites side by side (e.g. your site vs competitors) and rank them by GEO-readiness. Great for 'how do I stack up' and for finding the one thing competitors do that you don't. Adds every site to the workspace.
View tool JSON
{
"name": "compare_sites",
"kind": "act",
"impl": "imperative",
"description": "Audit and compare two or more websites side by side (e.g. your site vs competitors) and rank them by GEO-readiness. Great for 'how do I stack up' and for finding the one thing competitors do that you don't. Adds every site to the workspace.",
"inputSchema": {
"type": "object",
"properties": {
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Two or more websites to compare, e.g. [\"mysite.com\", \"competitor1.com\", \"competitor2.com\"]."
}
},
"required": [
"urls"
]
}
}scan_marketAction
Audit an entire local market at once and rank every business by GEO-readiness. Best when YOU (the agent) supply the competitor URLs you already know — you know a business's real competitors better than any directory does; just pass them in `urls`. As a fallback for physical businesses, a plain-language query like 'day spa in Santa Monica' auto-discovers them via OpenStreetMap. This does what a browser can't — fetch and measure dozens of sites server-side in one call. Optionally pass a target site to get a gap analysis vs. the market leaders.
View tool JSON
{
"name": "scan_market",
"kind": "act",
"impl": "imperative",
"description": "Audit an entire local market at once and rank every business by GEO-readiness. Best when YOU (the agent) supply the competitor URLs you already know — you know a business's real competitors better than any directory does; just pass them in `urls`. As a fallback for physical businesses, a plain-language query like 'day spa in Santa Monica' auto-discovers them via OpenStreetMap. This does what a browser can't — fetch and measure dozens of sites server-side in one call. Optionally pass a target site to get a gap analysis vs. the market leaders.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A market to scan, e.g. \"hair salon in Austin\" or \"dentist in Miami\". Auto-discovers local businesses with websites."
},
"urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit list of competitor URLs to scan instead of (or in addition to) a query."
},
"target": {
"type": "string",
"description": "Optional: your own site, to get a gap analysis vs. the market leaders."
}
},
"required": []
}
}verify_journeyAction
Act as an 'agent mystery shopper': check whether a visitor's AI agent could actually complete a key task on a site — book, quote, buy, or contact — and report exactly where it would get stuck. Reports the best path an agent could take (a WebMCP tool, a form, a booking widget, a contact link) or says plainly that the agent is blocked. A static reachability check of the page's HTML, not a live click-through.
View tool JSON
{
"name": "verify_journey",
"kind": "act",
"impl": "imperative",
"description": "Act as an 'agent mystery shopper': check whether a visitor's AI agent could actually complete a key task on a site — book, quote, buy, or contact — and report exactly where it would get stuck. Reports the best path an agent could take (a WebMCP tool, a form, a booking widget, a contact link) or says plainly that the agent is blocked. A static reachability check of the page's HTML, not a live click-through.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The site to test."
},
"goal": {
"type": "string",
"enum": [
"book",
"quote",
"buy",
"contact"
],
"description": "The task to attempt, e.g. 'book' an appointment or 'buy' a product."
}
},
"required": [
"url",
"goal"
]
}
}generate_fixesAction
Generate ready-to-ship fixes for a site: a complete JSON-LD structured-data block and an optimized <title> + meta description, tailored to the site's real content. This is creation, not just advice — the output is copy-paste ready. Adds the generated kit to the site's workspace card. Audits the site first if needed.
View tool JSON
{
"name": "generate_fixes",
"kind": "act",
"impl": "imperative",
"description": "Generate ready-to-ship fixes for a site: a complete JSON-LD structured-data block and an optimized <title> + meta description, tailored to the site's real content. This is creation, not just advice — the output is copy-paste ready. Adds the generated kit to the site's workspace card. Audits the site first if needed.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to generate fixes for."
}
},
"required": [
"url"
]
}
}preview_impactAction
Show the projected GEO-readiness score if the generated fixes were applied — the current score vs. the score after fixing structured data and meta tags. Turns an audit into a repair with a measurable payoff. Generates fixes first if needed.
View tool JSON
{
"name": "preview_impact",
"kind": "act",
"impl": "imperative",
"description": "Show the projected GEO-readiness score if the generated fixes were applied — the current score vs. the score after fixing structured data and meta tags. Turns an audit into a repair with a measurable payoff. Generates fixes first if needed.",
"inputSchema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The website to preview impact for."
}
},
"required": [
"url"
]
}
}