Competitor Tracker & Co. Docs
MCP

MCP tools

The catalog of ~50 tools the Competitor Tracker & Co. MCP server exposes: competitors, changes, snapshots, labels, dispatches and org management, with params.

The MCP server exposes 50 tools across the Competitor Tracker & Co. domains. Each tool forwards your credential to the API, so the scope it names is the scope your token or key must carry. Destructive tools require confirm: true before they run.

See Model Context Protocol for setup and connection details.

Read tools

list_competitors

Read-only

List the current organization's competitor subscriptions, newest first. Returns a page of competitors with their tracked categories and labels, plus a nextCursor for paging. Requires the competitors:read scope.

ParameterRequiredDescription
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum subscriptions to return (1–200, default 50).
searchnoFree-text search over a competitor's name, display name, and URL (case-insensitive substring).

get_competitor

Read-only

Get a single competitor subscription belonging to the current organization by id, including its tracked categories, labels, and billing summary. Requires the competitors:read scope.

ParameterRequiredDescription
idyesThe competitor subscription id.

get_competitor_timeline

Read-only

Get the chronological activity timeline for a competitor (crawls, snapshots, and detected changes). Requires the competitors:read scope.

ParameterRequiredDescription
idyesThe competitor subscription id.

list_pages

Read-only

List the tracked pages for a competitor subscription, optionally filtered by page-type slug (e.g. pricing, product). Requires the pages:read scope.

ParameterRequiredDescription
competitorIdyesThe competitor subscription id whose pages to list.
pageTypenoFilter to these page-type slugs, e.g. ['pricing', 'product']. Unknown slugs match nothing.

get_snapshot

Read-only

Get a single snapshot by id, including signed URLs for its HTML, markdown, and screenshot assets plus the tracked page it was captured from. Requires the snapshots:read scope.

ParameterRequiredDescription
idyesThe snapshot id.

list_snapshots

Read-only

List the snapshots captured for a tracked page, newest first, with a nextCursor for paging. Requires the snapshots:read scope.

ParameterRequiredDescription
trackedPageIdyesThe tracked page id whose snapshots to list.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum snapshots to return (1–200, default 50).

list_org_changes

Read-only

List the org-wide feed of detected changes across every actively subscribed competitor, newest first. Filter by category, priority, and a [since, until) detection window, or pass count: true for aggregate totals instead of a page of rows. Requires the changes:read scope.

ParameterRequiredDescription
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum changes to return (1–200, default 50).
categoriesnoFilter to these change categories, e.g. ['pricing_changes', 'product_changes'].
prioritiesnoFilter to these priorities ('high', 'medium', 'low').
sincenoOnly changes detected at or after this ISO-8601 timestamp (with offset).
untilnoExclusive upper bound; only changes detected before this ISO-8601 timestamp.
countnoWhen true, return aggregate totals ({ total, byPriority, byCategory }) over the window instead of a page of rows.

list_competitor_changes

Read-only

List detected changes for a single subscribed competitor, newest first, with optional category, priority, and since filters. Requires the changes:read scope.

ParameterRequiredDescription
idyesThe competitor subscription id.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum changes to return (1–200, default 50).
categoriesnoFilter to these change categories, e.g. ['pricing_changes', 'product_changes'].
prioritiesnoFilter to these priorities ('high', 'medium', 'low').
sincenoOnly changes detected at or after this ISO-8601 timestamp (with offset).

list_snapshot_changes

Read-only

List detected changes attributed to a single snapshot, newest first, with optional category, priority, and since filters. Requires the changes:read scope.

ParameterRequiredDescription
idyesThe snapshot id.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum changes to return (1–200, default 50).
categoriesnoFilter to these change categories, e.g. ['pricing_changes', 'product_changes'].
prioritiesnoFilter to these priorities ('high', 'medium', 'low').
sincenoOnly changes detected at or after this ISO-8601 timestamp (with offset).

list_labels

Read-only

List the current organization's labels, newest first. Returns a page of labels with their colors, plus a nextCursor for paging. Requires the labels:read scope.

ParameterRequiredDescription
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum labels to return (1–200, default 50).
searchnoFree-text search over the label name (case-insensitive substring).

get_label

Read-only

Get a single label belonging to the current organization by id, including its name and color. Requires the labels:read scope.

ParameterRequiredDescription
idyesThe label id.

get_current_user

Read-only

Read the signed-in user's profile, including their name fields and account timestamps. Requires the account:read scope.

No parameters.

list_my_orgs

Read-only

List every organization the signed-in user is an active member of, with the role they hold and when they joined. Requires the account:read scope.

No parameters.

get_balance

Read-only

Get the current organization's coin balance and a forward-looking renewal summary (paid competitor counts and upcoming charges). Requires the billing:read scope.

No parameters.

list_transactions

Read-only

List the current organization's coin transactions, newest first. Returns a page of transactions with their deltas, running balance, and reason, plus a nextCursor for paging. Requires the billing:read scope.

