list_events

A tool of the Sprintree MCP server. All MCP docs · Back to the tool list

added 2026-09-30

List events, what changed in the projects you are a member of (issues created, moved or edited, comments, members, files), oldest first; pass `project` to read one you can see but have not joined, such as a public project. Events say WHAT happened to which issue, never the content (no descriptions or comment text): read the issue with get_issue_details. Without a cursor you get the latest events; every call answers a cursor (opaque): pass it as cursor (or since_cursor) to continue exactly where this page stopped (each event is returned once). This is a forward feed (a Stream: no total or page count); the answer always has a cursor, valid to poll with even when empty. Events are {id, at, type, issue (or project), by (absent: the system), via (absent: web), payload}, the whole payload, nulls kept; id is what get_event takes. Error cursor_expired means the cursor can no longer be trusted (events were removed by retention, the server restarted or rotated its key, or the cursor was altered): resync with search_issues / get_issue_details, then call again without since_cursor. Joining a project, or changing project/issue/types filters while reusing a cursor, does not replay older events of what is newly included: catch up with get_project_topology / search_issues. An event appears only after its transaction commits, so it can be a little late but is never skipped. Only projects you can currently read are included. For a readable, newest-first story of a project with comment excerpts, use list_project_activity instead. Answers are compact JSON; pass format="text" for a readable Markdown answer.

  • cursorstringoptional
    Cursor from `Next page` of an earlier result of this call (omit for the first page); pass it unchanged, with the same other arguments. since_cursor work as aliases
  • formatenumoptional
    Answer format: "json" (default) is one compact JSON document; "text" is a readable Markdown answer
    jsontext
  • issuestringoptional
    Issue key, e.g. ITR-12 (optional)
  • limitintegeroptional
    How many events per call (1–200, default 25)
  • projectstringoptional
    Project key (optional; default: every project you are a member of; name a public project you have not joined to read it)
  • since_cursorstringoptional
    Older name of cursor: the next_cursor / cursor of an earlier call (optional)
  • typesstring[]optional
    Only these event types (optional)
    issue.createdissue.updatedissue.status_changedissue.movedissue.deletedissue.description_savedcomment.createdcomment.editedcomment.deletedcomment.resolvedcomment.reopenedlabel.createdlabel.updatedlabel.deletedstatus.createdstatus.updatedstatus.reorderedstatus.deletedmember.addedmember.role_changedmember.removedproject.createdproject.updatedproject.archivedproject.restoredfile.attachedfile.deletedlink.addedlink.removedreview.requestedreview.submittedreview.removedcode_ref.linkedcode_ref.updatedcode_ref.unlinkedproject.repository_connectedproject.repository_disconnectedissue.criteria_changedproject.criteria_templates_changedview.createdview.updatedview.deletedcycle.createdcycle.updatedcycle.startedcycle.completedcycle.deletedcommitment.updatedpage.createdpage.updatedpage.movedpage.deletedpage.restoredpage.commented

Returns

One of these shapes, depending on the arguments:

Shape 1

  • countintegerrequired
  • cursorstringrequired
    Pass it as cursor to continue exactly where this page stopped
  • eventsarray of object | nullrequired
  • limitintegerrequired

Shape 2

    Optional fields, when present

    • notestringoptional
    • 2026-10-01 — Documentation: for a readable, newest-first story with comment excerpts use list_project_activity; list_events stays the exactly-once change feed.
    • 2026-10-02 — Answers are compact JSON by default (one document, no Markdown, nothing said twice); format="text" gives the readable Markdown without the json block. Each event is {id (what get_event takes), at, type, issue (or project), by (username; absent: system), via (absent: web), payload (the whole object, nulls kept)}; the document is {count, limit, cursor, events} and always has the cursor. 25 per page by default (limit up to 200).
    • 2026-10-02 — New cursor argument (since_cursor still works as an alias); limit is unchanged. The answer has the next cursor (always, also behind an empty page, to poll with) and no total or page count: a change feed has none. format="text" opens with a `Stream` line and ends with `Next page: cursor=` (also as next_cursor).
    • 2026-10-03 — Also answers structuredContent (see outputSchema); a failed call adds structuredContent.error. Text unchanged. Details: /docs/mcp, "Structured results and errors".
    • 2026-10-04 — Claude Code 2.1.288+ (clientInfo claude-code): the text of a successful answer is itself up to 512 bytes, else "Result in structuredContent (N bytes)."; structuredContent and errors are unchanged. See /docs/mcp.
    • 2026-10-04 — format="text" now also answers structuredContent {"text": the Markdown} (it was the JSON document), so a client that reads only structuredContent gets the Markdown it asked for.