get_activity_log
Read the activity log of one subject, newest first — every change made to it, who made it, the surface it came through and the columns that changed.
Read the history of one subject: every change made to it from the application, the REST API, an MCP tool, an accepted Heimdall draft or a scheduled job, each with who caused it, the surface it came through (actor_kind: human, api_token, mcp, ai, integration, webhook or system) and the columns that changed. Keys named like a secret are scrubbed before the response returns. The subject itself is resolved first, so an id the token cannot see answers RESOURCE_NOT_FOUND and learns nothing from the history.
Pass a short alias as subject_type: project, client or project-member
today, with every artefact alias joining as its module lands. The subject_id
is the row UUID. limit is 1 to 200, 50 when omitted.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Annotations
It reads and never changes anything.
Arguments
subject_type*stringThe kind of subject, as a short alias.
projectclientproject-membercomponentenvironmentstakeholderpersonaglossary-termdata-entitydata-fielddesign-referencerepositoryepicwork-itemrequirementbusiness-ruleuse-caseraid-itemdecisionsubject_id*stringUUID of the subject.
limitintegeroptionalHow many of the newest entries to return (1..200, default 50).
1max200What it returns
{ "data": [ { "id": "92e4c1b6-70da-4f38-8517-b036ae94d7c2", "log_name": "default", "description": "Project Customer Portal was updated.", "event": "updated", "subject_type": "project", "subject_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "causer_type": "user", "causer_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80", "actor_kind": "human", "changes": { "status": { "from": "planning", "to": "in_development" } }, "properties": {}, "created_at": "2026-10-24T16:40:00+00:00" } ], "meta": { "subject_type": "project", "subject_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "total": 12, "limit": 50 }}How it fails
TOKEN_MISSING_ABILITYtoken lacks activity:read.
VALIDATION_FAILEDsubject_type is not one of the supported aliases (model class names are refused; the error context lists the aliases), or subject_id is not a UUID.
RESOURCE_NOT_FOUNDthe subject does not exist, belongs to another team, or sits outside the token's scope:project: allow-list.
How is this guide?
Last updated on