Documentation
Working with MorusAI from an AI agent or your own code
MorusAI is a 24/7 AI lead-capture assistant and AI-ready website service for Canadian mortgage brokers and real estate professionals. This page lists every way software can read about or act on MorusAI: a public API, an MCP server, in-browser WebMCP tools, and machine-readable files. All of it is public and unauthenticated, exactly like the forms on this site.
Before you act for someone
Three actions below create real records: a consultation request reaches our team, a website score emails a report, and a member perk request tags a lead. Only perform them with the person's knowledge and their agreement to be contacted by email. Our privacy policy covers how their details are handled. The MCP and WebMCP tools enforce this with a required agreeToContact: true flag; the raw API trusts you to have asked.
Public API
Two JSON endpoints under /api/v1/, described in OpenAPI 3.1 at /openapi.json, with a JSON index at /api and an RFC 9727 catalog at /.well-known/api-catalog. Both are rate limited per client address. Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset and RateLimit-Policy headers, and a 429 adds Retry-After. Every error is JSON, { "error": "..." }, with status 400, 429 or 500; a wrong method gets a JSON 405 with an Allow header and an unknown path under /api/ a JSON 404.
Versioning and deprecation
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.
POST /api/v1/contact
Requests a free consultation or demo. Requires name and email; accepts phone, company, message and source. Limit: 60 requests per 10 minutes per address.
curl -X POST https://www.morusai.com/api/v1/contact \
-H "Content-Type: application/json" \
-d '{"name":"Priya Sharma","email":"priya@example.ca","message":"Team of five, demo next week","source":"API"}'POST /api/v1/score
Runs the free Website Grader on a public website and returns a 0 to 100 score, a letter grade, every check with evidence and a fix, and the top fixes across SEO, generative engine optimization (GEO) and AI crawler access (AIO). Requires url; accepts audience (mortgage or real-estate), name and email. When a valid email is given the full report is emailed to it. Our own grader form records a lead through /api/v1/contact first (source Website Grader); if you act for a person, do the same with their consent. Takes 15 to 60 seconds. Limit: 20 requests per 10 minutes per address.
curl -X POST https://www.morusai.com/api/v1/score \
-H "Content-Type: application/json" \
-d '{"url":"https://example.ca","audience":"mortgage","name":"Priya Sharma","email":"priya@example.ca"}'MCP server
A remote Model Context Protocol server at https://www.morusai.com/api/mcp (Streamable HTTP transport, JSON responses, stateless, no authentication). Point any MCP client at that URL. Its server card is at /.well-known/mcp/server-card.json. It exposes these tools:
| Tool | What it does | Creates a lead |
|---|---|---|
| get_pricing | Returns MorusAI plans with monthly and annual prices in CAD, who each plan is for, and the features included. Use when a visitor asks what MorusAI costs or which plan fits a solo mortgage broker or real estate agent, a team of 2 to 7, or a multi-office brokerage. Reads the same data as the pricing page; makes no changes. | No, read-only |
| request_consultation | Submits a request for a free consultation or demo with the MorusAI team on behalf of the visitor. Use when the visitor wants to book a demo, talk to the team, or get help choosing a plan. Requires the visitor's name and email, and their explicit agreement to be contacted (agreeToContact). Creates a lead; the team replies by email. | Yes, consent required |
| score_website | Runs the free MorusAI Website Grader on a public website and returns its 0-100 score, letter grade, and top fixes across SEO, generative engine optimization (GEO), and AI crawler access (AIO). Use when a mortgage or real estate professional asks how well their website ranks with Google or AI assistants. Requires the visitor's name and email: the full report is emailed to them, a lead is created, and the visitor must agree to be contacted (agreeToContact). Takes 15 to 60 seconds. | Yes, consent required |
| claim_member_perk | Submits a request to claim MorusAI member pricing for a member of the REALTORS® Association of Edmonton (RAE) or the Alberta Mortgage Brokers Association (AMBA). Use when a member of either association wants member pricing or a member consultation. Requires partner, name, email, and the visitor's explicit agreement to be contacted (agreeToContact). Creates a lead tagged with the partner; the team replies by email. | Yes, consent required |
curl -X POST https://www.morusai.com/api/mcp \
-H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'WebMCP tools in the browser
Every page carries, in its server-rendered HTML, the tool descriptors and a small script that registers them with the browser's WebMCP model context (document.modelContext, with navigator.modelContext as a fallback) when the browser supports it, so an agent driving a visitor's browser can act without filling forms. Each call is forwarded to the MCP server above, so consent, validation and limits are enforced in one place. The partner perk tool appears only on /rae and /amba, with the partner pre-filled. Browsers without the API are unaffected.
Machine-readable files
- /llms.txt: overview, when to use MorusAI, pricing, every page. /docs/llms.txt is the scoped index for this developer area.
- /.well-known/ard.json: Agentic Resource Discovery catalog listing the MCP server, the skill and the API.
- /.well-known/agent-skills/index.json: Agent Skills index pointing at the MorusAI skill file.
- Markdown twins: fetch /index.md or /pricing.md, or request
/or/pricingwithAccept: text/markdownor?mode=agent. Each opens with YAML frontmatter (title, description, canonical, last-updated) and carries a canonical Link header; the HTML pages advertise them with arel="alternate"link. Unknown paths return a Markdown 404. - HTTP Link headers on every page point at the sitemap, the OpenAPI description, these docs, the API catalog and the page's Markdown twin.
- /sitemap.xml and /robots.txt: all crawlers are allowed.
Limits and conduct
- Rate limits are per client address: 60 contact requests per 10 minutes, 20 website scores per 10 minutes, and for the MCP server 60 requests per 10 minutes of which at most 20 may create leads. The RateLimit headers on each response say how much room is left.
- Contact fields must be strings within their documented length limits; the score URL is capped at 2,048 characters.
- Website scores only scan public addresses; private networks are refused.
- Do not submit requests for people who have not agreed to be contacted. Abusive use is blocked.
- Questions: info@morusai.com.