---
name: zerply
description: Connect to and use Zerply via MCP for AI visibility analytics, SEO content management, and keyword research. Use when the user asks about Zerply data, brand visibility in ChatGPT/Claude/Perplexity, AI crawler traffic, blogs, landing pages, keyword clusters, or connecting Cursor/Claude/ChatGPT to Zerply.
---

# Zerply

Zerply is an agentic AI SEO platform. Its MCP server lets agents query analytics, manage Foundry content, and run keyword research against a user's workspace.

## Connect

| Field | Value |
|-------|-------|
| Server URL | `https://api.zerply.ai/mcp` |
| Transport | Streamable HTTP |
| Auth | OAuth 2.0 (browser consent on first use) |
| Server card | `https://zerply.ai/.well-known/mcp/server-card.json` |
| MCP setup guide | `https://zerply.ai/docs/mcp/` |
| Agent skill guide | `https://zerply.ai/docs/agent-skill/` |
| Manage connections | `https://app.zerply.ai/mcp` |

## Every session

1. Call `get_my_teams` — list workspaces the user can access.
2. Confirm `team_id` before any team-scoped call. Never guess IDs.
3. If auth fails, send the user to the setup guide or connection manager.

## AI visibility & traffic

### `get_ai_visibility_analytics`

Brand and competitor visibility across LLM answer engines.

Key params: `team_id`, `from_date`/`to_date` (`YYYY-MM-DD`, default last 7 days), `group_by` (`day`/`week`/`month`), `prompt_id`, `brand_filter`, `competitor_filter`, `llm_id`, `is_competitor`.

Use for share of voice, citation trends, prompt-level visibility.

### `get_ai_traffic_analytics`

AI crawler traffic via Cloudflare (requires Cloudflare integration).

Key params: `team_id`, date range, `bot_name` (`GPTBot`, `ClaudeBot`, `PerplexityBot`, `OAI-SearchBot`, `GoogleOther`, etc.), `category`, `operator`.

Use for which AI bots crawl the site and top paths.

### `get_llm_responses`

Raw LLM responses for tracked prompts.

Key params: `team_id`, `llm_ids`, `prompt_ids`, `has_web_search`, date range, `page`/`per_page`.

Use to audit what models said about the brand. Paginate large result sets.

## Content

### Blogs

`get_blogs`, `get_blog`, `create_blank_blog`, `update_blog_content`, `update_blog_meta`, `update_blog_featured_image`, `publish_blog`, `unpublish_blog`, `delete_blog`

### Landing pages

`get_landing_pages`, `get_landing_page`, `get_landing_page_templates`, `create_blank_landing_page`, `update_landing_page`, `update_landing_page_meta`, `publish_landing_page`, `unpublish_landing_page`, `delete_landing_page`

### Foundry

`get_foundry_settings` — publishing hub branding, paths, tracking (no secrets).

### Content workflows

**List:** `get_my_teams` → `get_blogs` or `get_landing_pages`

**Publish blog:** `create_blank_blog` → `update_blog_meta` → `update_blog_content` → confirm → `publish_blog`

**Publish landing page:** `get_landing_page_templates` (optional) → `create_blank_landing_page` → `update_landing_page` + `update_landing_page_meta` → confirm → `publish_landing_page`

Confirm `delete_*` and `publish_*` with the user. List content by name before editing when IDs are unknown.

## Keywords

`get_keyword_clusters` — list reports for a team.

`get_keyword_cluster_details` — full cluster items (`team_id` + `report_id` from clusters list).

If no clusters exist, suggest running keyword research in Zerply first. Summarize by theme/intent; tie opportunities to content workflows above.

## Guidelines

- Dates must be `YYYY-MM-DD`.
- Summarize MCP results with date range, filters, and team name.
- Do not expose OAuth tokens unless debugging.
- Empty AI traffic data usually means Cloudflare is not connected.
