convalytics

Read-only analytics for Convex apps, queryable via MCP from Claude, Cursor, and other clients.

사용해야 할까요

품질 및 안전성

A
설명 품질
96%
스키마 완전성
88%
이름 품질
91%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringupdate_funnel에서
  • LOWTool 'get_usage' description lacks action verbget_usage에서
  • LOWTool 'get_funnel' description lacks action verbget_funnel에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,189토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.49%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "convalytics": {
      "url": "https://api.convalytics.dev/mcp"
    }
  }
}

원격 엔드포인트

https://api.convalytics.dev/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (15)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢list_projects

List all Convalytics projects on the team this token belongs to. Useful when the agent needs to confirm the project it's querying against. No arguments.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_usage

Return the current month's custom-event usage, monthly quota, retention days, and plan name for the team.

입력 스키마

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢top_pages(project, since, until, limit, user)

Return the top pages for a specific project, ranked by views in a time window. Default window is the last 7 days. Use list_projects first if you don't know the project name. Returns path, views, uniqueVisitors, and percentage of total views for each page. Pass `user` to see pages a specific visitor hit.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of pages to return. Default 20, max 50."
    },
    "user": {
      "type": "string",
      "description": "Optional. Filter to one visitor/user. Accepts userEmail (case-insensitive) or visitorId (exact). For the full per-user snapshot prefer user_activity."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢top_referrers(project, since, until, limit)

Return the top referring hosts for a specific project, ranked by visit count in a time window. Includes '(direct)' for visits with no referrer. Default window is the last 7 days.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of referrers to return. Default 10, max 50."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢pageviews_count(project, since, until, user)

Count page views for a specific project in a time window. Page views are the automatic hits captured by the browser script tag (separate from custom events). Use this for web-traffic questions like 'how many pageviews in the last 24 hours'. Default window is the last 7 days. Pass `user` to scope to one visitor.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    },
    "user": {
      "type": "string",
      "description": "Optional. Filter to one visitor/user. Accepts userEmail (case-insensitive) or visitorId (exact). For the full per-user snapshot prefer user_activity."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢events_count(project, name, since, until, user)

Count CUSTOM PRODUCT events for a specific project in a time window, optionally filtered to one event name and/or one user. Custom events are emitted by explicit analytics.track() calls in app code (signup_completed, payment_succeeded, etc.). This does NOT count page views — use pageviews_count or weekly_digest for those. Returns count, unique visitors, and a `truncated` flag if the scan hit the maximum scan size.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "name": {
      "type": "string",
      "description": "Optional event name to filter by (e.g. 'signup_completed'). If omitted, counts all custom events in the window. Do NOT pass 'page_view' here — page views are in a separate table."
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    },
    "user": {
      "type": "string",
      "description": "Optional. Filter to one visitor/user. Accepts userEmail (case-insensitive) or visitorId (exact). For the full per-user snapshot prefer user_activity."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢recent_events(project, name, limit, redact, user)

Return the most recent custom events for a specific project, optionally filtered to one event name and/or one user. PII (userEmail, userName, props) is redacted by default; pass redact: false to include them.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "name": {
      "type": "string",
      "description": "Optional event name to filter by (e.g. 'signup_completed'). Omit to return events of any name."
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of events to return. Default 20, max 100."
    },
    "redact": {
      "type": "boolean",
      "description": "If true (default), userEmail/userName are null and props is {}. Set to false to include them."
    },
    "user": {
      "type": "string",
      "description": "Optional. Filter to one visitor/user. Accepts userEmail (case-insensitive) or visitorId (exact). For the full per-user snapshot prefer user_activity."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢user_activity(project, user, since, until)

Composite snapshot of a specific user's activity on a project. Returns an identity block (visitorId, userEmail, userName, firstSeen, lastSeen), total pageviews, total custom events, session count, top pages this user visited, their most-fired event names, and their 20 most recent events with props. Use this for 'how is [email protected] using my app?' style questions — one call, full picture. For ad-hoc drill-down (just a count, just recent events) pass `user` to the individual tools instead. Default window is the last 7 days.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "user": {
      "type": "string",
      "description": "User identifier. Accepts userEmail (case-insensitive, e.g. '[email protected]') or visitorId (the exact string passed as userId on the original track() call)."
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    }
  },
  "required": [
    "project",
    "user"
  ],
  "additionalProperties": false
}
🟢weekly_digest(project, days, compare)

