v1.4.0
Added
- New server `aparser` — bridge to a self-hosted A-Parser instance via its HTTP API (7th server). v1 is synchronous and read-only: ping/status/proxies/parsers/parser_fields/get_preset, `aparser_serp_google`, `aparser_serp_yandex`, `aparser_suggest`, `aparser_request` (universal — any of ~150 parsers) and `aparser_bulk_request`. Proxy packs are read/verified/selected (never created); presets first-class; live-proxy preflight + human captcha/burned-proxy diagnostics. Verified against a live instance. Config: `APARSER_URL` + `APARSER_PASSWORD`.
- xmlriver: `xmlriver_suggest` (Google suggestions), `xmlriver_related_questions` (People Also Ask), Google geo-targeting (`location`/`country`) and full AI Overview in `xmlriver_serp` (`includeAIOverview`).
Changed / Fixed
- Repo-wide review across all 7 servers + shared (~70 findings): security (GSC path traversal, secret masking), error classification, in-flight cache dedup, date/timezone (MSK) validation, per-server logic extracted to modules and unit-tested (tests: ~110 → ~390).
- BREAKING (metrika, 3 tools): `bounceRate` in `metrika_landing_behavior`/`metrika_search_phrases`/`metrika_top_landings` is now a percent (0–100), consistent with all other metrika tools (was a 0–1 fraction).
Published to npm as `seo-tools-mcp-@1.4.0` (7 servers). Full details in CHANGELOG.