get_activity_log
Read the activity log for a given subject. Returns chronological entries with causer, event, and scrubbed properties.
Read the activity log for a given subject (e.g. a project or project-user). Returns reverse-chronological entries with causer, event, and properties. Keys matching token | secret | password | api_key | api_secret are stripped before the response returns.
Pass a short morph alias as subject_type — project,
project-subscription, project-subscription-plan, project-user,
project-resource, etc. The subject_id is the row UUID.
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*stringAlias of the model the activity is attached to: one of project, subscription, project-subscription, member, project-user, plan, project-subscription-plan, access-code, coupon, project-resource. Model class names are refused.
subject_id*stringUUID of the subject row.
limitintegeroptionalMaximum entries to return (1..200, default 50).
1max200What it returns
{ "data": [ { "id": "92e4c1b6-70da-4f38-8517-b036ae94d7c2", "log_name": "default", "description": "Plan 'Premium Monthly' was updated.", "event": "updated", "subject_type": "project-subscription-plan", "subject_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "causer_type": "user", "causer_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80", "properties": { "changes": { "price": { "from": "25.00", "to": "29.00" } } }, "actor_kind": "human", "created_at": "2026-05-18T10:05:00Z" } ], "meta": { "subject_type": "project-subscription-plan", "subject_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b", "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 (reason: not_a_uuid).
RESOURCE_NOT_FOUNDthe subject does not exist, belongs to another creator, or sits outside the token's scope:project: allow-list. The history is never read before the subject itself resolves, so a foreign id learns nothing.
How is this guide?
Last updated on