_ registry / mcp streamable-http · checked 35m ago

fathom-analytics-mcp

https://fathom-analytics.usefulapi.io

Registry code: df4eaa42f351240f

api record

Tools for Fathom Analytics, hosted by usefulapi.io. Read-only tools never change data; ask the user before a tool that creates, changes or deletes Fathom Analytics data. Free plan: 100 tool calls per month. Run fathom_usage_status to see the calls used this month. If the user asks for something none of these tools can do, tell the user and, with their OK, run fathom_request_feature to record the request. Pro (unlimited calls, $9/month or $90/year): when the user wants more calls or reaches the limit, run fathom_upgrade; it returns a Stripe Checkout link for the user to open.…

endpoint
https://fathom-analytics.usefulapi.io/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is fathom-analytics-mcp live?
Yes — it answered the hub's last check (checked 35m ago). It answered 100% of checks over the last 30 days.
Is fathom-analytics-mcp free to use?
No — it asks for a key or a login before it will serve.
What tools does fathom-analytics-mcp have?
16 tools: fathom_get_account, fathom_get_site, fathom_get_aggregation, fathom_clear_event_currency, fathom_get_token, fathom_update_milestone, fathom_delete_milestone, fathom_list_sites, ….
Is fathom-analytics-mcp safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
432ms

last good check

priced tools
0

