MCP server and AI apps
Audit trail and usage
What is recorded for every MCP call, how MCP and API rows join, and where the gaps are.
Audit trail and usage
Every MCP tool call is recorded against the person who made it. When a client asks "who changed this?" or "what did my AI app do?", the audit trail is the answer.
What each call records
The MCP server writes a row for every tool call, and the /v1 API writes its own row for the work it did. Each row holds:
- The surface (
mcporapi) and the tool or route name. - The person (principal user), plus the organisation and engagement the API attributed the call to.
- The arguments, sanitised: passwords, tokens, signed and download URLs and credential-looking values are stripped, and long text is capped.
- The result status, latency and request ID.
- The actor, including the AI app the call came from (
originClientId).
The MCP row carries the API's request ID, so the two rows join into one story: who asked, through which app, and what the API actually did. Refusals after the API resolved a client, such as a scope or access denial, are recorded too.
Account events
Linking and disconnecting write their own rows under auth_link:
| Event | When |
|---|---|
first_call_link | The first sign-in linked an account (linked), or was refused (with the reason). |
disconnect | The user clicked Disconnect in Settings. |
admin_reset | An admin reset the AI connection on the Users page. |
Brief decisions
For a brief-level view without the raw log, use get_brief_timeline. It lists strategy routing, dispatch, approvals and regenerations made through the API, MCP or Slack, each with its surface. Portal approvals are not in it.
Known gaps
- Shared client ID. Codex and older hosted Claude connectors share one static ID, so audit cannot tell them apart. Claude Code and claude.ai connections made with the URL only are distinguishable.
- Staff discovery. A staff
list_clientscall with no organisation selected may not produce an organisation-keyed row. - Confirmation. The audit proves the person's credential made the call. It does not prove a human pressed confirm in Claude or Codex.
Where to look
There is no audit viewer in the Command Centre. The audit log lives in the platform database, so ask engineering for a lookup. Give them the person's email, the client, the approximate time and any request ID or brief ID the AI app showed.
Usage and spend
Generation started through the MCP follows the same funding checks as any other surface: where generation accounting is switched on, Webinar and Event generation needs the client's licensing and credit in place. The Slack agent's seats, pricing and credit are covered in Pricing, credit and limits.