kadenzo-mcp
# Kadenzo MCP server
Connect any MCP-capable AI agent — **Claude Desktop, Cursor, ChatGPT, Codex** — to
[Kadenzo](https://kadenzo.app) and let it schedule, manage, and analyze social posts
across **11 networks** (Instagram, TikTok, X, LinkedIn, YouTube, Facebook, Pinterest,
Threads, Bluesky, Mastodon, Telegram). It wraps the Kadenzo Studio public API as
[Model Context Protocol](https://modelcontextprotocol.io) tools, so your agent doesn't
just *draft* content — it can **ship** it.
## Tools
| Tool | What it does |
|------|--------------|
| `list_accounts` | List connected accounts (ids + platforms) |
| `schedule_post` | Schedule a post for a future time (+ `validate_only`, `options`, `thread`) |
| `list_posts` | List your posts, newest first (filter by status, paginate) |
| `get_post` | One post: status, per-channel outcome, options/thread |
| `update_post` | Edit a not-yet-published post |
| `cancel_post` | Cancel a scheduled post before it publishes |
| `upload_media` | Upload a local image/video file, get a URL for `media_urls` |
| `get_account_analytics` | Recent posts + engagement metrics for an account |
| `get_post_analytics` | Per-channel metrics for a post you scheduled |
| `generate_content` | Generate post copy for a platform from a topic ("generate then schedule") |
| `get_best_times` | Personalized best posting times for an account (Professional+) |
| `list_mentions` | Social-listening mentions (who's talking about your keywords) |
| `post_comment` | Post a comment/reply to your post (instagram/facebook/linkedin) |
| `list_keywords` | List the social-listening keywords you track |
| `add_keyword` | Track a new listening keyword (per-plan caps apply) |
| `update_keyword` | Edit a keyword, or pause/resume it with `is_active` |
| `delete_keyword` | Stop tracking a keyword |
| `get_listening_analytics` | Mention volume, platform split, sentiment over time |
| `get_share_of_voice` | Brand vs competitor Share of Voice report (Enterprise) |
| `list_dm_automations` | DM automation rules + funnel stats + contact usage |
| `create_dm_automation` | Create a DM automation rule (comment→DM, keyword DM, DM links, …) |
| `update_dm_automation` | Edit a rule, or pause/resume it with `active` |
| `delete_dm_automation` | Delete a DM automation rule |
## Setup
1. Generate an API key in Kadenzo: **Settings → API keys** (`studio.kadenzo.app/dashboard/settings?section=api`). The API is available on paid plans.
2. Add the server to your MCP client. **Claude Desktop** (`claude_desktop_config.json`) / **Cursor** (`~/.cursor/mcp.json`):
```json
{
"mcpServers": {
"kadenzo": {
"command": "npx",
"args": ["-y", "kadenzo-mcp"],
"env": { "KADENZO_API_KEY": "kdz_live_xxxxxxxxxxxxxxxxxxxxxxxx" }
}
}
}
```
3. Restart the client. Ask your agent things like *"list my connected accounts,"* *"schedule this to X and Bluesky tomorrow at 9am,"* or *"how did my last Instagram posts perform?"*
## Notes
- Posts are **schedule-only** — provide a future `scheduled_for`; they publish automatically.
- `KADENZO_API_BASE` overrides the API base URL (default `https://studio.kadenzo.app/api/v1`).
- Requires Node 18+ (uses the built-in `fetch`/`FormData`).
- Learn more / full API reference: <https://studio.kadenzo.app/developers> · <https://kadenzo.app>
TDQS
Scored across 13 tools
Each tool targets a distinct action—content generation, scheduling, analytics, listening, and engagement—with no functional overlap. Even similar tools like get_account_analytics and get_post_analytics are clearly differentiated by scope and usage guidance.
All tool names follow a consistent verb_noun snake_case pattern (e.g., generate_content, list_accounts, post_comment). Verbs like get/list are appropriately used for singles vs. multiples, and the pattern is uniform across all 13 tools.
13 tools cover the full social media scheduling lifecycle—content creation, media upload, scheduling, updates, cancellation, analytics, and social listening—without redundancy. The count feels well-scoped for a server of this purpose.
Core workflows (schedule, update, cancel, analytics) are fully covered. Minor gaps exist (e.g., no media deletion or account creation), but they are not essential for the primary scheduling use case and would likely fall outside the server's intended scope.