Connect your AI assistant (MCP)
Connect Claude, Claude Code, Cursor, Codex or ChatGPT to Loomaly. Twelve intent tools cover rankings, AI search, fixes and reports — all through chat.
Loomaly is an MCP server at https://loomaly.com/mcp (plugin 2.2.0, MCP 2.0). Connect an assistant once; from then on you work in chat. Loomaly never changes your website: the assistant changes your code (or drafts a task for a developer), you review it, and Loomaly re-checks the live page.
You: What's the top fix on example.com this week?
→ status · todo
say: Missing meta description on /products/* (1,200 pages). Top item carries fixPrompt.
next: fix in the repo (or send_to_dev), open a PR, then check target fix with the PR URL
You: PR https://github.com/acme/site/pull/42 — re-check.
→ check (target: fix, ref: PR URL)
say: Awaiting deploy — Loomaly will re-check on its own. Next status will announce.Account settings, billing, Google connect and connected assistants live under /account. There is no dashboard to drive day-to-day SEO work.
How every reply looks
Every tool result is wrapped the same way:
| Field | Meaning |
|---|---|
say | Plain-language answer for you. Assistants should relay this, not invent numbers. |
next | The next tool call (name + args), or null when you are done. |
errors | Recoverable problems: { error, say, recover }. Follow recover. |
handoff | A step only you can do in the browser: { url, say, resume } toward /account/.... |
Some results also include a text chart (markdown table and/or sparkline). Paid rankings and AI mentions only appear when your plan has data budget and you have fetched them — never invent them.
Connect your assistant
claude mcp add --transport http loomaly https://loomaly.com/mcpAdd --scope user for every project. Start Claude Code, run /mcp, pick loomaly and sign in in the browser.
Guest demo (no login)
Sandboxes that cannot complete OAuth can use the read-only demo endpoint https://loomaly.com/mcp/demo (no auth). It exposes only status and check, which run the same free site preview as /check/<host> (top issues, foundations, link suggestions). Rate-limited by IP and domain; private hosts are refused. Full account tools stay on https://loomaly.com/mcp with OAuth.
{
"mcpServers": {
"loomaly-demo": {
"url": "https://loomaly.com/mcp/demo"
}
}
}Signing in and permissions
- Your browser opens. Sign in (or create a free account) with the account that owns the sites.
- Check You will be sent to on the consent screen — local tools show
localhost. - Choose scopes. Reading findings is always on. Adding sites, scanning, re-checking after a fix, and Search Console read/write start ticked.
| Scope | Allows |
|---|---|
findings:read | status, todo, problem, focus, visibility, report |
findings:write | triage, set_goals, send_to_dev |
audit:run | add_site, check (including paid targets) |
gsc:read | visibility with view: google |
gsc:write | google (connect / verify / submit sitemap) |
Manage connections at /account/agents. Disconnect takes effect on the next call.
The twelve tools
| Tool | What it does |
|---|---|
status | Plan, usage, member role, sites and scan phase. Optional domain adds a site when the account is empty. Optional setRole (solo | ops | product | dev). |
add_site | Add a domain and start the first scan. Poll status until scan.phase is done or failed. |
todo | This week's plan and the rest of the queue. Top open item carries fixPrompt, evidence, url, and verify. view: plan (default), queue, links, or opportunities. |
problem | Optional detail: evidence and fix instructions for one finding (findingId), or list pages for a rule. |
triage | Actions: ignore, restore, or decide_link. Confirm fixes with check (target: fix), not triage. |
send_to_dev | Paste-ready task text for a developer. |
check | Re-check a fix (target: fix + PR ref), whole-site scan, preview URL, or paid rankings / ai / competitors / backlinks. Omit maxCost for an estimate; pass it to spend budget. |
visibility | Read-only Search Console (view: google) or stored paid views. Never spends budget. |
focus | Focus page for the week: brief, search numbers, open issues, change verdicts. |
set_goals | Brief, focus page, conversionValue, track lists, memberRole, or log a shipped change. |
google | connect, verify, or submit the sitemap. May return a handoff to authorize Google. |
report | weekly, compare, public (share link /r/<token>), pdf, or roi. |
IDs come from earlier results (siteId, findingId, …). With no site yet, status / todo return needsSite and point at add_site.
triage actions
ignore— needs a reason.restore— reopens an ignored finding.decide_link—acceptedordismissedfor a link suggestion id fromtodo(view: links).
Typical fix loop
Connect and add the site
status. If needsSite, call add_site with the domain. Poll status until the scan finishes.
This week's work
todo — the top open item already carries fixPrompt, evidence, url, and verify. Call problem only when you need more detail. Solo / dev: apply the fix in the repo. Ops / product: send_to_dev and paste the task.
Open a PR and re-check
Open a PR. Immediately check with target: fix and ref = PR URL. Loomaly waits briefly; if the page is unchanged it awaits deploy and re-checks on its own. The next status announces settled results.
Paid data: set_goals stores trackKeywords / competitors / aiPrompts → visibility reads stored data → check without maxCost estimates → with maxCost spends the monthly budget. Free is $0. See Plans and Roles.
Try this prompt
Use Loomaly to check example.com. Fix the top problem in this repo, open a PR, then check with target fix and the PR URL as ref.Troubleshooting
- Won't connect. Client must support remote Streamable HTTP + OAuth (not SSE-only).
- Missing permission. Reconnect at
/account/agentsand tick the scope. - No such site. Wrong ID, or you are not a member — call
statusagain. checkawaiting deploy. The live page has not changed yet; Loomaly re-checks on its own. Callstatuslater for the announcement.