Competiflow MCP Server
MCP (Model Context Protocol) server for Competiflow. Use competitor monitoring as tools in Cursor, Claude Desktop, Windsurf, and any MCP-compatible client.
Track competitors, run discovery, read the interpreted change feed, triage items, and pull workspace digests without leaving your AI client.
Setup
Create an API key in the Competiflow dashboard under API keys, then add the server to your client config. COMPETIFLOW_API_KEY is the only variable you need.
Cursor
Add to ~/.cursor/mcp.json:
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
Available Tools
Every tool declares MCP annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), so clients can ask before running the delete_* tools.
Prompts
Without workspace_id, each prompt starts with list_workspaces.
Resources
Typical flow
list_workspaces or create_workspace (optional product_url improves competitive context on changes).
add_competitor with a homepage URL.
get_competitor until discovery_status is completed.
refresh_workspace or check_monitor to pull fresh data.
list_changes with since=7d and min_severity, or get_digest for a summary.
get_change with include when you need evidence.
update_change to acknowledge or dismiss items.
Discovery and idempotency
add_competitor starts discovery in the background and returns an acknowledgement, not the finished result. Poll get_competitor until discovery_status is completed.
A workspace runs one discovery at a time. Posting the same homepage URL again returns the existing competitor without starting a second run. If a different competitor is still discovering, the call returns 409 discovery_in_progress with active_competitor_id so you know which one to poll.
Evidence with include
get_change and get_monitor accept an include array to attach the underlying capture in one call:
For a change the capture is the post-change page. For a monitor it is the latest successful check, which is the current baseline.
Delete versus pause
delete_monitor, delete_competitor, and delete_workspace are permanent. They remove the record along with its check runs, snapshots, and changes. To stop checks while keeping intel history, call update_monitor, update_competitor, or update_workspace with status: paused instead.
delete_workspace returns 409 discovery_in_progress while a competitor in the workspace is still being discovered.
Agent guidelines (for AI clients)
- Poll discovery, do not assume: after
add_competitor, poll get_competitor until discovery_status is completed before reading changes. On 409, poll the active_competitor_id from the error.
- Filter the feed: pass
since (1d, 7d, 30d, or ISO8601), min_severity, monitor_type (homepage, blog, docs, changelog, pricing), and review_status to list_changes instead of pulling everything. Use meta.counts for inbox totals and next_cursor to page.
- Interpretation fields: changes and digest items expose
why_it_matters for competitive context. recommended_action was removed from the API.
- Fetch evidence on demand: only add
include to get_change or get_monitor when you need the underlying capture. It adds payload.
- Prefer pause over delete: default to
status: paused when a user wants to stop a monitor. Reserve delete_* for permanent removal, since it drops history.
How it works
The server translates each tool call into a Competiflow v1 API request and returns structured JSON. Your agent sees interpreted changes, severity, and why it matters instead of raw page scrapes.
Environment variables
Get an API key
Sign up at competiflow.com and create a key under API keys.
Development
npm test builds and runs a smoke test that starts the server without a key, the way directory scanners do, and checks the tools, annotations, prompts, and resources.
License
MIT