{"name":"MorusAI public API","version":"v1","description":"Public, unauthenticated endpoints behind the forms on morusai.com. They create real records: only call them for a person who has agreed to be contacted.","docs":"https://www.morusai.com/docs","openapi":"https://www.morusai.com/openapi.json","apiCatalog":"https://www.morusai.com/.well-known/api-catalog","mcp":{"endpoint":"https://www.morusai.com/api/mcp","serverCard":"https://www.morusai.com/.well-known/mcp/server-card.json"},"endpoints":[{"method":"POST","path":"/api/v1/contact","alias":"/api/contact","summary":"Request a free consultation or demo (name and email required). Creates a lead.","rateLimit":{"limit":60,"windowSeconds":600},"url":"https://www.morusai.com/api/v1/contact"},{"method":"POST","path":"/api/v1/score","alias":"/api/score","summary":"Score a public website for SEO, GEO and AI readiness; emails the report when a valid email is given.","rateLimit":{"limit":20,"windowSeconds":600},"url":"https://www.morusai.com/api/v1/score"}],"errors":"Every error is JSON: { \"error\": \"<message>\" } with status 400, 404, 405, 413, 429 or 500.","rateLimitHeaders":"RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, RateLimit-Policy on every response; Retry-After on 429.","versioning":"The current API version is v1, served under /api/v1/. The unversioned paths (/api/contact, /api/score) are permanent aliases of v1. Any breaking change will ship as a new version under its own path; the previous version then keeps running for at least 90 days and its responses carry Deprecation and Sunset headers (RFC 9745 and RFC 8594) naming the retirement date. Additive changes (new optional fields or endpoints) are not breaking and need no new version.","privacy":"https://www.morusai.com/privacy","terms":"https://www.morusai.com/terms"}