Skip to main content
Glama
cracked-collective

@clarvivo/mcp

@clarvivo/mcp

Install Clarvivo analytics without leaving your coding agent. The server detects the app framework, reuses or creates the right Clarvivo project, and returns the exact file and code edit. It can then verify real traffic, connect payment revenue, and configure events, funnels, and alerts.

The 60-second flow

  1. Create an API token at app.clarvivo.com/dashboard/settings?tab=api-tokens.

  2. Add this MCP server to your coding client with CLARVIVO_API_TOKEN in its environment.

  3. Ask the agent: “Set up Clarvivo analytics for example.com.”

  4. The agent detects the framework, calls setup_analytics, makes the returned edit, and deploys through your normal workflow.

  5. Visit the deployed site, then ask the agent to verify the installation.

The tracker observes history.pushState, history.replaceState, and popstate, so client-side SPA route changes work automatically. Do not add router hooks.

Related MCP server: google-seo-mcp

Tools

Tool

Purpose

setup_analytics

Detect the framework, reuse a matching-domain project or create one, and return the exact installation edit.

get_install_snippet

Get framework-specific instructions for an existing API key or project.

verify_installation

Prove the deployed snippet works from a proof-of-life event count, without reading analytics.

list_projects

List accessible projects and their public tracking API keys.

get_stats

Return a small traffic and top-line revenue summary for 1–90 days, capped to the top five pages and referrers.

get_traffic_sources

Aggregate up to 90 days into channel shares, the top ten referrers, and the top ten UTM source rows.

get_pages

Return the top ten pages with visitors, entries, exits, bounce rate, and average time.

get_audience

Summarise devices, browsers, operating systems, countries, visitor segments, screens, and languages.

export_data

Write CSV/JSON locally, or create a self-contained printable HTML report for PDF; return metadata only.

connect_revenue

Detect Stripe, Polar, Razorpay, Paddle, Lemon Squeezy, or Dodo; connect its webhook; and return the attribution edit.

verify_revenue

Summarise webhook proof-of-life and attribution coverage without dumping payment data.

add_event

Register an event and propose the window.clarvivo.trackEvent(...) edit and handler placement.

create_funnel

Create an ordered funnel or reuse one with the same name, then flag unmatched steps.

create_alert

Create a traffic/conversion alert or reuse an alert of the same type.

list_funnels

List funnels and their ordered steps.

setup_analytics supports Next.js App Router, Next.js Pages Router, Vite (React/Vue/Svelte), Create React App, Astro, SvelteKit, Nuxt, Remix / React Router v7, Gatsby, Docusaurus, and static HTML.

Read your data

Ask for a quick overview with get_stats, then use get_traffic_sources, get_pages, or get_audience when you need a focused breakdown. These tools aggregate the full reporting window inside the MCP server, cap every returned list, and never place raw daily analytics rows into the model context. Their default window is 30 days and accepts 1–90 days.

Analytics reads require the analytics:read token scope. If the account is still awaiting its first payment or its access has lapsed, the tools stop at the same billing wall as the dashboard and link to the billing page.

Export

export_data writes the result to disk instead of returning file contents. CSV and JSON use Clarvivo's paid export routes; pdf creates a slim, self-contained .html report with headline metrics, channels, top pages, and sources. Open that file in a browser and use Print → Save as PDF, matching the dashboard workflow.

The default filename is clarvivo-export-<project>-<date>.<ext> in the current working directory. A custom path must remain inside that directory and cannot contain ... Existing files are protected unless overwrite: true is passed. Data export remains plan-gated and uses the existing analytics:read scope.

Connect payments

  1. Ask the agent: “Connect Clarvivo revenue for this project.”

  2. connect_revenue detects the payment SDK from package.json, connects the provider, and returns the webhook URL plus the exact events to enable.

  3. Copy the provider signing secret from its webhook settings into Clarvivo at Dashboard → Settings → Integrations. Do not paste the secret into the agent or tool call.

  4. Apply the returned client-to-server attribution edit. It reads clv_vid from browser local storage and puts it in the provider's supported metadata, custom data, or notes field. This is the step that makes revenue-by-channel work.

  5. Complete a test payment, wait for delivery, then ask: “Verify Clarvivo revenue.”

The checkout snippet adapts to a Next.js route handler, Express handler, or serverless function. If no supported SDK is found, the tool returns a server-only signed POST /api/ingest/:apiKey/revenue example using CLARVIVO_INGEST_SECRET; that secret must never enter browser code.