ParameterRequiredDescription
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum transactions to return (1–200, default 50).

get_org

Read-only

Read the current organization, including the application domain it has claimed (null until one is set). Requires the org:read scope.

No parameters.

list_members

Read-only

List active members of the current organization. Returns a page of members with their roles, plus a nextCursor for paging. Requires the members:read scope.

ParameterRequiredDescription
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum members to return (1–200, default 50).

list_invites

Read-only

List pending invitations for the current organization, newest-first. Requires the invites:read scope.

No parameters.

list_api_keys

Read-only

List the current organization's API keys with their names, scopes, expiry, and last-used time. Secret values are never returned here. Requires the account:read scope.

No parameters.

list_api_key_usage

Read-only

List an API key's usage-log entries, newest first, with method, path, status, scope, and timestamp, plus a nextCursor for paging. Requires the account:read scope.

ParameterRequiredDescription
idyesThe API key id.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum usage entries to return (1–100, default 25).

list_dispatches

Read-only

List the current organization's notifications, each with its tracked labels, theme, and recipients. Requires the dispatches:read scope.

No parameters.

list_dispatch_deliveries

Read-only

List a notification's email delivery attempts, newest-first, with a nextCursor for paging. Requires the dispatches:read scope.

ParameterRequiredDescription
idyesThe notification id.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum delivery attempts to return (1–100, default 25).

list_webhooks

Read-only

List the current organization's webhooks with their destination URLs and active state. Requires the dispatches:read scope.

No parameters.

list_webhook_deliveries

Read-only

List a webhook's delivery attempts, newest-first, with a nextCursor for paging. Requires the dispatches:read scope.

ParameterRequiredDescription
idyesThe webhook id.
cursornoOpaque cursor from a previous page's nextCursor.
limitnoMaximum delivery attempts to return (1–100, default 25).

Write tools

subscribe_competitor

Write

Start tracking a new competitor by URL, optionally with a display name and the change categories to track. Requires the competitors:write scope.

ParameterRequiredDescription
urlyesThe competitor's URL, e.g. https://example.com.
displayNamenoA friendly name for this competitor.
trackedCategoriesnoChange categories to track, e.g. ['pricing_changes', 'product_changes'].

update_competitor

Write · Idempotent

Update a competitor's display name and/or the change categories tracked for it. Requires the competitors:write scope.

ParameterRequiredDescription
idyesThe competitor subscription id.
displayNamenoA friendly name, or null to clear it.
trackedCategoriesnoReplacement set of change categories to track.

create_label

Write

Create a new label for the current organization with a name and a color. Requires the labels:write scope.

ParameterRequiredDescription
nameyesShort label name, e.g. 'direct'. Letters, numbers, spaces, dashes, underscores.
coloryesLabel color, one of: gray, red, orange, yellow, green, blue, purple, pink.

update_label

Write · Idempotent

Rename and/or recolor a label belonging to the current organization. Requires the labels:write scope.

ParameterRequiredDescription
idyesThe label id.
namenoNew label name. Letters, numbers, spaces, dashes, underscores.
colornoNew label color, one of: gray, red, orange, yellow, green, blue, purple, pink.

assign_label

Write

Assign a label to a competitor (idempotent if already assigned). Returns the competitor's post-assign label set. Requires the labels:write scope.

ParameterRequiredDescription
idyesThe competitor subscription id to assign the label to.
labelIdyesThe label id to assign.

update_current_user

Write · Idempotent

Update the signed-in user's profile name fields (name, firstName, lastName). Pass null for a field to clear it; omit a field to leave it unchanged. Requires the account:write scope.

ParameterRequiredDescription
namenoLegacy display name, or null to clear it.
firstNamenoGiven name, or null to clear it.
lastNamenoFamily name, or null to clear it.

update_org

Write · Idempotent

Rename the current organization. Admin-only. Requires the org:write scope.

ParameterRequiredDescription
nameyesThe new organization name.

update_member_role

Write · Idempotent

Change a member's role to admin or member. Owner is intentionally not assignable here — use transfer_org_ownership to change ownership. Requires the members:write scope.

ParameterRequiredDescription
userIdyesThe user id of the member whose role is changing.
roleyesThe member's new role.

create_invite

Write

Invite a new member to the organization by email, joining at the admin or member role (defaults to member). Sends an invitation email. Requires the invites:write scope.

ParameterRequiredDescription
emailyesThe email address to invite.
rolenoThe role the invitee joins as (defaults to member).

mint_api_key

Write

Create a new API key for the current organization with a name, a set of scopes, and an optional expiry. The plaintext secret is returned exactly once in the response and can never be retrieved again, so store it immediately. Requires the account:write scope.

ParameterRequiredDescription
nameyesA human-readable name for the key, e.g. 'CI deploy bot'.
scopesyesThe scopes to grant, e.g. ['competitors:read', 'changes:read']. Cannot exceed what your role can grant.
expiresAtnoAn optional ISO 8601 expiry timestamp, e.g. '2027-01-01T00:00:00.000Z'.