of 16 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 16 tools
16 auth-required 16 of 16 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • fathom_get_account auth-required 35m ago

    The Fathom account that owns the API token: id, name and email. Needs an Admin token (the * scope). GET /account.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • fathom_get_site auth-required never probed

    One site: id, name, sharing (none/private/public), timezone and created_at. GET /sites/{site_id}.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        }
      }
    }
    arguments 14 lines
  • fathom_get_aggregation auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "entity",
        "aggregates"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 1000,
          "minimum": 1,
          "description": "Row cap, 1-1000 (default 500 when grouping by fields)."
        },
        "entity": {
          "enum": [
            "pageview",
            "event"
          ],
          "type": "string",
          "description": "pageview = site traffic; event = one event's conversions (needs event_name)."
        },
        "date_to": {
          "type": "string",
          "maxLength": 19,
          "minLength": 10,
          "description": "End, YYYY-MM-DD (end of day) or \"YYYY-MM-DD HH:MM:SS\", in the site's timezone. Default: now."
        },
        "filters": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "property",
              "operator",
              "value"
            ],
            "properties": {
              "value": {
                "type": "string",
                "maxLength": 1000,
                "description": "The value to compare with, always a string (e.g. /pricing, GB, Mobile, ChatGPT)."
              },
              "operator": {
                "enum": [
                  "is",
                  "is not",
                  "is like",
                  "is not like",
                  "matching",
                  "not matching"
                ],
                "type": "string",
                "description": "is, is not, is like (contains, * wildcards), is not like, matching (regex), not matching. Categorical fields (device_type, operating_system, browser, country_code, city, state, region) allow only is / is not."
              },
              "property": {
                "enum": [
                  "domain",
                  "hostname",
                  "pathname",
                  "entry_page",
                  "exit_page",
                  "referrer_hostname",
                  "referrer_pathname",
                  "referrer_source",
                  "ai_source",
                  "browser",
                  "country_code",
                  "city",
                  "state",
                  "region",
                  "device_type",
                  "operating_system",
                  "utm_campaign",
                  "utm_content",
                  "utm_medium",
                  "utm_source",
                  "utm_term",
                  "ref"
                ],
                "type": "string",
                "description": "Field to filter on (domain is filter-only; keyword cannot be filtered)."
              }
            }
          },
          "maxItems": 20,
          "description": "Filters, all applied (AND). Example: [{\"property\":\"country_code\",\"operator\":\"is\",\"value\":\"GB\"}]."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "sort_by": {
          "type": "string",
          "maxLength": 64,
          "description": "\"<field>:asc|desc\" with a field from aggregates or field_grouping (or timestamp with date_grouping), e.g. pageviews:desc."
        },
        "date_from": {
          "type": "string",
          "maxLength": 19,
          "minLength": 10,
          "description": "Start, YYYY-MM-DD (start of day) or \"YYYY-MM-DD HH:MM:SS\", in the site's timezone. Default: the first recorded data."
        },
        "aggregates": {
          "type": "array",
          "items": {
            "enum": [
              "visits",
              "uniques",
              "pageviews",
              "avg_duration",
              "bounce_rate",
              "conversions",
              "unique_conversions",
              "value"
            ],
            "type": "string"
          },
          "maxItems": 8,
          "minItems": 1,
          "description": "Metrics. pageview: visits, uniques, pageviews, avg_duration, bounce_rate. event: conversions, unique_conversions, value."
        },
        "event_name": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "For entity event: the event's name, as listed by fathom_list_events."
        },
        "date_grouping": {
          "enum": [
            "hour",
            "day",
            "month",
            "year"
          ],
          "type": "string",
          "description": "Group by time (omit for one total). hour only for ranges up to 7 days."
        },
        "field_grouping": {
          "type": "array",
          "items": {
            "enum": [
              "hostname",
              "pathname",
              "entry_page",
              "exit_page",
              "referrer_hostname",
              "referrer_pathname",
              "referrer_source",
              "ai_source",
              "browser",
              "country_code",
              "city",
              "state",
              "region",
              "device_type",
              "operating_system",
              "utm_campaign",
              "utm_content",
              "utm_medium",
              "utm_source",
              "utm_term",
              "keyword",
              "ref"
            ],
            "type": "string"
          },
          "maxItems": 6,
          "minItems": 1,
          "description": "Group by these fields, e.g. [pathname] or [referrer_source, utm_campaign]."
        }
      }
    }
    arguments 175 lines
  • fathom_clear_event_currency auth-required never probed

    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=.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "event_name"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "event_name": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "The event's name exactly as tracked (fathom_list_events lists them)."
        }
      }
    }
    arguments 21 lines
  • fathom_get_token auth-required 35m ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {}
    }
    arguments 5 lines
  • fathom_update_milestone auth-required never probed

    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}.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "milestone_id",
        "name",
        "milestone_date"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 1,
          "description": "Milestone name (up to 30 characters), e.g. Redesign launch."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "milestone_id": {
          "type": "string",
          "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
          "description": "The milestone id (a UUID, from fathom_list_milestones)."
        },
        "milestone_date": {
          "type": "string",
          "description": "The milestone's date, YYYY-MM-DD."
        }
      }
    }
    arguments 32 lines
  • fathom_delete_milestone auth-required never probed

    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}.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "milestone_id"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "milestone_id": {
          "type": "string",
          "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
          "description": "The milestone id (a UUID, from fathom_list_milestones)."
        }
      }
    }
    arguments 20 lines
  • fathom_list_sites auth-required 35m ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Items per page, 1-100 (default 10)."
        },
        "ending_before": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page backward from this object id (newest first). Not together with starting_after."
        },
        "starting_after": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page forward: pass next.starting_after from the previous reply (an object id)."
        }
      }
    }
    arguments 22 lines
  • fathom_list_events auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Items per page, 1-100 (default 10)."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "ending_before": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page backward from this object id (newest first). Not together with starting_after."
        },
        "starting_after": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page forward: pass next.starting_after from the previous reply (an object id)."
        }
      }
    }
    arguments 30 lines
  • fathom_list_milestones auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Items per page, 1-100 (default 10)."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "ending_before": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page backward from this object id (newest first). Not together with starting_after."
        },
        "starting_after": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "Page forward: pass next.starting_after from the previous reply (an object id)."
        }
      }
    }
    arguments 30 lines
  • fathom_get_milestone auth-required never probed

    One milestone: id, name, milestone_date, created_at, updated_at. GET /sites/{site_id}/milestones/{milestone_id}.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "milestone_id"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "milestone_id": {
          "type": "string",
          "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
          "description": "The milestone id (a UUID, from fathom_list_milestones)."
        }
      }
    }
    arguments 20 lines
  • fathom_get_current_visitors auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "detailed": {
          "type": "boolean",
          "description": "true = also the top pages and referrers (default false: only the count)."
        }
      }
    }
    arguments 18 lines
  • fathom_create_site auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "Site name (up to 255 characters; need not match the URL)."
        },
        "sharing": {
          "enum": [
            "none",
            "private",
            "public"
          ],
          "type": "string",
          "description": "Dashboard sharing: none (default), private (password) or public."
        },
        "timezone": {
          "type": "string",
          "pattern": "^[A-Za-z][A-Za-z0-9_+-]*(\\/[A-Za-z0-9_+-]+){0,2}$",
          "maxLength": 64,
          "description": "Reporting timezone as a TZ database name, e.g. America/New_York, Europe/London, UTC."
        },
        "multi_domain": {
          "type": "boolean",
          "description": "true = the site may track multiple domains."
        },
        "share_password": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "Required when sharing is private: the password for the shared dashboard."
        },
        "multi_domain_option": {
          "enum": [
            "combined",
            "separate"
          ],
          "type": "string",
          "description": "Required when multi_domain is true: report domains combined or separate."
        }
      }
    }
    arguments 48 lines
  • fathom_update_site auth-required never probed

    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}.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "New site name (up to 255 characters)."
        },
        "sharing": {
          "enum": [
            "none",
            "private",
            "public"
          ],
          "type": "string",
          "description": "Dashboard sharing: none, private (needs share_password) or public."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "timezone": {
          "type": "string",
          "pattern": "^[A-Za-z][A-Za-z0-9_+-]*(\\/[A-Za-z0-9_+-]+){0,2}$",
          "maxLength": 64,
          "description": "Reporting timezone as a TZ database name, e.g. America/New_York, Europe/London, UTC."
        },
        "multi_domain": {
          "type": "boolean",
          "description": "true = the site may track multiple domains."
        },
        "share_password": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "Required when setting sharing to private."
        },
        "multi_domain_option": {
          "enum": [
            "combined",
            "separate"
          ],
          "type": "string",
          "description": "Required when multi_domain is true: combined or separate."
        }
      }
    }
    arguments 53 lines
  • fathom_set_event_currency auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "event_name",
        "currency"
      ],
      "properties": {
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "currency": {
          "enum": [
            "dollar",
            "pound",
            "euro",
            "yuan",
            "peso",
            "shekel",
            "yen",
            "won",
            "hryvnia",
            "franc",
            "rupee",
            "integer",
            "none"
          ],
          "type": "string",
          "description": "dollar, pound, euro, yuan, peso, shekel, yen, won, hryvnia, franc, rupee, integer (a plain number) or none."
        },
        "event_name": {
          "type": "string",
          "maxLength": 255,
          "minLength": 1,
          "description": "The event's name exactly as tracked (up to 255 characters; fathom_list_events lists them)."
        }
      }
    }
    arguments 41 lines
  • fathom_create_milestone auth-required never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "site_id",
        "name",
        "milestone_date"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 30,
          "minLength": 1,
          "description": "Milestone name (up to 30 characters), e.g. Redesign launch."
        },
        "site_id": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$",
          "description": "The site id, the same string as in the tracking code (e.g. CDBUGS). fathom_list_sites lists them."
        },
        "milestone_date": {
          "type": "string",
          "description": "The milestone's date, YYYY-MM-DD."
        }
      }
    }
    arguments 26 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id df4eaa42f351240f.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/df4eaa42f351240f/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/df4eaa42f351240f/badge.svg)](https://brick.blue/agent/df4eaa42f351240f?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.

_ also on usefulapi.io 72 entries

Served from the same domain, which is what was measured. Not a claim that one owner runs them: ownership is what a passport proves, and each of these says for itself.

64 more sit on this domain. All of them.