Track events & funnels

  1. Ask: “Track successful signups in Clarvivo.” add_event registers the event and proposes a window.clarvivo.trackEvent(...) call for the success handler. The tool reports the edit; your coding agent applies it.

  2. Ask: “Create a Signup funnel with Landing, Pricing, and Success.” create_funnel orders the steps, reuses an existing same-name funnel on retries, and points out steps that do not yet match a tracked page.

  3. Ask: “Alert me when conversion drops by 20%.” create_alert reuses an existing alert of that type instead of creating duplicates.

The browser SDK global is window.clarvivo. It exposes trackEvent(name, properties), trackConversion(value, currency), and trackPurchase(...).

Configuration

Replace clv_live_REPLACE_ME below. Tokens are secrets; keep personal config files out of source control. The tracking API key returned by tools is intentionally public because it ships in page source.

For local development or self-hosting, add CLARVIVO_BASE_URL (for example http://127.0.0.1:5000) beside the token.

Claude Code

The official CLI accepts --env before the -- separator. This user-scoped command works from every project:

claude mcp add clarvivo --scope user \
  --env CLARVIVO_API_TOKEN=clv_live_REPLACE_ME \
  -- npx -y @clarvivo/mcp

Check it with claude mcp get clarvivo. See Claude Code MCP documentation.

Cursor

Create .cursor/mcp.json in a project, or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "clarvivo": {
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      }
    }
  }
}

One-click install with a placeholder token (review and replace it in Cursor before starting the server):

Add Clarvivo to Cursor

Cursor requires the single-server config to be JSON-stringified and base64-encoded in the config parameter. See Cursor MCP configuration and Cursor install links.

Codex CLI

Add this to ~/.codex/config.toml:

[mcp_servers.clarvivo]
command = "npx"
args = ["-y", "@clarvivo/mcp"]

[mcp_servers.clarvivo.env]
CLARVIVO_API_TOKEN = "clv_live_REPLACE_ME"

The equivalent command is:

codex mcp add clarvivo \
  --env CLARVIVO_API_TOKEN=clv_live_REPLACE_ME \
  -- npx -y @clarvivo/mcp

This was checked against the installed codex mcp add --help and the official OpenAI Codex MCP documentation.

Windsurf

Open ~/.codeium/windsurf/mcp_config.json and add:

{
  "mcpServers": {
    "clarvivo": {
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      }
    }
  }
}

Refresh the MCP list after saving. See Windsurf’s MCP documentation.

Cline

Open Cline’s MCP Servers settings, choose Configure MCP Servers, and add this entry to cline_mcp_settings.json (normally under ~/.cline/data/settings/):

{
  "mcpServers": {
    "clarvivo": {
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      },
      "disabled": false
    }
  }
}

See Cline configuration locations.

Visual Studio Code / GitHub Copilot

Create .vscode/mcp.json:

{
  "servers": {
    "clarvivo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      }
    }
  }
}

One-click install with a placeholder token:

Install Clarvivo in VS Code

VS Code’s URI uses URL-encoded JSON rather than Cursor’s base64 encoding. See the VS Code MCP developer guide and configuration reference.

Zed

Open your Zed settings file and merge:

{
  "context_servers": {
    "clarvivo": {
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      }
    }
  }
}

See MCP in Zed.

Generic MCP client

For clients using the common mcpServers shape:

{
  "mcpServers": {
    "clarvivo": {
      "command": "npx",
      "args": ["-y", "@clarvivo/mcp"],
      "env": {
        "CLARVIVO_API_TOKEN": "clv_live_REPLACE_ME"
      }
    }
  }
}

Node.js 20 or newer is required.

Authentication and billing errors

Every tool checks for CLARVIVO_API_TOKEN before doing work. If it is missing, the tool returns the token URL and a copy-pasteable environment variable name. The bearer token is never included in tool output or logs.

Tools also report a missing token scope by name and link directly to the API-token settings page. Payment signing secrets are dashboard-only: connect_revenue has no secret input and sends only { provider, connected: true } to Clarvivo.

Clarvivo has no free tier. If project creation returns PROJECT_LIMIT_REACHED, HTTP 402, or HTTP 403, the tool stops immediately and links to billing. It does not retry or claim the project was created.

Development

cd mcp
npm install
npm run build
npm test

Set CLARVIVO_BASE_URL=http://127.0.0.1:5000 when using a local Clarvivo server. Tests mock HTTP and never call production.

