{"schema_version":"2026-09-10","name":"SeoRanking.us","description":"Your customers are searching nearby. SeoRanking.us helps them find you first.","homepage":"https://seoranking.us","documentation":"https://seoranking.us/services/webmcp","contact":"hello@seoranking.us","notice":"WebMCP is evolving technology and support across AI products is partial and changing. This surface is deliberately small: it exposes only information already published on public pages, plus one confirmation-gated way to request an audit. Nothing here affects search rankings or AI citations, and no compatibility with any particular AI product is claimed.","privacy_policy":"https://seoranking.us/privacy-policy","tools":[{"name":"list_disciplines","title":"List visibility disciplines","description":"Returns the four visibility disciplines this business works in — SEO, AEO, GEO and WebMCP — with a plain-language definition, the stated limits of each, and the canonical page URL.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/disciplines","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{},"output":{"disciplines[].slug":"Stable identifier, one of seo, aeo, geo, webmcp.","disciplines[].label":"Short name, e.g. \"AEO\".","disciplines[].expansion":"What the acronym stands for.","disciplines[].definition":"Self-contained definition safe to quote.","disciplines[].limits":"What this discipline cannot promise. Quote this alongside the definition.","disciplines[].url":"Canonical page URL."},"errors":{"rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"list_services","title":"List local SEO services","description":"Returns the individual local SEO services offered, each with a direct answer describing what it is, the discipline it belongs to, and its canonical page URL.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/services","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{"discipline":"Optional. Filter to one of seo, aeo, geo, webmcp."},"output":{"services[].slug":"Stable identifier.","services[].name":"Service name.","services[].summary":"Self-contained description safe to quote.","services[].discipline":"The discipline this service belongs to.","services[].url":"Canonical page URL."},"errors":{"invalid_input":"invalid_input — one or more inputs failed validation; see the errors object.","rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"list_cities","title":"List supported cities","description":"Returns the cities with a dedicated local SEO hub on this site. Absence from this list does not mean the business is not served — it means no city-specific content has been published for that area yet.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/cities","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{},"output":{"cities[].slug":"Stable identifier and subdomain label.","cities[].name":"City name.","cities[].state":"Two-letter state code.","cities[].url":"City hub URL on its own subdomain.","cities[].industries":"Industry slugs with published content for this city.","coverage_note":"Plain-language statement of what this list does and does not mean."},"errors":{"rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"list_industries","title":"List supported business types","description":"Returns the business types with published local SEO content, and which cities carry a page for each.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/industries","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{},"output":{"industries[].slug":"Stable identifier.","industries[].name":"Business type name.","industries[].cities":"City slugs with a published page for this business type."},"errors":{"rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"search_faqs","title":"Search published FAQs","description":"Searches every published question and answer on the site — general, per-discipline, and per-service — and returns matches with the page each answer is published on. Answers are returned verbatim so they can be quoted with attribution.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/faqs","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{"q":"Optional. Free-text query, up to 200 characters. Omit to return every published FAQ.","limit":"Optional. Maximum results, 1 to 50. Defaults to 20."},"output":{"results[].question":"The question as published.","results[].answer":"The answer as published, verbatim.","results[].source":"Canonical URL of the page the answer appears on.","results[].topic":"Where the answer belongs: general, discipline, or service."},"errors":{"invalid_input":"invalid_input — one or more inputs failed validation; see the errors object.","rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"search_diy_resources","title":"Search DIY SEO resources","description":"Searches the published DIY SEO kits in the store and returns name, summary, public price, and canonical URL. Only kits on sale to the general public are included.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/diy-resources","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{"q":"Optional. Free-text query, up to 200 characters.","limit":"Optional. Maximum results, 1 to 50. Defaults to 20."},"output":{"results[].slug":"Stable identifier.","results[].name":"Kit name.","results[].summary":"Short description.","results[].price":"Current public price as a decimal string.","results[].currency":"ISO currency code.","results[].url":"Canonical product page URL."},"errors":{"invalid_input":"invalid_input — one or more inputs failed validation; see the errors object.","rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"get_organization","title":"Get verified business information","description":"Returns the business facts this organisation publishes about itself: name, contact details, what it does, and where its authoritative pages are. Fields the business has not verified are omitted rather than guessed, so a missing field means unknown, never zero or empty.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/organization","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{},"output":{"name":"Brand name.","description":"One-sentence description.","contact_name":"Named person who handles enquiries.","telephone":"Phone number in E.164 form.","email":"Contact email address.","url":"Canonical site URL.","pages":"Map of key page names to canonical URLs.","compliance":"Statements about what this business will not do."},"errors":{"rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"describe_ai_visibility_audit","title":"Describe the AI Visibility Audit","description":"Returns what the AI Visibility Audit examines, grouped by area, plus the inputs the request form needs. Use this before calling request_ai_visibility_audit so the user can be told what they are asking for.","method":"GET","endpoint":"https://seoranking.us/webmcp/v1/ai-visibility-audit","permission":"public","side_effects":false,"rate_limit":"60/minute","input":{},"output":{"groups[].group":"Area of the audit.","groups[].items[].name":"Individual check.","groups[].items[].text":"What that check actually looks at.","cost":"What the audit costs.","request_url":"Human-facing page where the same request can be made."},"errors":{"rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after."}},{"name":"request_ai_visibility_audit","title":"Request an AI Visibility Audit","description":"Submits a request for an AI Visibility Audit and creates a lead record, exactly as the public form does. State-changing: the caller must set confirmed to true, which must only be sent after the person has seen the details and agreed to send them.","method":"POST","endpoint":"https://seoranking.us/webmcp/v1/ai-visibility-audit","permission":"confirmation-required","side_effects":true,"rate_limit":"5/minute","input":{"confirmed":"Required, must be true. Explicit confirmation from the person the request is for.","name":"Required. Contact name.","business_name":"Required. Business name.","website":"Required. Full URL of the website to review.","email":"Required. Contact email address.","phone":"Optional. Contact phone number.","city":"Optional. Primary city served.","business_type":"Optional. Type of business.","visibility_concern":"Optional. The main visibility problem, up to 1000 characters."},"output":{"status":"Always \"received\" on success.","reference":"Reference for this request, quotable back to the business.","next_step":"Plain-language description of what happens next."},"errors":{"confirmation_required":"confirmation_required — confirmed was not true. Ask the person to confirm, then retry.","invalid_input":"invalid_input — one or more inputs failed validation; see the errors object.","rate_limited":"rate_limited — too many requests; retry after the seconds given in retry_after.","csrf_token_mismatch":"csrf_token_mismatch — this capability is session protected. It is callable by an agent running inside the visitor's browser session; a server-side caller should send the person to the request page instead."}}]}