create_dispatch

Write

Create a notification for the current organization, optionally scoped to specific labels. Requires the dispatches:write scope.

ParameterRequiredDescription
nameyesA friendly name for this notification.
labelIdsnoLabel ids to scope this notification to, e.g. ['01J0000000000000000000A001'].

update_dispatch

Write · Idempotent

Rename, recolor, or rescope a notification belonging to the current organization. Requires the dispatches:write scope.

ParameterRequiredDescription
idyesThe notification id.
namenoA new friendly name for this notification.
labelIdsnoReplacement set of label ids to scope this notification to.
themenoThe notification's email theme.

add_dispatch_recipient

Write

Add a recipient to a notification. Members are added immediately; external recipients are emailed a confirmation link and stay pending until they confirm. Requires the dispatches:write scope.

ParameterRequiredDescription
idyesThe notification id.
kindyesWhether the recipient is an organization member or an external email.
userIdnoThe member's user id. Required when kind is 'member'.
emailnoThe external recipient's email. Required when kind is 'external'.

create_webhook

Write

Register a webhook for the current organization. The signing secret is returned once. Requires the dispatches:write scope.

ParameterRequiredDescription
urlyesThe https destination URL that signed delivery payloads are POSTed to.

Destructive tools

unsubscribe_competitor

Write · Destructive · Idempotent

Stop tracking a competitor and remove its subscription. This is irreversible — pass confirm: true to proceed. Requires the competitors:write scope.

ParameterRequiredDescription
idyesThe competitor subscription id.
confirmyesMust be true to confirm this irreversible action (stops tracking this competitor).

delete_label

Write · Destructive · Idempotent

Delete a label and detach it from every competitor it is assigned to. This is irreversible — pass confirm: true to proceed. Requires the labels:write scope.

ParameterRequiredDescription
idyesThe label id.
confirmyesMust be true to confirm this irreversible action.

unassign_label

Write · Destructive · Idempotent

Unassign a label from a competitor. This is irreversible — pass confirm: true to proceed. Requires the labels:write scope.

ParameterRequiredDescription
idyesThe competitor subscription id to unassign the label from.
labelIdyesThe label id to unassign.
confirmyesMust be true to confirm this irreversible action.

delete_org

Write · Destructive · Idempotent

Delete the current organization. Owner-only. This is irreversible — pass confirm: true to proceed. Requires the org:write scope.

ParameterRequiredDescription
confirmyesMust be true to confirm this irreversible action.

transfer_org_ownership

Write · Destructive

Transfer ownership of the current organization: the current owner becomes admin and the target member becomes owner. This is irreversible — pass confirm: true to proceed. Requires the org:write scope.

ParameterRequiredDescription
to_user_idyesThe user id of the member who will become the new owner.
confirmyesMust be true to confirm this irreversible action.

leave_org

Write · Destructive

Leave the current organization. Sole owners must transfer ownership first. This is irreversible — pass confirm: true to proceed. Requires the account:write scope.

ParameterRequiredDescription
confirmyesMust be true to confirm this irreversible action.

revoke_invite

Write · Destructive · Idempotent

Revoke a pending invitation. This is irreversible — pass confirm: true to proceed. Requires the invites:write scope.

ParameterRequiredDescription
inviteIdyesThe id of the pending invitation to revoke.
confirmyesMust be true to confirm this irreversible action.

revoke_api_key

Write · Destructive · Idempotent

Permanently revoke an API key by id so it can no longer authenticate. This is irreversible — pass confirm: true to proceed. Requires the account:write scope.

ParameterRequiredDescription
idyesThe API key id.
confirmyesMust be true to confirm this irreversible action.

regenerate_api_key

Write · Destructive

Rotate an API key's secret by id. This immediately invalidates the previous secret and returns a new plaintext secret exactly once — any client still using the old secret will stop working. This is irreversible — pass confirm: true to proceed. Requires the account:write scope.

ParameterRequiredDescription
idyesThe API key id.
confirmyesMust be true to confirm this irreversible action.

delete_dispatch

Write · Destructive · Idempotent

Delete a notification belonging to the current organization. This is irreversible — pass confirm: true to proceed. Requires the dispatches:write scope.

ParameterRequiredDescription
idyesThe notification id.
confirmyesMust be true to confirm this irreversible action.

remove_dispatch_recipient

Write · Destructive · Idempotent

Remove a recipient from a notification. The pinned owner cannot be removed. This is irreversible — pass confirm: true to proceed. Requires the dispatches:write scope.

ParameterRequiredDescription
idyesThe notification id.
recipientIdyesThe recipient id to remove.
confirmyesMust be true to confirm this irreversible action.

delete_webhook

Write · Destructive · Idempotent

Delete a webhook, freeing one of the organization's slots. This is irreversible — pass confirm: true to proceed. Requires the dispatches:write scope.

ParameterRequiredDescription
idyesThe webhook id.
confirmyesMust be true to confirm this irreversible action.

On this page