Publishing checklist

No submission happens automatically. Complete these after the package and public repository are ready:

  • npm: publish clarvivo-mcp publicly, confirm the bin is executable, and test a clean npx -y @clarvivo/mcp MCP initialize handshake. Use npm provenance/2FA and inspect npm pack --dry-run first.

  • Official MCP Registry: verify the io.github.cracked-collective/clarvivo namespace, publish the matching npm version first, then run mcp-publisher login, mcp-publisher validate, and mcp-publisher publish against the included server.json. The registry stores metadata, not the package. Follow the official registry quickstart.

  • Smithery: authenticate with the Smithery CLI and publish a local MCP bundle (.mcpb) under the Clarvivo namespace, or publish a hosted URL if an HTTP transport is added later: smithery mcp publish <bundle.mcpb> -n clarvivo/clarvivo. Smithery’s current publisher accepts hosted URLs or MCP bundles; see Smithery CLI publishing.

  • mcp.so: use the server submission form. It currently requires a public repository URL and name; the paid path is optional and advertises immediate publishing.

  • PulseMCP: use the site’s Submit flow and provide the public repository, npm install command, fifteen-tool inventory, auth variable, license, and maintainer contact. Re-check the form at submission time because PulseMCP does not publish a stable submission schema.

  • Glama: click Add Server in the Glama registry, submit the public GitHub repository, and add glama.json if organization ownership/metadata verification requests it. Confirm Glama can inspect all fifteen tools.

  • Cursor Marketplace: package the MCP config as an Agent Plugin or Cursor Plugin with a valid plugin.json / .cursor-plugin/plugin.json, public Git repository, README, and optional committed logo; declare the token variable in the manifest schema, then submit the repository at cursor.com/marketplace/publish. Use the official submission checklist.

  • awesome-mcp-servers: first ensure the Glama listing exists, then fork punkpeye/awesome-mcp-servers, add one alphabetized line in the appropriate category with repository link and concise description, and open a PR following its contribution guide.

  • Additional discovery: submit the same canonical metadata to mcpservers.org, MCP Central, and mcp-marketplace.io; keep every listing pointed at the npm package and one canonical repository so versions and security notices do not drift.

For every listing, use the same name, description, repository, license, token variable, Node requirement, fifteen-tool inventory, and install snippets from this README.

Available Tools

11 tools
add_eventRegister a tracked eventC

Register a Clarvivo event and propose the exact window.clarvivo.trackEvent call and handler placement. This tool does not edit files.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNo
nameYes
typeYes
valueNo
whereNoHuman-readable handler or file location for the proposed edit
projectIdYesClarvivo project ID

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It states the tool does not edit files, but it does not clarify whether registering an event has persistent side effects, requires authentication, or is effectively a read-only proposal. The word 'Register' implies mutation, yet the description leaves that ambiguity unresolved.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler: the first states the primary action and output, the second adds a key behavioral constraint. Information is front-loaded and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no output schema, and no annotations, this description is incomplete. It omits side effects, response format, required parameter semantics, and any relationship to sibling tools. It is enough to identify the tool but not enough to call it confidently without inspecting the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33% (2 of 6 properties have descriptions), so the description should compensate, but it adds no parameter-level detail. The reference to window.clarvivo.trackEvent loosely suggests how name, type, and value might be used, but it does not explain url, where, or which parameters are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Register') with a specific resource ('a Clarvivo event') and explains that the tool proposes the exact window.clarvivo.trackEvent call and handler placement. It is clearly distinct from siblings because it is about event registration rather than installation or revenue setup, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus siblings like setup_analytics, connect_revenue, or get_install_snippet. The only contextual clue is 'This tool does not edit files,' which communicates a limitation but not a selection rule or prerequisite.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_revenueConnect payment revenueA
Idempotent

Detect a supported payment SDK (or use the named provider), connect its Clarvivo webhook, and return a three-step setup checklist with the exact attribution edit. Never accepts or transmits webhook secrets.

