> ## Documentation Index
> Fetch the complete documentation index at: https://docs.auxilian.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# list_activity

> Read a project's activity log: who changed what, when, and from which surface.

Reads a project's activity log, newest first. Every schema change, row write, sharing change, and refused write is listed, whether it came from the web app or an AI assistant.

| | |
| - | - |
| Scope | `mcp:read` |
| Annotations | `readOnlyHint: true` |

Use it to check what a previous step changed, or to answer questions such as "who deleted rows from contacts this week?"

## Parameters

<ParamField body="projectId" type="string" required>
  Project id from `list_projects`. Read access is enough.
</ParamField>

<ParamField body="action" type="string">
  Return only events of this kind, such as `delete_rows` or `write.denied`. See [Activity events](/reference/activity-events#actions) for every action.
</ParamField>

<ParamField body="limit" default="100" type="integer">
  Events to return, from 1 to 200. Values above 200 return 200.
</ParamField>

## Result

An array of events, newest first.

<ResponseField name="id" type="string">
  Event id (uuid).
</ResponseField>

<ResponseField name="action" type="string">
  What happened, such as `table.created` or `insert_rows`.
</ResponseField>

<ResponseField name="surface" type="string">
  `web` for the web app, `mcp` for an AI assistant.
</ResponseField>

<ResponseField name="details" type="object">
  Specifics for the action, such as `{"table": "books", "count": 3}`. See [Activity events](/reference/activity-events#actions).
</ResponseField>

<ResponseField name="createdAt" type="string">
  When it happened, as an ISO 8601 string in UTC.
</ResponseField>

<ResponseField name="actorId" type="string">
  The user who acted. For `mcp`, the user who approved the AI assistant.
</ResponseField>

<ResponseField name="actorName" type="string | null">
  The actor's name, or `null` if Auxilian has none or their account was deleted.
</ResponseField>

<ResponseField name="actorEmail" type="string | null">
  The actor's email address, or `null` if their account was deleted.
</ResponseField>

## Example

```json Arguments theme={null}
{ "projectId": "01k7m3x9q2v8d4h6n1r5t0w2yz", "action": "delete_rows", "limit": 2 }
```

```json Result theme={null}
{
  "data": [
    {
      "id": "5d0c9a3e-2b7f-4e61-8f14-3a9b6c2d7e05",
      "action": "delete_rows",
      "surface": "mcp",
      "details": { "table": "contacts", "count": 4 },
      "createdAt": "2026-10-15T09:12:44.031Z",
      "actorId": "user_01K7M3X9Q2V8D4H6N1R5T0W2YZ",
      "actorName": "Ada Lovelace",
      "actorEmail": "ada@example.com"
    },
    {
      "id": "b81e4f27-6c3d-4a90-9e5b-0d7f2a1c8e63",
      "action": "delete_rows",
      "surface": "web",
      "details": { "table": "deals", "count": 1 },
      "createdAt": "2026-10-14T17:40:02.918Z",
      "actorId": "user_01K7M4B2C6D8E0F2G4H6J8K0M2",
      "actorName": "Grace Hopper",
      "actorEmail": "grace@example.com"
    }
  ]
}
```

## Errors

| Code | When |
| - | - |
| `ACCESS_DENIED` | The project doesn't exist or you can't access it |

## Notes

* Row events record the table and the number of rows, not the values.
* Events are kept for 90 days. See [Activity log](/app/activity#retention).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.