Skip to main content
Glama
@lodd/mcp-server

@lodd/mcp-server

by hholen

@lodd/mcp-server

First-party web analytics for AI agents. You add a 2KB script, Lodd collects your site's traffic, and your agent queries your own data over MCP. It's the analytics platform, not a connector to one.

42 MCP tools covering traffic, events, funnels, conversions, sources, performance, and actor analytics. No dashboard. Your agent queries structured JSON directly.

Quick start

npx -y @lodd/mcp-server

Set LODD_API_KEY in your environment. Get a key at lodd.dev.

Related MCP server: mcp-site-analyst

Claude Code / Cursor

Add to your MCP config:

{
  "mcpServers": {
    "lodd": {
      "command": "npx",
      "args": ["-y", "@lodd/mcp-server"],
      "env": {
        "LODD_API_KEY": "your-api-key"
      }
    }
  }
}

Claude Desktop / claude.ai

Add https://api.lodd.dev/mcp as an MCP connector. OAuth handles auth automatically.

What you can ask

  • "How's traffic this week?"

  • "Show me the pages with the highest bounce rate"

  • "Build a funnel from homepage to signup to purchase"

  • "Which traffic sources drive the most conversions?"

  • "Something unusual is happening today. Investigate."

Tools

42 tools across analytics, breakdowns, events, conversions, actors, annotations, trackable links, and account management. Full reference at lodd.dev/docs.

REST API

Same data is also available via REST at api.lodd.dev/v1/. API docs at lodd.dev/api. OpenAPI spec at lodd.dev/openapi.yaml.

Pricing

Free up to 2,500 events/month. EUR 9.99/month for 100K events. All tools included on both tiers.

Available Tools

40 tools
create_annotationA

Record a user-facing change that may affect analytics. Call after deploying changes to pages, flows, or tracking. Skip dependency updates, CI config, and refactors with no visible impact.

Inputs: site (required), content (required), timestamp.

create_api_keyA

Generate a new API key for the current user. Use this to create keys for managed agents, CI pipelines, or other tools that need access to your Lodd analytics. The key is shown only once — save it immediately.

Inputs: name.

create_siteA

Register a new website for analytics tracking. Returns the site ID, tracking secret, and the script tag to embed.

Inputs: name (required), domain (required).

exclude_my_ipA

Exclude an IP address from analytics tracking for a site. Prevents the user's own visits from appearing in the data. In Claude Code, detect the IP with curl -s api.ipify.org first. In conversation agents, ask the user to check their IP at api.ipify.org and paste it. Must be done per site.

Inputs: site (required), ip_address.

get_active_actorsA

List distinct actors (opaque hashed identifiers) with their event counts, first/last seen, and total revenue. Actors are customer-hashed — Lodd never sees the original identifier. Only includes events where an actor was set.

Inputs: site (required), limit, period.

get_actor_activityA

Get the event timeline for a specific actor hash. Shows all events in chronological order with properties and revenue. The actor is an opaque identifier — Lodd does not know who it represents.

Inputs: site (required), actor (required), limit, period.

get_actor_retentionA

Get weekly cohort retention by actor hash. Groups actors by the week they first appeared, then shows how many returned in weeks 1-4. Actors are opaque hashes — no personal data is stored or exposed. Requires 2+ weeks of data for meaningful results.

Inputs: site (required), period.

get_analyticsA

Get aggregate analytics for a site (visitors, page views, bounce rate, etc.) with automatic comparison to the previous period. Returns average_duration in seconds. Optional filters segment the result by country, browser, os, device type, UTM source, or referrer.

Inputs: site (required), period, filter_os, filter_browser, +4 more.

get_bot_reportA

Show bot and crawler traffic that's been filtered from analytics. Groups by user agent, showing sessions, page views, countries, and first/last seen. Useful for understanding what's crawling your site (AI crawlers, search engines, SEO tools).

Inputs: site (required), limit, period.

get_content_groupsA

Group pages by URL pattern and get aggregate metrics per group. Useful for comparing how blog vs docs vs app pages perform. Patterns use SQL LIKE syntax where % matches anything.

Inputs: site (required), groups (required), period, filter_os, +5 more.

get_conversion_pagesA

Find which pages lead to a specific conversion event. Shows pages viewed before the event in the same session, with conversion rate and average time to convert. Useful for identifying high-converting content.

Inputs: site (required), event_name (required), limit, period.

get_countriesA

Get visitor geography breakdown by country. Call twice with different periods (e.g. '2026-04-01..2026-04-07' vs '2026-04-08..2026-04-14') to compare growth across countries. Optional filters segment by browser, os, device type, UTM source, or referrer.

Inputs: site (required), limit, period, filter_os, +4 more.

get_dropoff_destinationsA

Given a URL, show where visitors go next or if they leave the site. Useful for understanding why people leave key pages like /pricing. The '(exited)' row means the session ended after viewing that page.

Inputs: site (required), from_url (required), limit, period, +6 more.

get_entry_exit_pagesA

Get entry pages (where sessions start) and exit pages (where sessions end). Shows which pages attract new visits and where users leave. Useful for identifying effective landing pages and high-exit pages that may need improvement. Optional filters segment by country, browser, os, device type, UTM source, or referrer.

Inputs: site (required), limit, period, filter_os, +5 more.

get_event_countsA