ParametersJSON Schema
NameRequiredDescriptionDefault
providerNo
projectIdYesClarvivo project ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the idempotentHint annotation, the description adds a meaningful behavioral constraint: it states that the tool never accepts or transmits webhook secrets. It also clarifies the output shape (three-step checklist and attribution edit), which is useful for an agent deciding whether the operation is safe and what to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loads the core action, and includes only high-value details. The security invariant about webhook secrets is concise and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter tool with no output schema, the description provides enough context: what action happens, how provider selection works, what output is returned, and an important security constraint. Minor gaps remain around unsupported-SDK handling, but the essential information for a correct call is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes projectId but not provider, giving 50% coverage. The description adds slight clarity by implying provider is optional via 'or use the named provider,' but it does not explain the enum values or the role of projectId beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs and a clear resource: detect a payment SDK, connect its Clarvivo webhook, and return a setup checklist. This distinguishes it from sibling tools like verify_revenue or setup_analytics by making the connection/onboarding action explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: when a supported payment SDK is detected or a provider is named. However, it does not explicitly contrast with siblings such as verify_revenue or setup_analytics, and there is no direct when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_alertCreate an analytics alertC
Idempotent

Create a traffic or conversion alert, reusing an existing alert of the same type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
projectIdYesClarvivo project ID
thresholdYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The idempotentHint annotation already signals safe repeated calls, and the description adds the 'reusing an existing alert of the same type' behavior, which provides some transparency beyond the annotation. However, it does not clarify what happens to the existing alert (updated, replaced, ignored) or whether the operation is otherwise destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one efficient sentence with no filler, and the core action is front-loaded. It loses a point because the phrase 'reusing an existing alert of the same type' is compressed to the point of ambiguity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and only a short description, an agent is left guessing what a successful call returns, what happens when an alert of the same type exists, and whether metrics/funnels must be configured beforehand. The description only partially explains the reuse behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema describes projectId and the type enum, but only 33% of parameters have schema descriptions. The description adds some meaning by framing type as 'traffic or conversion', but it does not explain threshold units, threshold meaning, or how the three enum values map to alert behavior. Given the low coverage, the description does not sufficiently compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it creates a traffic or conversion alert, which clearly distinguishes it from the sibling tools in this workspace (none of which are alert-specific). However, it is less explicit about whether the result is a brand-new alert or an update, which slightly weakens the clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for creating alerts and mentions reuse, but it does not state when to prefer this over other tools, nor does it explain prerequisites such as needing analytics or project setup first. No alternatives or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_funnelCreate a conversion funnelA
Idempotent

Create an ordered funnel, reusing a case-insensitive name match so retries never duplicate it, and flag steps without a known tracked page.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
stepsYes
projectIdYesClarvivo project ID

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide idempotentHint=true, but the description goes beyond that by explaining the mechanism: reusing a case-insensitive name match prevents duplicates. It also discloses the useful validation behavior of flagging steps without a known tracked page. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One dense, front-loaded sentence with no wasted words. Each clause adds meaningful behavior: creation, ordering, idempotent retry handling, and validation flagging.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter creation tool with an idempotency annotation, the description covers ordering, retry safety, and a validation behavior. The main omission is the response/error shape, but the absence of an output schema makes that a minor gap rather than a blocking one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, and the description compensates partially by explaining that name matching is case-insensitive and that steps are ordered and checked against tracked pages. However, the step item fields (url and name) and the meaning of projectId are not elaborated beyond the minimal schema note, so compensation is incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create an ordered funnel'. It also adds distinguishing behavior—idempotent case-insensitive name reuse and flagging of untracked steps—so the tool is clearly distinguished from sibling list/analytics/setup tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for creating funnels and that retries are safe, but it does not explicitly name alternatives like list_funnels or state when NOT to use it. Routing among siblings is therefore left largely implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_install_snippetGet framework install instructionsA
Read-onlyIdempotent

Return the exact tracking snippet, target file, placement, and framework-specific code for an existing Clarvivo API key or project.

ParametersJSON Schema
NameRequiredDescriptionDefault
apiKeyNoPublic Clarvivo tracking API key
frameworkYesTarget framework
projectIdNoClarvivo project ID

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds the useful detail that it returns exact snippet/file/placement/code, but it does not clarify behavior when neither apiKey nor projectId is provided, or whether one of them is required despite only framework being marked required in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the core output terms (snippet, target file, placement, framework-specific code). It is concise and informative, though it could be slightly clearer about the apiKey/projectId fallback behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only retrieval tool with no output schema, the description communicates the main purpose and result content. It does not specify what happens if only framework is provided without an apiKey or projectId, nor does it mention whether the result is language-specific or how to handle multiple matches. The absence of output schema increases the burden on the description, which is only partially met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a description. The tool description adds that the parameters refer to an existing API key or project, reinforcing the relationship between apiKey/projectId and the returned snippet, but does not add new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and names the exact resources and outputs: tracking snippet, target file, placement, and framework-specific code. It clearly identifies the tool as retrieving install instructions for an existing Clarvivo API key or project, distinguishing it from sibling tools like verify_installation or list_projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the tool to get framework-specific installation details, and the sibling names suggest alternatives like verify_installation for post-install checks. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention prerequisites such as needing either apiKey or projectId to exist beforehand.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsGet compact traffic statsA
Read-onlyIdempotent

