atmon docs

REFERENCE/API/TRACES.MD

TracesService

Read back one decision and everything that ran under it. The id is the one search returned, so code that kept it can read its own turn back later, with what was offered and what was done.

Every call is a POST to https://api.atmon.ai/automaton.v1.TracesService/<Call> with a JSON body, and authenticates with Authorization: Bearer <your project key>. Field names in JSON are lowerCamelCase, so the field written tool_slug below is toolSlug on the wire. How to call the API has the whole convention.

Calls

CallRequestResponseSummary
ListTracesListTracesRequestListTracesResponseLists traces newest first, optionally narrowed to one entity, one toolkit's tools, or a time window.
GetTraceGetTraceRequestGetTraceResponseReads one decision and the ledger rows that ran under it.

ListTraces

Lists traces newest first, optionally narrowed to one entity, one toolkit's tools, or a time window.

Request ListTracesRequest, response ListTracesResponse.

POST /automaton.v1.TracesService/ListTraces HTTP/1.1
Host: api.atmon.ai
Authorization: Bearer amk_your_project_key
Content-Type: application/json

{
  "entityId": "...",
  "toolkitSlug": "...",
  "from": "2026-01-31T09:15:00Z",
  "to": "2026-01-31T09:15:00Z",
  "pageSize": 0,
  "pageToken": "..."
}

The response:

{
  "traces": [{
    "id": "...",
    "entityId": "...",
    "intent": "...",
    "matchedToolSlugs": ["..."],
    "createdAt": "2026-01-31T09:15:00Z",
    "reportedOutcome": "OUTCOME_SUCCESS",
    "reportedDetail": "...",
    "reportedAt": "2026-01-31T09:15:00Z",
    "callCount": 0
  }],
  "nextPageToken": "..."
}

GetTrace

Reads one decision and the ledger rows that ran under it. This is the view that separates "the router offered the wrong tool" from "the agent called the right tool badly".

Request GetTraceRequest, response GetTraceResponse.

POST /automaton.v1.TracesService/GetTrace HTTP/1.1
Host: api.atmon.ai
Authorization: Bearer amk_your_project_key
Content-Type: application/json

{
  "id": "..."
}

The response:

{
  "trace": {
    "id": "...",
    "entityId": "...",
    "intent": "...",
    "matchedToolSlugs": ["..."],
    "createdAt": "2026-01-31T09:15:00Z",
    "reportedOutcome": "OUTCOME_SUCCESS",
    "reportedDetail": "...",
    "reportedAt": "2026-01-31T09:15:00Z",
    "callCount": 0
  },
  "toolCalls": [{
    "id": "...",
    "entityId": "...",
    "toolSlug": "...",
    "connectedAccountId": "...",
    "argumentsJson": "{}",
    "status": "TOOL_CALL_STATUS_RUNNING",
    "resultJson": "{}",
    "errorCode": "...",
    "errorDetail": "...",
    "startedAt": "2026-01-31T09:15:00Z",
    "finishedAt": "2026-01-31T09:15:00Z",
    "approvalId": "...",
    "resultTruncated": true,
    "resourceUrn": "...",
    "leaseWaitMs": 0,
    "principalChain": ["..."],
    "jobId": "...",
    "stepId": "...",
    "relayId": "..."
  }]
}

Messages

GetTraceRequest

FieldType#Notes
idstring1

GetTraceResponse

FieldType#Notes
traceTrace1
tool_callsrepeated ToolCall2linked ledger rows, oldest first

ListTracesRequest

FieldType#Notes
entity_idstring1empty lists every entity in the project
toolkit_slugstring2keep traces that matched a tool of this toolkit
fromgoogle.protobuf.Timestamp3inclusive lower bound on created_at
togoogle.protobuf.Timestamp4exclusive upper bound on created_at
page_sizeint325
page_tokenstring6

ListTracesResponse

FieldType#Notes
tracesrepeated Trace1newest first
next_page_tokenstring2

Trace

FieldType#Notes
idstring1the resolution id from ResolveTools
entity_idstring2
intentstring3
matched_tool_slugsrepeated string4ranked best first
created_atgoogle.protobuf.Timestamp5
reported_outcomeOutcome6OUTCOME_UNSPECIFIED until the agent reports
reported_detailstring7
reported_atgoogle.protobuf.Timestamp8absent until the agent reports
call_countint329ledger rows linked to this trace

Types from other calls

These are described on another page of this reference, so there is one description of each.

TypeDescribed under
OutcomeRouterService
ToolCallExecutionService