HockeyStick Knowledge Base Knowledge Base Open Command Centre

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 (mcp or api) 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:

EventWhen
first_call_linkThe first sign-in linked an account (linked), or was refused (with the reason).
disconnectThe user clicked Disconnect in Settings.
admin_resetAn 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_clients call 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.

Ask clients to copy the request ID and brief ID whenever their app reports a timeout or unclear outcome. It turns an investigation into a single lookup.

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.