Skip to content

Fathom Analytics MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.4.3 · published by io.usefulapi

Query Fathom Analytics sites, stats, current visitors and events, and manage sites and events.

Deletes · 5Changes · 2

16 tools: 5 can delete or cancel things, 2 change things and 9 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http fathom-analytics https://fathom-analytics.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

16 tools

Deletes or cancels 5Claude Code: deny
  • fathom_clear_event_currencyRemove the currency set for an event, so it uses the site's default again.No findings

    Why it is in this group

    • The description's first verb is "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Remove the currency set for an event, so it uses the site's default again. The event and its completion data stay. Needs a manage token for the site. DELETE /sites/{site_id}/events?name=.

    Annotations the server declares

    • title: Clear an event's currency
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • fathom_delete_milestonePermanently delete a milestone (only the annotation; traffic data is not touched).No findings

    Why it is in this group

    • The name "fathom_delete_milestone" says "delete": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete a milestone (only the annotation; traffic data is not touched). Cannot be undone. Needs a manage token for the site. DELETE /sites/{site_id}/milestones/{milestone_id}.

    Annotations the server declares

    • title: Delete a milestone
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • fathom_set_event_currencySet the currency of an event's value by event name (works before the event is first tracked).No findings

    Why it is in this group

    • The name "fathom_set_event_currency" says "set": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Set the currency of an event's value by event name (works before the event is first tracked). Needs a manage token for the site. POST /sites/{site_id}/events/currency.

    Annotations the server declares

    • title: Set an event's currency
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • fathom_update_milestoneRename or re-date a milestone (both name and milestone_date are required).No findings

    Why it is in this group

    • The name "fathom_update_milestone" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Rename or re-date a milestone (both name and milestone_date are required). Needs a manage token for the site. POST /sites/{site_id}/milestones/{milestone_id}.

    Annotations the server declares

    • title: Update a milestone
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
  • fathom_update_siteChange a site's name, sharing, timezone or multi-domain setting (send only what changes).No findings

    Why it is in this group

    • The name "fathom_update_site" says "update": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Change a site's name, sharing, timezone or multi-domain setting (send only what changes). Changing the timezone changes how reports are bucketed. Needs a manage token for the site. POST /sites/{site_id}.

    Annotations the server declares

    • title: Update a site
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: true
Changes things 2Claude Code: ask
  • fathom_create_milestoneAdd a milestone (a dated annotation shown on the site's reports, e.g.No findings

    Why it is in this group

    • The name "fathom_create_milestone" says "create": a word for a change.
    Description, as the server wrote it
    Add a milestone (a dated annotation shown on the site's reports, e.g. a launch or campaign start). Needs a manage token for the site. POST /sites/{site_id}/milestones.

    Annotations the server declares

    • title: Create a milestone
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • fathom_create_siteCreate a new site in the Fathom account (returns its id, used in the tracking code).No findings

    Why it is in this group

    • The name "fathom_create_site" says "create": a word for a change.
    Description, as the server wrote it
    Create a new site in the Fathom account (returns its id, used in the tracking code). Needs an Admin token. Sharing private needs share_password; multi_domain true needs multi_domain_option. POST /sites.

    Annotations the server declares

    • title: Create a site
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Only reads 9Claude Code: allow
  • fathom_get_accountThe Fathom account that owns the API token: id, name and email.No findings

    Why it is in this group

    • The name "fathom_get_account" says "get": a word for reading.
    Description, as the server wrote it
    The Fathom account that owns the API token: id, name and email. Needs an Admin token (the * scope). GET /account.

    Annotations the server declares

    • title: Get the account
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_get_aggregationFathom's custom report (the dashboard's numbers): aggregate pageviews or one event over a date range, optionally grouped by date and/or fields and filtered.No findings

    Why it is in this group

    • The name "fathom_get_aggregation" says "get": a word for reading.
    Description, as the server wrote it
    Fathom's custom report (the dashboard's numbers): aggregate pageviews or one event over a date range, optionally grouped by date and/or fields and filtered. Pageviews: aggregates visits (unique site visits), uniques (unique page visits), pageviews, avg_duration (seconds), bounce_rate. Events (entity event + event_name): conversions, unique_conversions, value (in cents). Examples: top pages = field_grouping [pathname], sort_by pageviews:desc; traffic sources = [referrer_source] or [referrer_hostname]; AI referrals = [ai_source]; daily trend = date_grouping day. All numbers come back as strings. Dates are in the site's timezone; hour grouping only for ranges up to 7 days. Grouped reports return at most 500 rows unless limit is set (max 1000, no paging), so narrow with filters or dates. Data before March 2021 cannot be grouped/filtered. GET /aggregations.

    Annotations the server declares

    • title: Run a traffic or event report
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_get_current_visitorsLive visitors on a site right now: the total, and with detailed true the top 150 pages (hostname, pathname, total) and top 150 referrers.No findings

    Why it is in this group

    • The name "fathom_get_current_visitors" says "get": a word for reading.
    Description, as the server wrote it
    Live visitors on a site right now: the total, and with detailed true the top 150 pages (hostname, pathname, total) and top 150 referrers. GET /current_visitors.

    Annotations the server declares

    • title: Get current visitors
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_get_milestoneOne milestone: id, name, milestone_date, created_at, updated_at.No findings

    Why it is in this group

    • The name "fathom_get_milestone" says "get": a word for reading.
    Description, as the server wrote it
    One milestone: id, name, milestone_date, created_at, updated_at. GET /sites/{site_id}/milestones/{milestone_id}.

    Annotations the server declares

    • title: Get a milestone
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_get_siteOne site: id, name, sharing (none/private/public), timezone and created_at.No findings

    Why it is in this group

    • The name "fathom_get_site" says "get": a word for reading.
    Description, as the server wrote it
    One site: id, name, sharing (none/private/public), timezone and created_at. GET /sites/{site_id}.

    Annotations the server declares

    • title: Get a site
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_get_tokenThe connected API token's name, permissions (abilities: "*" = Admin, "all-sites-readonly", or per-site read:<id> / manage:<id>) and timestamps.No findings

    Why it is in this group

    • The name "fathom_get_token" says "get": a word for reading.
    Description, as the server wrote it
    The connected API token's name, permissions (abilities: "*" = Admin, "all-sites-readonly", or per-site read:<id> / manage:<id>) and timestamps. The secret value is never returned. Good first call to know which tools will work. GET /token.

    Annotations the server declares

    • title: Get the API token's permissions
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_list_eventsList a site's events (conversions/goals): every event name the site has tracked plus events with a currency set, sorted by name.No findings

    Why it is in this group

    • The name "fathom_list_events" says "list": a word for reading.
    Description, as the server wrote it
    List a site's events (conversions/goals): every event name the site has tracked plus events with a currency set, sorted by name. Identify events by name (use it as event_name in fathom_get_aggregation); the id is only a paging cursor. Paged: pass next.starting_after. GET /sites/{site_id}/events.

    Annotations the server declares

    • title: List a site's events
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_list_milestonesList a site's milestones (dated annotations on reports, such as a redesign launch or a campaign start), oldest first.No findings

    Why it is in this group

    • The name "fathom_list_milestones" says "list": a word for reading.
    Description, as the server wrote it
    List a site's milestones (dated annotations on reports, such as a redesign launch or a campaign start), oldest first. Paged: pass next.starting_after. GET /sites/{site_id}/milestones.

    Annotations the server declares

    • title: List a site's milestones
    • readOnlyHint: true
    • openWorldHint: true
  • fathom_list_sitesList the sites the token can read (id, name, sharing, timezone, created_at), oldest first.No findings

    Why it is in this group

    • The name "fathom_list_sites" says "list": a word for reading.
    Description, as the server wrote it
    List the sites the token can read (id, name, sharing, timezone, created_at), oldest first. The site id is what every report tool takes. Needs an Admin or all-sites read-only token; a token scoped to a single site cannot list sites, so use fathom_get_site with that site id instead. Paged: pass next.starting_after. GET /sites.

    Annotations the server declares

    • title: List sites
    • readOnlyHint: true
    • openWorldHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.4.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http fathom-analytics https://fathom-analytics.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__fathom-analytics__fathom_get_token",
      "mcp__fathom-analytics__fathom_get_account",
      "mcp__fathom-analytics__fathom_list_sites",
      "mcp__fathom-analytics__fathom_get_site",
      "mcp__fathom-analytics__fathom_list_events",
      "mcp__fathom-analytics__fathom_list_milestones",
      "mcp__fathom-analytics__fathom_get_milestone",
      "mcp__fathom-analytics__fathom_get_aggregation",
      "mcp__fathom-analytics__fathom_get_current_visitors"
    ],
    "ask": [
      "mcp__fathom-analytics__fathom_create_site",
      "mcp__fathom-analytics__fathom_create_milestone"
    ],
    "deny": [
      "mcp__fathom-analytics__fathom_update_site",
      "mcp__fathom-analytics__fathom_set_event_currency",
      "mcp__fathom-analytics__fathom_clear_event_currency",
      "mcp__fathom-analytics__fathom_update_milestone",
      "mcp__fathom-analytics__fathom_delete_milestone"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as fathom-analytics. Review it before you use it.