ChampionsDevelopers

Champions MCP server

Give Claude, ChatGPT, Cursor or any MCP-capable agent a live view of your tracked contacts, job changes and plays - and let it add contacts, work plays and tune your ICP. Same permissions and workspace isolation as the REST API.

Server URL
https://mcp.getchampions.io
Streamable HTTP · OAuth 2.1 sign-in (recommended) or a workspace API key as the bearer token

Connect

Claude (web & desktop)

  1. Open Settings → Connectors and click Add custom connector.
  2. Name it Champions and paste https://mcp.getchampions.io. Leave client id and secret empty.
  3. Click Connect. You'll be sent to Champions to sign in with your usual magic link, pick a workspace and allow access.

Claude Code

claude mcp add --transport http champions https://mcp.getchampions.io
# then, inside Claude Code:
/mcp   # → Champions → Authenticate

Cursor, Windsurf, ChatGPT, custom agents

Any client that speaks Streamable HTTP works. If your client can't run the OAuth flow, create an API key in Settings → API & integrations and send it as a bearer token:

{
  "mcpServers": {
    "champions": {
      "url": "https://mcp.getchampions.io",
      "headers": { "Authorization": "Bearer chp_live_…" }
    }
  }
}

Tools

21 tools. Read-only tools never spend credits; start_refresh is the only one that does, and it requires an explicit confirmation.

get_workspace
read
Who you are connected as, credit balance and price per check, refresh schedule and the next scheduled refresh.
list_contacts
read
The people in the workspace with tracking status and, when tracked, their current company/title and last change. Filter by tracking_status (needs_linkedin, tracked, not_found…), profile status (moved, promoted, left, same_role), segment, owner, account_id, or free-text q.
get_contact
read
Full detail for one contact: position history, detected changes, ICP fit evaluations, emails and plays.
add_contacts
write
Upsert up to 1,000 contacts (and optionally the accounts they belong to). Contacts with a LinkedIn URL start tracking right away; the rest wait in Needs LinkedIn. Dedupes on crm_id, then LinkedIn URL, then email, then name+company.
update_contact
write
Give a contact its LinkedIn URL (resolves Needs LinkedIn / Not found and starts tracking) or exclude it from tracking.
list_accounts
read
Companies in the CRM with contact counts (total, tracked, moved).
get_account
read
One account with all its contacts.
list_changes
read
Detected moves, promotions, title changes (lateral/demotion, no play), departures and unreachable profiles, newest first. Use since (ISO timestamp) for 'what changed this week'.
list_plays
read
Plays are the recommended action for a change: direct (account and contact fit), referral (account fit only), watch (contact fit only), promotion, archive, churn_risk (a contact at a customer account left or moved away — for CS). Open plays first. Each play carries the person's new role, the old relationship, the best email and a suggested opener.
get_play
read
One play by id.
update_play
write
Move a play through open → contacted → replied → meeting, mark it not_relevant, or attach notes.
get_icp
read
Active account and contact fit rules. Account rules: industries, employee range, HQ countries/regions, keywords, funding stages, exclusions. Contact rules: title include/exclude, seniority, functions.
update_icp
write
Replace the account and/or contact rules. Read get_icp first and send the full rule object back with your edits; each changed set becomes a new version.
list_runs
read
Recent refresh runs with status and totals (moved, promoted, credits charged).
get_run
read
Status and live totals of one run; poll it while a run is in progress.
estimate_refresh
read
How many profiles a 'refresh now' would check and what it costs in credits/cents. Profiles checked in the last 24h are skipped. Always call this and confirm with the user before start_refresh.
start_refresh
write
Queue a manual refresh of every tracked profile not checked in the last 24 hours. Spends one credit per profile - confirm with the user first (see estimate_refresh). Returns the existing run if one is already active.
resume_run
write
Resume a run paused for lack of credits after topping up.
cancel_run
write
Cancel a queued, running or paused run.
update_settings
write
Change the workspace name or refresh cadence (weekly, biweekly, monthly, quarterly), day and timezone.
delete_contact
write
Permanently delete a contact and, if nobody else references the person, everything held about them. Irreversible - confirm with the user.

Things to know

  • One connection = one workspace. Members of several workspaces choose at sign-in; add a second connector for another workspace.
  • Tokens expire after an hour and refresh silently for 30 days. Disconnect any time from Settings → API & integrations → Connected apps.
  • Rate limits are shared with the REST API: 600 reads and 120 writes per minute per workspace.
  • Questions: [email protected]