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.
| Parameter | Required | Description |
|---|---|---|
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum subscriptions to return (1–200, default 50). |
search | no | Free-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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
competitorId | yes | The competitor subscription id whose pages to list. |
pageType | no | Filter 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
trackedPageId | yes | The tracked page id whose snapshots to list. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum changes to return (1–200, default 50). |
categories | no | Filter to these change categories, e.g. ['pricing_changes', 'product_changes']. |
priorities | no | Filter to these priorities ('high', 'medium', 'low'). |
since | no | Only changes detected at or after this ISO-8601 timestamp (with offset). |
until | no | Exclusive upper bound; only changes detected before this ISO-8601 timestamp. |
count | no | When 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The competitor subscription id. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum changes to return (1–200, default 50). |
categories | no | Filter to these change categories, e.g. ['pricing_changes', 'product_changes']. |
priorities | no | Filter to these priorities ('high', 'medium', 'low'). |
since | no | Only 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The snapshot id. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum changes to return (1–200, default 50). |
categories | no | Filter to these change categories, e.g. ['pricing_changes', 'product_changes']. |
priorities | no | Filter to these priorities ('high', 'medium', 'low'). |
since | no | Only 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.
| Parameter | Required | Description |
|---|---|---|
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum labels to return (1–200, default 50). |
search | no | Free-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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The API key id. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The notification id. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The webhook id. |
cursor | no | Opaque cursor from a previous page's nextCursor. |
limit | no | Maximum 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.
| Parameter | Required | Description |
|---|---|---|
url | yes | The competitor's URL, e.g. https://example.com. |
displayName | no | A friendly name for this competitor. |
trackedCategories | no | Change 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The competitor subscription id. |
displayName | no | A friendly name, or null to clear it. |
trackedCategories | no | Replacement 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.
| Parameter | Required | Description |
|---|---|---|
name | yes | Short label name, e.g. 'direct'. Letters, numbers, spaces, dashes, underscores. |
color | yes | Label 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The label id. |
name | no | New label name. Letters, numbers, spaces, dashes, underscores. |
color | no | New 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The competitor subscription id to assign the label to. |
labelId | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
name | no | Legacy display name, or null to clear it. |
firstName | no | Given name, or null to clear it. |
lastName | no | Family name, or null to clear it. |
update_org
Write · Idempotent
Rename the current organization. Admin-only. Requires the org:write scope.
| Parameter | Required | Description |
|---|---|---|
name | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
userId | yes | The user id of the member whose role is changing. |
role | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
email | yes | The email address to invite. |
role | no | The 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.
| Parameter | Required | Description |
|---|---|---|
name | yes | A human-readable name for the key, e.g. 'CI deploy bot'. |
scopes | yes | The scopes to grant, e.g. ['competitors:read', 'changes:read']. Cannot exceed what your role can grant. |
expiresAt | no | An 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.
| Parameter | Required | Description |
|---|---|---|
name | yes | A friendly name for this notification. |
labelIds | no | Label 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The notification id. |
name | no | A new friendly name for this notification. |
labelIds | no | Replacement set of label ids to scope this notification to. |
theme | no | The 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The notification id. |
kind | yes | Whether the recipient is an organization member or an external email. |
userId | no | The member's user id. Required when kind is 'member'. |
email | no | The 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.
| Parameter | Required | Description |
|---|---|---|
url | yes | The 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The competitor subscription id. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The label id. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The competitor subscription id to unassign the label from. |
labelId | yes | The label id to unassign. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
to_user_id | yes | The user id of the member who will become the new owner. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
inviteId | yes | The id of the pending invitation to revoke. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The API key id. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The API key id. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The notification id. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The notification id. |
recipientId | yes | The recipient id to remove. |
confirm | yes | Must 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.
| Parameter | Required | Description |
|---|---|---|
id | yes | The webhook id. |
confirm | yes | Must be true to confirm this irreversible action. |