Site Doctor Start free →

What you can ask your AI

Connect Site Doctor over MCP and ask your AI, in plain language, about any WordPress site you manage. It reads, cross-checks the evidence and answers — it never writes anything. Real, anonymized cases from live sites.

⚡ Agency or higher also writes the fix and leaves it one-click activatable

Security & compromise

I think my site was hacked — can you check it?

Read-only, it found a card skimmer, a backdoor with remote execution, tampered core jQuery and 3 rogue admins — and handed you the exact cleanup plan.

Is this alert real or a false positive?

It cross-checks the evidence: a «suspicious» 0-byte PHP file was a false positive, and gambling spam marked «fixed» was still injected, cloaked, in 3 spots.

The firewall is blocking my client who's legit.

It confirmed the false positive (bot score 0, legitimate admin URLs) and staged the whitelist for their IP.

How and when did the attacker get in?

It rebuilds the timeline from users and logs — and when the host already rotated the logs, it tells you instead of inventing an entry vector.

There are PHP files in my uploads folder — is it malware?

It reads them one by one: benign leftovers (a plugin's, core modules) apart from the genuinely dangerous ones, with proof for each.

Forms & leads

My form stopped sending leads to the CRM — why?

It got 100+ submissions a month but had no webhook, the license lacked the add-on and 2 snippets sat in draft — no rebuild needed, just the bridge.

Where is my form embedded?

It finds every page, shortcode and Elementor template it appears on — no manual hunting.

I have 3 form plugins — which is live and where does each send?

It inventories everything: which form is active, its recipients and webhooks (one to Salesforce, another to a CRM) — untangling the setup.

How much of what comes through the form is spam?

It reads the entries and gives you the real ratio (active vs Akismet spam) and which pages each comes from.

Performance & downtime

Why did my site go down with a 504?

Root cause: a cache-TTL change (28 days → 10 min) doubled the PHP renders and saturated the workers — not an attack, config.

My site is slow — can you fix it for me?

It measured real coverage (12% of CSS used, YouTube up front) and, being Agency, wrote the fix mu-plugin and left it one-click activatable.

⚡ Agency or higher
Why are my PHP workers pinned at 100%?

A surge of scrapers hitting uncacheable paths, no Redis, plus an old credential hammering the site — with the exact mitigation.

My site went down and I don't know why.

The auto-investigation gathers the fatals, 5xx, brute-force and recent changes on its own and infers the likely cause — before you ask.

What's bloating my database?

It found 587 MB of duplicate staging tables, a thousand+ revisions and a plugin's orphan tables — weighing on every request.

Cache, content & redirects

It serves old content even though I publish new changes.

It found three cache layers serving the old version (host edge, an eternal 304 and the TTL) and built purge-on-publish.

Where are these redirect chains coming from?

It re-traced 130 live redirects, split yours from an external layer and got yours 25/25 to a single hop.

They tell me my canonical points to staging.

It verified: production was clean (139/139 pages), the claim was the staging URL — it didn't accept the claim blindly.

I want to retire an old page without hurting SEO.

It sets up a genuine 410 Gone and removes it from the sitemap, no noindex or robots block — verified on staging.

Payments & subscriptions

Google/Apple Pay says «callback timed out».

Cause: a Stripe plugin 10.9.0 regression that hung the payment sheet — the fix was updating to 10.9.1, verified.

Do I have a double express-button conflict (Stripe + WooPayments)?

No — ruled out with evidence: only Stripe renders the button, the WooPayments wrappers were empty.

Customers with «upgrade despite active subscription».

An expiry/Stripe-sync bug (not the membership plugin) — 238 subscribers resynced, the flapping stopped, 0 errors.

Are all my Stripe subscriptions active?

It reconciled account by account: 458 with an active sub, 38 to triage — with the exact list to review.

A customer abroad can't complete checkout.

Not a bug: the store shipped US-only; an out-of-country address failed, a US one got «Free shipping» fine.

SEO & attribution

My paid leads land as «Direct» in the CRM.

A script erased utm_source on load — ~$2,500/week in ads losing attribution. Located, with the fix.

I want to A/B test my site without breaking deploys.

It installed the A/B testing via GTM (survives staging→prod pushes) with the goal tied to the form submit, verified.

Free sign-ups land in my paid email-marketing list.

A level-routing defect — corrected so free goes to the free list, verified in the config.

Which AI crawlers are hitting my site?

It re-enabled the LLM-crawler logger (it was off in prod) and verified it records — so you can see who scrapes.

Email

My store's emails haven't gone out for months.

The email service had no valid API key — thousands of sends failing since an exact date; new key, verified with zero failures.

Why do my emails land in spam?

It checks SPF / DKIM / DMARC alignment and the sending service, and tells you what's missing to reach the inbox.

Who does my form notify when someone submits?

It reads the form notification config: which email it goes to, the confirmation, and whether a CRM webhook is missing.

Speed & Core Web Vitals

Everything «jumps» while the page loads (huge CLS).

It measured a CLS of 1.95 — the logo with no dimensions and late-loading fonts. Being Agency, it wrote the mu-plugin with the preloads and aspect-ratio and left it one-click activatable → CLS 0.07.

⚡ Agency or higher
My PageSpeed is 51 on mobile and 98 on desktop.

The mobile hero image was a 337 KB JPG and the CDN was serving the desktop copy to phones. Lightweight WebP + per-device preload, one-click activatable.

⚡ Agency or higher
My hero looks heavy only on tablet.

The tablet version was a 252 KB JPG while the others were already WebP. It swapped it to WebP and purged the cache — one-click activatable.

⚡ Agency or higher
Which third-party scripts are slowing me down?

It measures them one by one — GTM 515 KB / 920 ms, Facebook, the CDN challenge — and tells you how much you gain by removing or deferring each.

Updates & maintenance

Can I move from PHP 7.4 to 8.4 without breaking the site?

It inventoried the plugins, the theme and even the code snippets stored in the database, and tells you what is and isn't compatible before you touch anything.

I have a plugin abandoned since 2020 — should I remove it?

It opened it up: all it left was a dead Analytics tag in the HTML — zero risk, but ready to remove.

Do my custom code snippets work on PHP 8.4?

It read every active snippet straight from the database and confirmed the code is modern and compatible.

Is any debug flag left on in production?

It found WP_DEBUG and WP_DEBUG_LOG set to true in wp-config — leaking errors and a growing log. It staged the change to false with a backup of the file.

⚡ Agency or higher
My debug.log is 181 MB — what's filling it?

A plugin was writing «Migrating…» on every request. It unhooked it and truncated the log in a one-time mu-plugin — one-click activatable.

⚡ Agency or higher

Odd bugs & compatibility

The scanner says my core is «modified» — was I hacked?

No: they were managed-host platform files (an auto_prepend and a checksum compared against the wrong version). Two false positives, with proof.

I suspect an ad injector on the front end and can't find it.

It saw the wp_head hooks that run on the front end (the ones an external scanner can't see) and determined it was a third-party runtime integration, not something planted in the database.

A blue box appears when I click items in a list.

Not a theme bug: it was the browser focus ring on each card's link. It handed you the exact CSS to soften it without losing accessibility.

My homepage is blank only on iPhone.

A third-party script loaded late and blocked rendering on iOS; moving it early into the <head> fixed it — verified on a real iPhone.

My robots.txt points to the sitemap with extra hops.

It caught 2 hops to the sitemap and staged the line fixed to 0 hops — and it warns you when the old view is just CDN cache, not the real file.

⚡ Agency or higher

From Agency up: the AI writes the fix — you activate it

On the read-only plans, Site Doctor detects the problem and hands you the exact fix to apply yourself. On Agency and above it goes one step further: the AI writes the fix as a mu-plugin and leaves it ready to activate with one click from your panel. You stay in control — nothing runs until you turn it on, it shows you exactly what it does first, and it auto-disables itself if it ever triggers a fatal. The connector still never writes to your site on its own.

How you tell the AI to do it

Just ask in plain language — the same way you ask it to diagnose. For example:

My site is slow — write me the fix and leave it ready to activate.
That plugin conflict from yesterday: prepare a mu-plugin fix I can turn on with one click.
Neutralize the xmlrpc pingback attack surface on this site and leave it one-click activatable.

🔒 You review it, you activate it, and you can roll it back anytime from the panel.

See it on your own sites

Free to start — no card. Install the read-only connector in two minutes and ask your AI anything.

Start free →