Composite snapshot of a project's web analytics over a lookback window. Returns unique visitors, pageviews, sessions, bounce rate, average session duration, top 5 pages, top 5 referrers, total custom events, and top 5 event names. Includes period-over-period comparison against the prior equal-length window unless compare: false. Prefer this over chaining top_pages + top_referrers + events_count when the agent just wants to report on the week.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "days": {
      "type": "number",
      "description": "Lookback window in days, 1 to 90. Default 7."
    },
    "compare": {
      "type": "boolean",
      "description": "Include period-over-period comparison against the prior equal-length window. Default true. Set false for faster response when only current numbers matter."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢list_funnels(project)

List active funnels defined on a project. A funnel is a saved ordered sequence of steps (events or pageview paths) that Convalytics computes step-by-step conversion for. Soft-deleted funnels are excluded.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    }
  },
  "required": [
    "project"
  ],
  "additionalProperties": false
}
🟢get_funnel(funnelId)

Return the full definition of one funnel by id: name, description, ordered steps, and conversion window.

입력 스키마

{
  "type": "object",
  "properties": {
    "funnelId": {
      "type": "string",
      "description": "Funnel id from list_funnels or create_funnel."
    }
  },
  "required": [
    "funnelId"
  ],
  "additionalProperties": false
}
🟡create_funnel(project, name, description, steps, conversionWindowMs)

Create a new funnel on a project. Steps are 2–10 ordered events or pageview paths. conversionWindowMs caps how long a visitor has between consecutive steps (default 7 days); this is the step-to-step limit, without which a funnel is just event co-occurrence. Returns { id } on success.

입력 스키마

{
  "type": "object",
  "properties": {
    "project": {
      "type": "string",
      "description": "Project name (case-insensitive, e.g. 'slopbench') or project id from list_projects."
    },
    "name": {
      "type": "string",
      "description": "Human-readable name."
    },
    "description": {
      "type": "string",
      "description": "Optional longer description."
    },
    "steps": {
      "type": "array",
      "minItems": 2,
      "maxItems": 10,
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "event",
              "pageview"
            ],
            "description": "'event' for a custom analytics.track() event, 'pageview' for a page-path match."
          },
          "match": {
            "type": "string",
            "description": "Event name (for kind='event') or exact pageview path (for kind='pageview')."
          },
          "label": {
            "type": "string",
            "description": "Optional friendly display name."
          }
        },
        "required": [
          "kind",
          "match"
        ],
        "additionalProperties": false
      },
      "description": "Ordered list of 2–10 steps. Visitors must hit them in order."
    },
    "conversionWindowMs": {
      "type": "number",
      "description": "Max ms between consecutive steps. Default 7 days (604800000). Bounds: 60000 (1 min) to 7776000000 (90 days)."
    }
  },
  "required": [
    "project",
    "name",
    "steps"
  ],
  "additionalProperties": false
}
🟡update_funnel(funnelId, name, description, steps, conversionWindowMs)

Patch an existing funnel. Any subset of name/description/steps/conversionWindowMs. Refuses updates on deleted funnels.

입력 스키마

{
  "type": "object",
  "properties": {
    "funnelId": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "steps": {
      "type": "array",
      "minItems": 2,
      "maxItems": 10,
      "items": {
        "type": "object",
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "event",
              "pageview"
            ],
            "description": "'event' for a custom analytics.track() event, 'pageview' for a page-path match."
          },
          "match": {
            "type": "string",
            "description": "Event name (for kind='event') or exact pageview path (for kind='pageview')."
          },
          "label": {
            "type": "string",
            "description": "Optional friendly display name."
          }
        },
        "required": [
          "kind",
          "match"
        ],
        "additionalProperties": false
      }
    },
    "conversionWindowMs": {
      "type": "number"
    }
  },
  "required": [
    "funnelId"
  ],
  "additionalProperties": false
}
🔴delete_funnel(funnelId)

Soft delete a funnel. The row is retained with status='deleted' and excluded from list/get/compute. Idempotent — calling twice is a no-op. Use if the funnel is obsolete; the record is kept for audit and cannot be undone from MCP.

입력 스키마

{
  "type": "object",
  "properties": {
    "funnelId": {
      "type": "string"
    }
  },
  "required": [
    "funnelId"
  ],
  "additionalProperties": false
}
🟢compute_funnel(funnelId, since, until)

Run a funnel over a time window and return per-step visitor count, conversion from previous step, conversion from start, and average time to convert between steps. Returns `truncated` flags if the scan cap was hit.

입력 스키마

{
  "type": "object",
  "properties": {
    "funnelId": {
      "type": "string"
    },
    "since": {
      "type": "number",
      "description": "Start of window as unix milliseconds. Defaults to 7 days ago."
    },
    "until": {
      "type": "number",
      "description": "End of window as unix milliseconds. Defaults to now."
    }
  },
  "required": [
    "funnelId"
  ],
  "additionalProperties": false
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 15개
검증됨버전이 기록되지 않음도구 15개
검증됨버전이 기록되지 않음도구 15개