@lodd/mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@lodd/mcp-serverShow me the pages with the highest bounce rate"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@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-serverSet 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.
Links
Available Tools
40 toolscreate_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).
create_trackable_linkA
Create a trackable link for campaign attribution. Append ?ld= to your destination URL when sharing — clicks are attributed to the source in analytics.
Inputs: site (required), source_type (required), destination_url (required), label.
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_link_clicksA
Get click data for a specific trackable link, including referrers and countries. Returns up to 1000 most recent clicks.
Inputs: link (required), period.
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.
list_trackable_linksB
List all trackable links for a site with their click statistics
Inputs: site (required), status.
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).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 40 tools
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.
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.
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.
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
Related MCP Connectors
Clamp Analytics MCP server: traffic, revenue, funnels, cohorts, errors, and search, for AI agents.
Real-time web analytics for AI agents: query traffic, funnels, revenue, and manage your sites.
Analytics your AI agent can actually use. Track, experiment, and optimize via MCP.
Web analytics for AI agents: realtime visitors, revenue, funnels and AI-detected site issues
Related MCP Servers
- AlicenseAqualityDmaintenancePrivacy 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.2851 npm1MIT
- AlicenseAqualityDmaintenanceAn 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.13MIT
- FlicenseNot gradedqualityDmaintenanceHosted 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.-
- FlicenseNot gradedqualityDmaintenanceAgent-first analytics MCP server for querying stats, funnels, and web/agent traffic, with server-side event ingestion and self-serve signup.164 npm-