Return a small pre-summarised traffic overview, active visitor count, and top five pages/referrers instead of raw daily analytics rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoReporting window from 1 to 90 days
projectIdYesClarvivo project ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered by structured data. The description adds useful behavioral context beyond those annotations: the response is pre-summarised, contains an active visitor count, and limits pages/referrers to the top five rather than returning raw rows. This helps set expectations without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that front-loads the main purpose and packs in the key output characteristics without filler. Every phrase earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only stats tool with fully documented parameters and safety annotations, the description provides enough output shape detail—active visitors, top pages/referrers, pre-summarised nature—to let an agent invoke it correctly and interpret the result. The lack of an output schema is adequately compensated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both projectId and days fully documented including defaults, min/max, and types. The description adds no parameter-level meaning beyond the schema, so the baseline score applies; it neither harms nor enhances parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with the specific verb 'Return' and names a precise resource: a small pre-summarised traffic overview with active visitor count and top five pages/referrers. It also contrasts itself with raw daily analytics rows, making its purpose unmistakable and distinguishing it from the analytics-related siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'instead of raw daily analytics rows' gives clear contextual guidance about when to reach for this tool: when a compact summary is desired rather than granular daily data. However, it does not explicitly name an alternative tool or specify when not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_funnelsList conversion funnelsA
Read-onlyIdempotent

