READ

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

Read-only

It reads and never changes anything.

Arguments

subject_type*string

The kind of subject, as a short alias.

projectclientproject-membercomponentenvironmentstakeholderpersonaglossary-termdata-entitydata-fielddesign-referencerepositoryepicwork-itemrequirementbusiness-ruleuse-caseraid-itemdecision
subject_id*string

UUID of the subject.

limitintegeroptional

How many of the newest entries to return (1..200, default 50).

min1max200

What 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_ABILITY

token lacks activity:read.

VALIDATION_FAILED

subject_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_FOUND

the 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