SEO tables
Title and description lengths, canonical, robots meta, H1–H3 outline, word count, internal and external links, images without alt, JSON-LD blocks and types. Measured on the HTML you serve — never estimated.
free read · /api/free-read
Open source · Apache-2.0 · MCP
GTM Growth connects GA4, Google Tag Manager, Search Console and AI-search readiness in one MCP server. Start with a free read of your address; get the full audit, the fixes and the measurement plan when you want them done.
No signup. The first read scores your URL instantly, then renders SEO, GA4, Search Console and sitemap insights.
Example of a full report — opendpe.net, 71/100 → · Download the PDF (50 kB)
One public audit, re-runnable — opendpe.net, 2 Nov 2026
Free read
Free visual sitemap
Pages, depth, lastmod coverage and section distribution — measured from the XML sitemap, never guessed.
Visual language adapted from SlickMap CSS v2 by Matt Everson / Astuteo.
robots.txt, per bot and tierllms.txt presence, structure and sitemap drift/.well-known/ai.txt, /ai/*.json)Free tools
The free read measures your page, its robots.txt and its sitemap, then renders SEO, GA4, Search Console and visual sitemap data. No account, no mail client.
Title and description lengths, canonical, robots meta, H1–H3 outline, word count, internal and external links, images without alt, JSON-LD blocks and types. Measured on the HTML you serve — never estimated.
free read · /api/free-read
Measurement IDs, dead Universal Analytics tags, container count, duplicated loaders, dataLayer and consent mode — everything that decides whether the sessions you report actually exist.
free read · /api/free-read
Verification tag, robots.txt directives, sitemap coverage and lastmod share, indexability, canonical host — what Google needs before it can index the page at all.
free read · /api/free-read
A SlickMap-style view of URLs declared in the XML sitemap, with page count, hierarchy depth, lastmod coverage and section distribution. It reads the sitemap; it does not invent traffic.
free read · sitemap analytics
Sessions and clicks need a connected property. Until one is connected, those two reports are labelled sample — nothing here is estimated silently.
The toolkit
Read-only by default, deterministic, covered by tests. Every answer arrives with the evidence behind it — including when the answer is no.
Score a page 0–100 across eight categories — robots, llms.txt, schema, meta, content, brand, signals, discovery — with the fix order computed from recoverable points.
geo_audit
A second score that asks whether a passage would be quoted: statistics, quotations, structure, question headings, answer-first writing, authorship, freshness.
geo_citability
Build the file from your sitemap, then catch drift after every deploy: links that left the sitemap, pages never added, and how many links still resolve.
geo_generate_llms_txt · geo_llms_drift
Rich JSON-LD templates for WebSite, Organization, FAQ, Article, Product and LocalBusiness — five-plus attributes, not generic name-and-url markup.
geo_generate_schema
Verify the head loader, the noscript fallback, dataLayer order, default consent and duplicate containers — on staging before it reaches production.
gtm_audit_installation
Announce a changed URL to Bing, Yandex, Seznam and Naver in one POST — key file verified first, every response code explained. Google does not take part.
Compare your page with named competitors: the vocabulary everyone shares, themes only you own, themes only they cover. Copy only — no traffic or ranking data.
geo_positioning
Analysis console
Search Console, GA4, the GEO audit, citability and IndexNow, side by side. The console reads the sample audit of opendpe.net — the same payload the MCP tools return.
opendpe.net Overview
| Category | Points | Bar |
|---|---|---|
| robots.txt | 15/18 | |
| llms.txt | 12/18 | |
| Schema | 13/16 | |
| Meta tags | 14/14 | |
| Content | 11/12 | |
| Brand & entity | 3/10 | |
| Signals | 3/6 | |
| AI discovery | 0/6 |
| Query | Clicks | Position |
|---|---|---|
| dpe maison | 610 | 8.4 |
| diagnostic dpe en ligne | 402 | 11.1 |
| dpe appartement | 318 | 9.7 |
| Check | Verdict |
|---|---|
| Key in the protocol grammar | missing |
| Key file published | missing |
| File contains the key | missing |
| Bingbot allowed | pass |
| Sitemap declared | pass |
| HTTPS | pass |
| Bing verification | absent |
| Signal | Verdict |
|---|---|
| Two GTM containers | watch |
| dataLayer | pass |
| Consent mode | pass |
| Universal Analytics | none |
GEO, citability and IndexNow values are measured on opendpe.net. Search rows are illustrative until a property is connected — the console never presents a sample as yours.
Measurement
Traffic you cannot see is traffic you cannot defend. The same server audits the container that produces the numbers.
Page-level checks for the loader, noscript, dataLayer order and consent — plus a snippet generator that refuses malformed container IDs.
GA4 configuration and event tags, triggers, variables, event parameters, duplicate tags and reverse lookups: what fires on a trigger, what uses a variable.
Cross-reference GTM events against events actually received in GA4, validate ecommerce payloads against the official schema, and gate the deploy on drift.
npm run cli -- gtm-audit --url https://acme.com
npm run cli -- geo-audit --url https://acme.com
npm run cli -- geo-drift --url https://acme.com
npm run cli -- geo-positioning --url https://acme.com \
--competitors https://a.com,https://b.com
npm run cli -- geo-report --url https://acme.com --out report.pdf
Proof
Every number below comes from the repository you can run yourself — and from a live audit you can re-run.
Read-only by default · CI runs typecheck, lint, 205 tests, build, CLI smoke and site checks on every push · see the runs
Plans
€0
By scope
Next step
Tell us where to send it. We reply with the audit, the three fixes that move the score most, and what the GTM side needs before you can trust the numbers.
FAQ
Two layers. The URL score runs in your browser: HTTPS, hostname shape, path depth, tracking parameters, fragments, length, file extensions — that part never fetches anything. The SEO, GA4 and Search Console tables are measured server-side by /api/free-read, on the page, its robots.txt and its sitemap. When that API is not connected, the tables are labelled sample; npm run cli -- geo-free-read --url … gives the same rows locally.
SEO optimises for a ranked list of links. GEO optimises for being quoted inside an answer: an engine has to fetch the page, parse it, resolve the entity and find a passage worth citing. They overlap — crawler access, structure, metadata — but a page can rank well and still be uncitable, which is why citability is scored separately here.
Nobody can promise a date, and any tool that does is guessing. What can be measured: whether crawlers are allowed, whether the entity resolves, whether a passage is quotable, and how fast a change is announced (IndexNow). The report gives you those, plus the projected score once the fixes ship.
No, and any tool claiming that is guessing. The audit measures readiness: crawler access, llms.txt, structured data, citability, entity signals and discovery endpoints. It never queries ChatGPT, Claude or Perplexity, so it cannot claim an engine cites you.
Only for the GA4 and Tag Manager audits. Those use a service account invited to your properties with viewer access. Every write — tags, sitemaps, Indexing API, Measurement Protocol secrets — is disabled by default and requires a flag plus confirm=true.
You get the full audit for the URL you entered, the three fixes with the highest recoverable points, and a short list of tracking gaps that would make the numbers unreliable. If it is not a fit, you still keep the audit.
Yes — Apache-2.0. The GEO rubric is adapted from the MIT-licensed geo-optimizer-skill model, credited in the docs. The server, CLI, site and tests are in the same repository.
Built on an MIT toolkit
GeoSuite publishes a zero-dependency GEO toolkit under MIT. Three of its checks already existed here; the two missing ones are now native, so a single audit covers the whole set.
Which AI crawlers robots.txt allows, per bot and tier.
native · geo_crawler_access
Build the index from a sitemap, then catch drift.
native · geo_generate_llms_txt
Copy-paste JSON-LD for six types, validated on the way out.
native · geo_generate_schema
Crawl a site that ships without one, honouring robots.txt.
new · geo_sitemap_build
/.well-known/poppy.json — the file a personal agent reads to find a company and sign in.
new · poppy_check · poppy_generate
Ported from TryGeoSuite/geo-toolkit and poppy-json, MIT © Matteo Perino and GeoSuite. The checks are theirs; the implementation here runs inside the same server as the rest of the audit.