Get a summary of all custom events tracked on a site, showing event names with their total count and unique sessions. Optionally segment by country, browser, os, device type, UTM source, or referrer (matched against the session's page views).

Inputs: site (required), period, filter_os, filter_browser, +4 more.

get_eventsA

Get individual custom event records with their properties. Optionally filter by event name.

Inputs: site (required), limit, period, event_name.

get_event_sequencesB

Given a target event (like 'signup_complete'), find what actions typically precede it. Shows both pageviews and events before the target, ranked by frequency. step_position=1 is immediately before the target event.

Inputs: site (required), target_event (required), limit, period, +7 more.

get_event_timeseriesB

Get event counts bucketed over time for a specific event. Useful for seeing how event frequency changes. Optional filters segment by country, browser, os, device type, UTM source, or referrer (matched against the session's page views).

Inputs: site (required), event_name (required), period, interval, +6 more.

get_funnelA

Compute a conversion funnel across an ordered sequence of pageview URLs and custom events. Returns per-step session counts and conversion rate relative to step 0. Steps must all occur within the same session, in order. Optional filters constrain which sessions enter the funnel.

Inputs: site (required), steps (required), period, filter_os, +5 more.

get_pagesA

Get pages ranked by traffic. Call twice with different periods to compare page performance over time. Optionally filter by URL path and/or segment by country, browser, os, device type, UTM source, or referrer. Returns page titles when available.

Inputs: site (required), limit, period, filter_os, +6 more.

get_performanceA

Get page load time metrics (average, median, p95) grouped by page URL, device type, country, or browser. Only includes data from pages with load time measurements. Useful for identifying slow pages and correlating performance with engagement.

Inputs: site (required), limit, period, group_by.

get_realtimeA

Get the number of currently active visitors on a site (visitors with activity in the last 5 minutes)

Inputs: site (required).

get_session_pathsB

Find the most common page sequences visitors follow. Returns paths like '/blog → /pricing → /signup' with session counts. Useful for understanding navigation patterns and identifying the most common journeys to conversion.

Inputs: site (required), limit, period, filter_os, +7 more.

get_session_scoresA

Classify sessions into engagement buckets: bounced (1 page), browsed (2-3 pages), engaged (4+ pages or event fired), converted (conversion event fired). Optionally specify which event defines 'converted'.

Inputs: site (required), period, filter_os, filter_browser, +5 more.

get_snapshotA

Quick today vs yesterday comparison: visitors, top referrer, top country, and duration trends

Inputs: site (required).

get_source_conversionsA

Compare traffic sources by conversion rate for a specific event. Shows which referrers, UTM campaigns, and trackable links drive the most conversions, plus average time to convert per source.

Inputs: site (required), event_name (required), limit, period.

get_tech_breakdownA

Get browser, operating system, and device type distribution in one call. Optional filters segment by country, browser, os, device type, UTM source, or referrer.

Inputs: site (required), limit, period, filter_os, +5 more.

get_timeseriesA

Get visitor and page view counts bucketed over time (hourly or daily). Returns an array of {date_label, page_views, unique_visitors} objects. Optional filters segment by country, browser, os, device type, UTM source, or referrer.

Inputs: site (required), period, interval, filter_os, +5 more.

get_traffic_sourcesA

Get traffic sources: referrers, trackable links, and UTM campaigns combined. Shows where visitors are coming from. Call twice with different periods to compare source mix over time. Optional filters segment by country, browser, os, device type, UTM source, or referrer.

Inputs: site (required), limit, period, filter_os, +5 more.

get_usageA

Get current month's event usage and plan limits. Returns plan type, events used, monthly limit, and percentage.

Inputs: no named parameters.

list_annotationsB

List annotations (deploy notes, change records) for a site within a time period.

Inputs: site (required), period.

list_api_keysA

List all API keys for the current user. Shows key prefix, name, creation date, and last used date. Does not reveal full keys.

Inputs: no named parameters.

list_membersB

List all users who have access to a site, with their roles (owner or member).

Inputs: site (required).

list_sitesA

List all websites you have access to with their domains and IDs

Inputs: no named parameters.

remove_memberA

Remove a user's access to a site. Only the site owner can do this. Cannot remove the owner.

Inputs: site (required), email (required).

revoke_api_keyA

Permanently deactivate an API key. The key will immediately stop working. Use list_api_keys to find key IDs. Cannot be undone.

Inputs: key_id (required).

share_siteA

Give another user access to a site's analytics. They must have a Lodd account (signed up at lodd.dev). Only the site owner can share. The invited user gets a notification email.

Inputs: site (required), email (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    A3.8/5.0

    Scored across 40 tools

    Disambiguation4/5

    Most tools have distinct purposes, but some overlap exists among analytics retrieval tools like get_analytics, get_snapshot, get_timeseries, and get_realtime, which could cause misselection if descriptions aren't carefully read. Overall, the set is well-differentiated.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_analytics, create_annotation, list_members, share_site). No mixing of conventions, making it predictable for an agent.

    Tool Count4/5

    40 tools is on the higher side, but each addresses a specific analytics need (events, funnels, sessions, actors, etc.). While somewhat heavy, it remains justified for a comprehensive analytics platform.

    Completeness4/5

    Covers a wide range of analytics functionality including site management, detailed queries, events, funnels, actors, and API key management. Missing some CRUD operations (e.g., update/delete site, edit annotations) but core workflows are well-covered.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Privacy friendly, cookieless web analytics built MCP-first. "Add analytics to my Next.js app" → an AI agent runs the setup_analytics_for_site tool, picks the right install snippet, edits your layout file, and verifies the script is loading. OAuth onboarding, no API keys to paste.
      28
      51 npm
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      An MCP server that provides Google Analytics and Search Console data as tools for AI assistants, enabling natural language queries for web analytics, SEO performance, and site insights.
      13
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Hosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1.
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      Agent-first analytics MCP server for querying stats, funnels, and web/agent traffic, with server-side event ingestion and self-serve signup.
      164 npm
      -