List activities
list_activitiesRetrieve a full catalog or recent changes of competitor activities. Filter by sections (e.g., case studies, pricing) and date window to monitor specific updates.
Instructions
Wraps GET /activity. Two modes, selected by whether you pass a date window:
Roster (no
from/to): the complete all-time catalog across the tracked competitors — including items that already existed when tracking began (the initial backfill). Use this to pull a full list, e.g. every customer a competitor has published a case study about:{ competitor_ids: [id], sections: ['case-studies'] }. For versioned sections (job-listings, ads, logos, messaging, pricing) this is the current live snapshot, not removed history, sochange_typeis mostlyaddedandtotalis the all-time count.Change feed (with
from/to): detected adds/updates/removals in that window only (excludes backfill) — the 'what shipped recently' surface.
Filters:
sections: restrict to specific section types (enum of 15: blog-posts, press-posts, job-listings, ads, pricing, case-studies, linkedin-posts, x-posts, reviews, youtube-videos, events, messaging, metrics-claimed, logos, sitemap-urls).change_types: restrict toadded/updated/removed(added / updated / removed).competitor_ids: narrow to specific competitors.from/to: ISO 8601 date-time window (inclusive). Supplying EITHER switches off roster mode; e.g.from=2026-04-16T00:00:00Zfor the last 7 days.
Matching tip: for case studies the customer/company name is usually in title and/or the url slug (e.g. .../case-studies/whop) — match on both.
Pagination: response carries pagination.next_cursor, pagination.has_more, and pagination.total (total rows matching the filters, not just this page). If has_more, call again with the cursor param set to next_cursor. Default limit is 50 to stay under Claude's tool-result size limit; max is 500. The roster can be large — keep paging until has_more is false.
Heavy fields (description, key_points, pricing_data, excerpt) are omitted from list rows to keep them lean; fetch the full payload for rows you care about with get_activity_items (pass their ids).
Chaining: get_activity_items returns full rows by id (one call for many ids).
Errors: invalid_parameter (bad section/change_type/date), invalid_cursor (stale or tampered), unauthorized, rate_limited.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Inclusive upper bound, ISO 8601 with offset. | |
| from | No | Inclusive lower bound, ISO 8601 with offset (e.g. `2026-04-16T00:00:00Z`). | |
| limit | No | Page size. Default 50 (tool-result size limit); max 500. Prefer smaller pages and paginate. | |
| cursor | No | Opaque cursor from a previous response's `pagination.next_cursor`. Omit on the first call. | |
| sections | No | Filter to specific section types (e.g. `['pricing', 'blog-posts']`). | |
| change_types | No | Filter to specific change types. `added` is usually the interesting one. | |
| competitor_ids | No | Narrow to these competitor ids. Omit for all tracked competitors. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| pagination | Yes | Shared cursor-pagination envelope. |