Skip to main content

Export to SIEM

MintMCP exports activity logs to your SIEM or observability platform in real time using the OpenTelemetry Logs protocol (OTLP/HTTP). Tool invocations, prompt submissions, and gateway requests are captured and forwarded to any OTLP-compatible endpoint.

What gets exported

MintMCP exports logs from two sources:

SourceWhat's capturedWhen
Agent MonitorTool calls from Claude Code, Cursor, and other agentsBefore each tool executes (via hooks)
Agent MonitorPrompt submissions from Claude Code and CursorBefore the prompt is sent to the model
MCP GatewayTool calls routed through the gatewayAfter each request completes

Each source produces OTLP log records with its own schema, described below.

Configure the export

Via the UI

  1. Go to Enterprise in the sidebar
  2. Under OTLP Export, enter your collector endpoint URL
  3. Add any required headers (e.g., API keys or authorization tokens). Header values will be encrypted.
  4. Enable the export

Log record schemas

Agent Monitor: tool call logs

Each log record contains one or more tool calls that were intercepted by the agent hook.

Attributes:

AttributeTypeDescription
org.idstringOrganization ID
event.idstringUnique event ID (ULID)
user.idstringUser who triggered the tool call
matched_rulesstring[]IDs of any Agent Monitor rules that matched (omitted if none)

Body — an array of tool call objects, each containing:

{
"toolUseId": "toolu_abc123",
"tool": {
"type": "mcp",
"mcp": { "type": "remote", "url": "https://mcp.example.com" },
"name": "query_database"
},
"input": { "sql": "SELECT * FROM users LIMIT 10" },
"matchedRules": ["rule_block_pii_queries"]
}

The tool field identifies what was called:

Tool typeFieldsExample
Agent built-intype: "agent", agent, nameClaude Code's Bash tool
Remote MCPtype: "mcp", mcp.type: "remote", mcp.url, nameA MintMCP gateway tool
Local stdio MCPtype: "mcp", mcp.type: "stdio", mcp.command, nameA locally-running MCP server

Agent Monitor: prompt submission logs

Each log record represents a prompt submitted by a user in Claude Code or Cursor, captured before the prompt is sent to the model.

Attributes:

AttributeTypeDescription
org.idstringOrganization ID
event.idstringUnique event ID (ULID)
event.typestringAlways prompt_submit
event.providerstringAgent that submitted the prompt (claudecode or cursor)
user.idstringUser who submitted the prompt
matched_rulesstring[]IDs of any Agent Monitor rules that matched (omitted if none)

Body:

{
"prompt": "Deploy the latest changes to staging",
"truncated": false,
"decision": "allow",
"sessionId": "session-abc123"
}
FieldTypeDescription
promptstringThe prompt text (truncated to 1024 characters, secrets redacted)
truncatedbooleanWhether the prompt was truncated
decisionstringallow or deny
decisionReasonstringWhy the prompt was denied (only present when decision is deny)
sessionIdstringSession or conversation ID

MCP Gateway logs

Each log record represents one completed request through the gateway.

Attributes:

AttributeTypeDescription
endpoint.idstringThe MCP endpoint that handled the request
jsonrpc.methodstringJSON-RPC method (e.g., tools/call, tools/list)
tool.namestringTool that was called (for tools/call requests)
statusstringResult status (see below)
duration_msnumberRequest handling time in milliseconds

Status values:

StatusMeaning
jsonRpcSuccessTool call completed successfully
jsonRpcErrorTool call returned an error
http202Request accepted (streaming)
http400Bad request
http401Unauthorized
http403Forbidden

Body:

{
"message": "MCP request completed",
"tool.arguments": "{\"sql\": \"SELECT * FROM users LIMIT 10\"}"
}

The body is truncated to 16 KB to keep export volume bounded. Failed requests use "MCP request failed" as the message and set severity to WARN.