{"serverInfo":{"name":"Crawlwise","version":"1.0.0"},"authentication":{"required":true,"schemes":["oauth2","bearer"]},"tools":[{"name":"audit_page","description":"Start a full page audit. Returns a job_id immediately. Poll with get_audit using that job_id until status is complete. Findings are grouped as priority / worth considering / not measured. Does NOT measure keyword ranks, backlinks, traffic, or Search Console data. Does NOT invent scores. Every action cites a real check id.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL."},"site_id":{"type":"string"}},"required":["url"]}},{"name":"get_audit","description":"Poll an audit started with audit_page. Pass the job_id. When status is running, call again. When complete, returns findings grouped as priority / worth considering / not measured. Does NOT start a new audit. Does NOT charge. Does NOT invent checks. An empty group means none, not that the site is perfect.","inputSchema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job_id from audit_page."},"audit_id":{"type":"string"}},"required":["job_id"]}},{"name":"check_ai_crawlers","description":"Fetch the URL as GPTBot, ClaudeBot and other AI crawlers and report allowed / blocked / challenged / not established. Does NOT measure whether a model would cite the page, brand mentions, or ranking in ChatGPT. A 200 is reachability, not visibility.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL."}},"required":["url"]}},{"name":"validate_schema","description":"Validate JSON-LD / schema.org markup against Rich Results eligibility. Does NOT submit anything to Google. Does NOT measure whether rich results actually appear in search. FAQPage is reported as not a rich-result opportunity.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL."},"json":{"type":"string"}}}},{"name":"check_vitals","description":"Core Web Vitals via PageSpeed Insights for one URL and one strategy. Does NOT measure field (CrUX) data unless PageSpeed returns it. Does NOT audit the rest of the site. A missing lab metric is not_measured, never 0.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL."},"strategy":{"type":"string","enum":["mobile","desktop"]}},"required":["url"]}},{"name":"crawl_site","description":"Start a multi-page crawl of a site you own. Returns a crawl id immediately. Does NOT run keyword or rank checks. Does NOT crawl the whole internet; it stops at the plan page cap. Orphans are not_measured when the crawl was capped.","inputSchema":{"type":"object","properties":{"site_id":{"type":"string"},"pages":{"type":"number"},"allow_subdomains":{"type":"boolean"}},"required":["site_id"]}},{"name":"get_crawl_issues","description":"Cross-page findings from a finished crawl: duplicate titles, redirect chains, broken internal links, orphans. Does NOT invent issues the crawl did not observe. An empty list means none were found, not that the site is perfect.","inputSchema":{"type":"object","properties":{"crawl_id":{"type":"string"}},"required":["crawl_id"]}},{"name":"get_internal_link_suggestions","description":"Internal-link suggestions from a finished crawl. Returns an empty list when there is nothing real to suggest. Does NOT generate links to pages the crawl never saw. Does NOT rewrite your copy.","inputSchema":{"type":"object","properties":{"crawl_id":{"type":"string"}},"required":["crawl_id"]}},{"name":"generate_schema","description":"Generate JSON-LD for a schema.org type from the fields you supply. Does NOT fetch the live page. Does NOT validate eligibility; use validate_schema for that.","inputSchema":{"type":"object","properties":{"kind":{"type":"string"},"fields":{"type":"object"}},"required":["kind"]}},{"name":"generate_meta_tags","description":"Generate HTML meta tags from the fields you supply. Does NOT fetch the live page. Does NOT check uniqueness across the site.","inputSchema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"canonical":{"type":"string"}}}},{"name":"generate_robots_txt","description":"Generate a robots.txt from rules you supply. Does NOT fetch the live robots.txt. Does NOT prove crawlers will honour it.","inputSchema":{"type":"object","properties":{"rules":{"type":"array"},"sitemaps":{"type":"array","items":{"type":"string"}}}}},{"name":"explain_finding","description":"Full detail for one check id from an audit job or report. Does NOT add advice that is not already on that check. If the check is not_measured, that is the answer.","inputSchema":{"type":"object","properties":{"audit_id":{"type":"string"},"check_id":{"type":"string"}},"required":["audit_id","check_id"]}},{"name":"estimate_cost","description":"What an operation would cost this account, in credits. Never charges. Never creates a job. Does NOT reserve credits.","inputSchema":{"type":"object","properties":{"operation":{"type":"string"},"units":{"type":"number"},"url":{"type":"string","description":"Public http(s) URL."}},"required":["operation"]}},{"name":"list_sites","description":"List sites on this account. Does NOT include other users. Does NOT verify domains as a side effect.","inputSchema":{"type":"object","properties":{"include_archived":{"type":"boolean"}}}},{"name":"get_credits","description":"Current credit balance and recent spend. Does NOT change the balance. Does NOT show other accounts.","inputSchema":{"type":"object","properties":{}}}],"resources":[],"prompts":[]}