{
 "voice": "One card of the book.",
 "agent": {
  "slug": "convalytics",
  "name": "convalytics",
  "specialty": "data",
  "description": "Read-only analytics for Convex apps, queryable via MCP from Claude, Cursor, and other clients.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-11-01T23:10:56.771Z",
  "card": "/agent/convalytics",
  "url": "https://allagents.app/agent/convalytics",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://api.convalytics.dev/mcp",
   "site": "https://convalytics.dev/mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://convalytics.dev/mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 58,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-11-02",
   "total": 15,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "list_projects",
     "description": "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."
    },
    {
     "name": "get_usage",
     "description": "Return the current month's custom-event usage, monthly quota, retention days, and plan name for the team."
    },
    {
     "name": "top_pages",
     "description": "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…"
    },
    {
     "name": "top_referrers",
     "description": "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…"
    },
    {
     "name": "pageviews_count",
     "description": "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)…"
    },
    {
     "name": "events_count",
     "description": "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…"
    },
    {
     "name": "recent_events",
     "description": "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…"
    },
    {
     "name": "user_activity",
     "description": "Composite snapshot of a specific user's activity on a project. Returns an identity block (visitorId, userEmail, userName, firstSeen, lastSeen), total…"
    },
    {
     "name": "weekly_digest",
     "description": "Composite snapshot of a project's web analytics over a lookback window. Returns unique visitors, pageviews, sessions, bounce rate, average session duration…"
    },
    {
     "name": "list_funnels",
     "description": "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…"
    },
    {
     "name": "get_funnel",
     "description": "Return the full definition of one funnel by id: name, description, ordered steps, and conversion window."
    },
    {
     "name": "create_funnel",
     "description": "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…"
    },
    {
     "name": "update_funnel",
     "description": "Patch an existing funnel. Any subset of name/description/steps/conversionWindowMs. Refuses updates on deleted funnels."
    },
    {
     "name": "delete_funnel",
     "description": "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…"
    },
    {
     "name": "compute_funnel",
     "description": "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…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://api.convalytics.dev/mcp",
   "answers": true,
   "checked": "2026-11-02T06:49:03.450Z",
   "http": null,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-11-02T06:49:03.450Z",
     "since": "2026-11-02T06:49:03.450Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-11-02T06:49:03.450Z",
    "since": "2026-11-02T06:49:03.450Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": null,
   "checked": "2026-11-02T06:49:03.450Z",
   "proof": "badge",
   "verified_as": "mcp",
   "last_answer_at": "2026-11-02T06:49:03.450Z",
   "last_ms": null,
   "checked_at": "2026-11-02T06:05:11.564Z"
  }
 }
}