List the project's funnels and ordered steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesClarvivo project ID

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint and idempotentHint annotations already cover the safety profile. The description adds that funnels include 'ordered steps,' but it does not elaborate on the ordering semantics, response shape, or pagination. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that front-loads the action and object. There is no wasted wording or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only, single-parameter list tool, the description plus the readOnly and idempotent annotations are nearly sufficient. It clearly states what is returned (funnels and ordered steps). A small gap remains around the exact response format and what 'ordered' means, but nothing essential is missing for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter projectId is fully described in the schema as 'Clarvivo project ID' (100% coverage). The description adds no additional parameter-specific meaning, so it does not need to compensate for missing schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with the specific verb 'List' and names the resource ('the project's funnels') plus a distinguishing detail ('and ordered steps'). This clearly separates it from siblings like create_funnel and list_projects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied by the verb and resource: an agent would use this when it needs to view existing funnels and their steps. However, the description does not explicitly state when to use this over alternatives or call out exclusions, leaving the guidance implicit rather than direct.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_projectsList Clarvivo projectsA
Read-onlyIdempotent

List accessible Clarvivo projects with their IDs, domains, and public tracking API keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds value by noting 'accessible' projects (scoping) and specifying the response fields (IDs, domains, public tracking API keys), which clarifies what the agent can expect without needing an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly written sentence that front-loads the core action and resource before listing the returned fields. Every word earns its place; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list operation, the description fully covers what the tool does and what it returns. Annotations cover safety, and no output schema is needed because the description enumerates the exact fields. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing to document. The baseline for zero-parameter tools is 4, and the description correctly avoids inventing parameter details. It does not need to explain parameter semantics because none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('accessible Clarvivo projects') and enumerates the exact returned fields: IDs, domains, and public tracking API keys. This clearly distinguishes it from sibling tools like get_stats or create_funnel, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: call this when you need an enumeration of accessible projects and their identifiers. However, it does not explicitly state when to use it over alternatives or mention any exclusions, so the guidance is only implicit, not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

setup_analyticsSet up Clarvivo analyticsA
Idempotent

Detect this repository's framework, reuse or create the Clarvivo project for a domain, and return the exact file and code edit. Use this first when asked to add analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoProject name; defaults to a readable name derived from domain
domainYesProduction hostname, for example example.com
frameworkNoOptional override such as next-app, next-pages, vite, astro, sveltekit, nuxt, remix, gatsby, docusaurus, or static-html

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With idempotentHint=true, the description does not contradict the annotation. It adds meaningful behavioral context by disclosing that the tool may reuse or create a project and that its result is an exact file and code edit rather than a vague success message. This goes beyond what the annotation alone conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences deliver the core action, the return value, and the tool-selection guidance with no filler. The most important operational detail, when to use it, is placed at the end of the second sentence but still earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description usefully states what is returned: an exact file and code edit. Combined with the schema-covering parameters and clear usage guidance, the tool is sufficiently specified for an agent to invoke it correctly. Minor gaps such as not describing the exact return shape prevent a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents domain, name, and framework clearly. The description adds little parameter-level meaning beyond mentioning 'for a domain,' so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb chain with a clear resource: detect the repository's framework, reuse or create the Clarvivo project, and return an exact file/code edit. It is clearly distinct from siblings such as get_install_snippet or verify_installation, and the phrase 'Use this first when asked to add analytics' removes ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use this tool first when asked to add analytics, establishing a clear trigger condition and ordering relative to siblings. It does not enumerate when-not-to-use cases or alternatives, but the guidance is still unambiguous for the primary scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_installationVerify analytics installationA
Read-onlyIdempotent

Check Clarvivo's proof-of-life receipt to confirm that traffic from the deployed site has arrived, without reading analytics or sending synthetic events.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesClarvivo project ID

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, lowering the burden. The description adds useful behavioral context: it uses a 'proof-of-life receipt' rather than reading analytics or sending synthetic traffic, which clarifies the mechanism and reinforces the safe, non-intrusive nature of the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-constructed sentence that front-loads the core action and includes the key exclusions. Every word contributes meaning; there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with safety-critical annotations already present, the description sufficiently covers purpose, mechanism, and exclusions. No output schema exists, so no return-value details are required; the description gives enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — the only parameter, projectId, is described as 'Clarvivo project ID' in the schema. The description does not add parameter-level detail beyond that, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb ('Check') tied to a concrete resource ('Clarvivo's proof-of-life receipt') and states exactly what it confirms: traffic from the deployed site has arrived. Also differentiates itself from siblings by explicitly excluding analytics reads and synthetic event generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes clear when this tool is appropriate: to verify installation without touching analytics or emitting synthetic events. This implies when not to use it (e.g., use get_stats for analytics reads), though it does not explicitly name alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_revenueVerify payment revenueA
Read-onlyIdempotent

Check payment webhook proof-of-life and attribution coverage without returning revenue amounts or customer data.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdYesClarvivo project ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds meaningful behavioral context by guaranteeing that no revenue amounts or customer data are returned, which is an important privacy/redaction behavior beyond what annotations alone convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that front-loads the primary action and includes the key limitation immediately. Every phrase contributes meaningful information with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool, the description is nearly complete. It covers intent, scope, and safety constraints; the only minor gap is that it does not explicitly state what the tool returns (e.g., a boolean or status object), which would help since there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, with projectId already described as 'Clarvivo project ID'. The description does not add further parameter-level detail, so the schema carries the semantic weight and the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Check') and resource ('payment webhook') and adds two precise dimensions: proof-of-life and attribution coverage. It also explicitly excludes returning revenue amounts or customer data, which clearly differentiates it from revenue-related siblings like connect_revenue.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys clear context: use this when you need to verify payment webhook liveness and attribution coverage. It does not explicitly name alternatives or state when not to use it, but the scope is specific enough to distinguish it from sibling tools like verify_installation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct responsibility: snippet retrieval, installation verification, project listing, stats, setup, revenue connection, revenue verification, event registration, funnel creation, alert creation, and funnel listing. The slight overlap between setup_analytics and get_install_snippet is differentiated by their detection vs retrieval purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern using clear verbs (get, verify, list, setup, connect, add, create) and snake_case. There is no mixing of conventions or ambiguous verbs.

Tool Count5/5

11 tools is well within the ideal range for a domain covering analytics setup, events, funnels, and alerts. Each tool provides a unique capability without redundancy or bloat.

Completeness4/5

The tool surface covers the full analytics lifecycle from installation and verification through stats, revenue, events, funnels, and alerts. Minor gaps exist in update/delete operations for configured items, but these are not critical for the primary use case.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    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
    41
    1
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Provides AI agents with hands-on control of Google SEO and analytics tools including Search Console, GA4, Tag Manager, Indexing API, and PageSpeed Insights, with self-configuring OAuth2.
    33
    29
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cracked-collective/clarvivo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server