Skip to content

Observe API

REST endpoints for the Observe area of Lessly.

The Observe area publishes 35 REST endpoints. Paths are relative to https://api.lessly.com; see Authentication for the required header.

GET/observe/alerts

List the alert rules of this product, newest first, with what each one measures and whether it is firing right now.

MCP tool: observe_alerts_list

Parameters

No parameters.

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the rule
kindstringone of: error_rate, log_matchWhat the rule measures
namestringHuman name the rule was registered under
statestringone of: ok, firingfiring means the condition is met right now
enabledbooleanWhether the evaluator measures it every minute
conditionobjectThe kind’s parameters: threshold and window, plus q for log_match
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 timestamp of the last change
lastFiredAtstring | nullISO 8601 time it last fired, or null
throttleMinutesnumberHow long after firing the rule stays quiet
POST/observe/alerts

Create an alert rule for this product. error_rate counts error events in the window; log_match counts log lines matching a Lucene expression, the same one observe_logs_search takes. The rule fires when the count reaches the threshold and resolves when it drops back below it; throttleMinutes is how long it stays quiet after firing. An expression that cannot be parsed is rejected here rather than failing silently on every evaluation.

MCP tool: observe_alerts_create

Parameters

NameInTypeRequiredDescription
namebodystringWhat to call the rule, up to 200 characters
kindbodystringone of: error_rate, log_matcherror_rate counts error events in the window; log_match counts log lines matching q
conditionbodyobjectThe kind’s parameters
enabledbodybooleanfalse registers the rule without evaluating it
throttleMinutesbodyintegerHow long after firing the rule stays quiet. Default 60, up to a week

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the rule
kindstringone of: error_rate, log_matchWhat the rule measures
namestringHuman name the rule was registered under
statestringone of: ok, firingfiring means the condition is met right now
enabledbooleanWhether the evaluator measures it every minute
conditionobjectThe kind’s parameters: threshold and window, plus q for log_match
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 timestamp of the last change
lastFiredAtstring | nullISO 8601 time it last fired, or null
throttleMinutesnumberHow long after firing the rule stays quiet
DELETE/observe/alerts/:id

Remove an alert rule and its firing history. To stop being alerted while keeping the history, set the rule disabled instead.

MCP tool: observe_alerts_delete

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the rule

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the removed rule
deletedbooleanone of: trueAlways true; the call fails otherwise
GET/observe/alerts/:id

Read one alert rule of this product, with its current state and last firing.

MCP tool: observe_alerts_get

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the rule

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the rule
kindstringone of: error_rate, log_matchWhat the rule measures
namestringHuman name the rule was registered under
statestringone of: ok, firingfiring means the condition is met right now
enabledbooleanWhether the evaluator measures it every minute
conditionobjectThe kind’s parameters: threshold and window, plus q for log_match
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 timestamp of the last change
lastFiredAtstring | nullISO 8601 time it last fired, or null
throttleMinutesnumberHow long after firing the rule stays quiet
PATCH/observe/alerts/:id

Edit an alert rule: its name, its condition, its throttle, or whether it is enabled. What the rule measures — its kind — is not editable; create a second rule instead. Omit a field to leave it alone.

MCP tool: observe_alerts_update

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the rule to change
namebodystringNew name for the rule
conditionbodyobjectThe kind’s parameters
enabledbodybooleanfalse stops evaluation and keeps the rule
throttleMinutesbodyintegerNew quiet period after a firing, in minutes

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the rule
kindstringone of: error_rate, log_matchWhat the rule measures
namestringHuman name the rule was registered under
statestringone of: ok, firingfiring means the condition is met right now
enabledbooleanWhether the evaluator measures it every minute
conditionobjectThe kind’s parameters: threshold and window, plus q for log_match
createdAtstringISO 8601 creation timestamp
updatedAtstringISO 8601 timestamp of the last change
lastFiredAtstring | nullISO 8601 time it last fired, or null
throttleMinutesnumberHow long after firing the rule stays quiet
GET/observe/alerts/events

List past and current firings for this product, newest first. A row with a null resolvedAt is an alert that is happening now. Each carries what the measure was and the condition as it stood at that moment.

MCP tool: observe_alerts_events_list

Parameters

NameInTypeRequiredDescription
ruleIdquerystringOnly firings of this rule
limitqueryintegerPage size, 1..200
offsetqueryintegerNumber of firings to skip

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the firing
ruleIdstringRule that fired
firedAtstringISO 8601 time the condition was first met
measurednumberWhat the measure was when it fired
conditionobjectThe condition as it stood then, not as the rule reads today
resolvedAtstring | nullISO 8601 time it cleared, or null while it is still firing
GET/observe/artifacts

List the source map artifacts stored for the current product, newest first. Filter by debug ID to see what is available for one build output.

MCP tool: observe_artifacts_list

Parameters

NameInTypeRequiredDescription
debugIdquerystringOnly return artifacts carrying this debug ID; omit to list all of them
limitqueryintegerMaximum number of artifacts to return, 1..200 (default 50)

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the stored artifact
kindstringone of: source, sourcemapWhether this is the minified source or its map
debugIdstringDebug ID the build stamped into the file and its source map
byteSizenumberSize of the stored artifact in bytes
fileNamestringName the file was uploaded under, e.g. "app.min.js.map"
uploadedAtstringISO 8601 timestamp of the upload
DELETE/observe/artifacts/:id

Delete one stored artifact and the bytes behind it. An artifact belonging to another product is reported as not found.

MCP tool: observe_artifacts_delete

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the artifact to delete. An artifact of another product is reported as not found

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the stored artifact
kindstringone of: source, sourcemapWhether this is the minified source or its map
debugIdstringDebug ID the build stamped into the file and its source map
byteSizenumberSize of the stored artifact in bytes
fileNamestringName the file was uploaded under, e.g. "app.min.js.map"
uploadedAtstringISO 8601 timestamp of the upload
GET/observe/artifacts/:issueId/resolve

Resolve the stack trace of an issue's latest event against the stored source maps, turning minified frames into original file, function, line and column. Frames with no matching debug ID are returned unchanged: a partially resolved trace is the normal result.

MCP tool: observe_artifacts_resolve

Parameters

NameInTypeRequiredDescription
issueIdpathstringIssue whose latest event should have its stack resolved. An issue of another product is reported as not found

Response

Returns object.

FieldTypeAlwaysDescription
framesobject[]The stack, resolved where a source map matched
eventIdstringIdentifier of the event the stack was taken from
issueIdstringThe issue whose stack this is
GET/observe/issues

List error tracking issues of the current product, most recently seen first. Filter by status or assignee.

MCP tool: observe_issues_list

Parameters

NameInTypeRequiredDescription
statusquerystringone of: unresolved, resolved, archivedOnly return issues in this state; omit to list every state
assigneequerystringOnly return issues owned by this assignee
limitqueryintegerHow many issues to return, most recently seen first. 1-200, default 50

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the issue
titlestringDisplay title, set when the issue opened and never rewritten
statusstringunresolved, resolved or archived
culpritstring | nullWhere the error appears to come from, or null
servicestring | nullService the most recent event came from, or null if none was reported
assigneestring | nullWho owns the issue, or null if unassigned
lastSeenstringISO 8601 timestamp of the most recent event
firstSeenstringISO 8601 timestamp of the first event
archivedAtstring | nullISO 8601 archive timestamp, or null
eventCountnumberHow many events have landed on this issue
resolvedAtstring | nullISO 8601 resolution timestamp, or null
environmentstring | nullEnvironment the issue was first seen in, or null
fingerprintstringStable grouping hash the issue is keyed on
lastEventIdstring | nullIdentifier of the most recent event that landed on the issue, or null for issues rolled up before this was recorded
lastReleasestring | nullRelease the most recent event was reported from, or null if none was reported
regressedAtstring | nullISO 8601 timestamp of the last regression, or null if it never regressed
groupingRulestringWhich rule of the ladder matched: explicit, stack, exception or message
exceptionTypestring | nullException class of the first event, or null
groupingVersionstringGrouping config version that produced the fingerprint; part of the issue identity
GET/observe/issues/:id

Read one error tracking issue by id, together with the resolved stack of its most recent event. Frames with no matching source map are returned unchanged, and an issue whose stack cannot be read still comes back — with a null stack.

MCP tool: observe_issues_get

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the issue
stackobject | nullStack of the most recent event, or null when the issue has no events yet or the stack could not be read
titlestringDisplay title, set when the issue opened and never rewritten
statusstringunresolved, resolved or archived
culpritstring | nullWhere the error appears to come from, or null
servicestring | nullService the most recent event came from, or null if none was reported
assigneestring | nullWho owns the issue, or null if unassigned
lastSeenstringISO 8601 timestamp of the most recent event
firstSeenstringISO 8601 timestamp of the first event
archivedAtstring | nullISO 8601 archive timestamp, or null
eventCountnumberHow many events have landed on this issue
resolvedAtstring | nullISO 8601 resolution timestamp, or null
environmentstring | nullEnvironment the issue was first seen in, or null
fingerprintstringStable grouping hash the issue is keyed on
lastEventIdstring | nullIdentifier of the most recent event that landed on the issue, or null for issues rolled up before this was recorded
lastReleasestring | nullRelease the most recent event was reported from, or null if none was reported
regressedAtstring | nullISO 8601 timestamp of the last regression, or null if it never regressed
groupingRulestringWhich rule of the ladder matched: explicit, stack, exception or message
exceptionTypestring | nullException class of the first event, or null
groupingVersionstringGrouping config version that produced the fingerprint; part of the issue identity
POST/observe/issues/:id/archive

Archive an issue: it stops being reported and stays archived even when new events keep landing on it.

MCP tool: observe_issues_archive

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the issue
titlestringDisplay title, set when the issue opened and never rewritten
statusstringunresolved, resolved or archived
culpritstring | nullWhere the error appears to come from, or null
servicestring | nullService the most recent event came from, or null if none was reported
assigneestring | nullWho owns the issue, or null if unassigned
lastSeenstringISO 8601 timestamp of the most recent event
firstSeenstringISO 8601 timestamp of the first event
archivedAtstring | nullISO 8601 archive timestamp, or null
eventCountnumberHow many events have landed on this issue
resolvedAtstring | nullISO 8601 resolution timestamp, or null
environmentstring | nullEnvironment the issue was first seen in, or null
fingerprintstringStable grouping hash the issue is keyed on
lastEventIdstring | nullIdentifier of the most recent event that landed on the issue, or null for issues rolled up before this was recorded
lastReleasestring | nullRelease the most recent event was reported from, or null if none was reported
regressedAtstring | nullISO 8601 timestamp of the last regression, or null if it never regressed
groupingRulestringWhich rule of the ladder matched: explicit, stack, exception or message
exceptionTypestring | nullException class of the first event, or null
groupingVersionstringGrouping config version that produced the fingerprint; part of the issue identity
POST/observe/issues/:id/assign

Assign an issue to someone, or pass a null assignee to clear the assignment.

MCP tool: observe_issues_assign

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue
assigneebodystring | nullWho should own the issue; null clears the assignment

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the issue
titlestringDisplay title, set when the issue opened and never rewritten
statusstringunresolved, resolved or archived
culpritstring | nullWhere the error appears to come from, or null
servicestring | nullService the most recent event came from, or null if none was reported
assigneestring | nullWho owns the issue, or null if unassigned
lastSeenstringISO 8601 timestamp of the most recent event
firstSeenstringISO 8601 timestamp of the first event
archivedAtstring | nullISO 8601 archive timestamp, or null
eventCountnumberHow many events have landed on this issue
resolvedAtstring | nullISO 8601 resolution timestamp, or null
environmentstring | nullEnvironment the issue was first seen in, or null
fingerprintstringStable grouping hash the issue is keyed on
lastEventIdstring | nullIdentifier of the most recent event that landed on the issue, or null for issues rolled up before this was recorded
lastReleasestring | nullRelease the most recent event was reported from, or null if none was reported
regressedAtstring | nullISO 8601 timestamp of the last regression, or null if it never regressed
groupingRulestringWhich rule of the ladder matched: explicit, stack, exception or message
exceptionTypestring | nullException class of the first event, or null
groupingVersionstringGrouping config version that produced the fingerprint; part of the issue identity
GET/observe/issues/:id/event

Read one event of an error tracking issue in full — the most recent one by default, or a specific one by id. Returns where and in what it happened: service, environment, release, trace, tags, and for OTel events the span with its HTTP method, route, status and target address. An issue whose events are no longer stored still comes back, with a null event.

MCP tool: observe_issues_event

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue
eventIdquerystringWhich event to read; omit to read the most recent one. Must be an event of this issue

Response

Returns object.

FieldTypeAlwaysDescription
eventobject | nullThe event, or null when the issue has no event id or the event is no longer stored — events live 30 days and an issue outlives them. Neither case is an error
sourcestring | nullone of: sentry, otelWhich store the event id addresses, derived from its shape. Null when there is no event id
eventIdstring | nullIdentifier of the event that was read, or null when the issue has recorded no event id yet
issueIdstringIdentifier of the issue the event belongs to
GET/observe/issues/:id/events

List the events of an error tracking issue, newest first. Each row identifies one event; pass its eventId to observe_issues_event to open it. Page with nextCursor.

MCP tool: observe_issues_events

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue
limitqueryintegerHow many events to return, newest first. 1-100, default 50
cursorquerystringThe nextCursor of the previous page; omit for the first page

Response

Returns object.

FieldTypeAlwaysDescription
rowsobject[]The events, newest first
nextCursorstring | nullPass back as cursor for the next page; null when the last page was reached
GET/observe/issues/:id/histogram

Count the events of an error tracking issue per bucket over a window, so a reader can see when it started and whether it is still going. Bucket width is derived from the window; quiet buckets come back as zeros, never as gaps.

MCP tool: observe_issues_histogram

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue
windowquerystringHow far back to count, e.g. "1h", "24h", "7d". Up to 30d, default "24h"

Response

Returns object.

FieldTypeAlwaysDescription
tostringISO 8601 end of the last bucket, exclusive
fromstringISO 8601 start of the first bucket
windowstringThe window that was counted, e.g. "24h"
bucketsobject[]Every bucket of the window, oldest first. Quiet buckets are zeros, never gaps
bucketSecondsnumberWidth of one bucket in seconds, derived from the window
POST/observe/issues/:id/resolve

Mark an issue resolved. A later event flips it back to unresolved and emits observe/issue.regressed.

MCP tool: observe_issues_resolve

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the issue

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the issue
titlestringDisplay title, set when the issue opened and never rewritten
statusstringunresolved, resolved or archived
culpritstring | nullWhere the error appears to come from, or null
servicestring | nullService the most recent event came from, or null if none was reported
assigneestring | nullWho owns the issue, or null if unassigned
lastSeenstringISO 8601 timestamp of the most recent event
firstSeenstringISO 8601 timestamp of the first event
archivedAtstring | nullISO 8601 archive timestamp, or null
eventCountnumberHow many events have landed on this issue
resolvedAtstring | nullISO 8601 resolution timestamp, or null
environmentstring | nullEnvironment the issue was first seen in, or null
fingerprintstringStable grouping hash the issue is keyed on
lastEventIdstring | nullIdentifier of the most recent event that landed on the issue, or null for issues rolled up before this was recorded
lastReleasestring | nullRelease the most recent event was reported from, or null if none was reported
regressedAtstring | nullISO 8601 timestamp of the last regression, or null if it never regressed
groupingRulestringWhich rule of the ladder matched: explicit, stack, exception or message
exceptionTypestring | nullException class of the first event, or null
groupingVersionstringGrouping config version that produced the fingerprint; part of the issue identity
GET/observe/keys

List the OTLP ingest keys of the current product. Tokens are never returned.

MCP tool: observe_keys_list

Parameters

NameInTypeRequiredDescription
environmentquerystringOnly return keys of this environment; omit to list all of them

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the ingest key
kindstringone of: ingest, dsningest = Bearer OTLP key; dsn = public Sentry key that ships in client code
namestring | nullHuman label given at creation, or null
prefixstringFirst characters of the token, shown for recognition
createdAtstringISO 8601 creation timestamp
revokedAtstring | nullISO 8601 revocation timestamp, or null if active
environmentstringEnvironment the key writes telemetry for
POST/observe/keys

Create an ingest credential for one environment: a Bearer OTLP token (kind "ingest") or a public Sentry DSN (kind "dsn"). The credential is returned once and cannot be retrieved again.

MCP tool: observe_keys_create

Parameters

NameInTypeRequiredDescription
environmentbodystringEnvironment this key sends telemetry for, e.g. "staging" or "production"
namebodystringOptional human label for the key, e.g. "ci" or "backend pods"
kindbodystringone of: ingest, dsningest (default) issues a Bearer OTLP token; dsn issues a public Sentry key returned as a full DSN

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the ingest key
dsnstringThe full DSN, for kind "dsn" — shown only here, store it now
kindstringone of: ingest, dsningest = Bearer OTLP key; dsn = public Sentry key that ships in client code
namestring | nullHuman label given at creation, or null
tokenstringThe full ingest token, for kind "ingest" — shown only here, store it now
prefixstringFirst characters of the token, shown for recognition
createdAtstringISO 8601 creation timestamp
revokedAtstring | nullISO 8601 revocation timestamp, or null if active
environmentstringEnvironment the key writes telemetry for
POST/observe/keys/:id/revoke

Revoke an OTLP ingest key. Telemetry sent with it is rejected immediately.

MCP tool: observe_keys_revoke

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the ingest key to revoke

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the revoked key
revokedAtstringISO 8601 timestamp of the revocation
GET/observe/logs/facets

Count the environments, services and severities present in the logs of the current product over a window, so a filter can offer the values that actually exist. Counts are cached for up to a minute.

MCP tool: observe_logs_facets

Parameters

NameInTypeRequiredDescription
windowquerystringHow far back to count, e.g. "1h", "24h", "7d". Up to 30d, default "24h"

Response

Returns object.

FieldTypeAlwaysDescription
tostringNewest timestamp counted, ISO 8601
fromstringOldest timestamp counted, ISO 8601
windowstringThe window that was counted, e.g. "24h"
servicesobject[]Services, most frequent first
severitiesobject[]Severities, most frequent first
environmentsobject[]Environments, most frequent first
GET/observe/logs/search

Search the log lines of the current product, newest first. Filters are structured; there is no SQL surface. Page with nextCursor.

MCP tool: observe_logs_search

Parameters

NameInTypeRequiredDescription
environmentquerystringOnly lines of this environment, e.g. "production"
servicequerystringOnly lines of this service, e.g. "api"
severityInquerystring[]Only lines whose severity is one of these, e.g. ["ERROR", "FATAL"]
searchquerystringMatch the message body. A single word matches whole words and is indexed; anything longer is a case-insensitive substring match
traceIdquerystringOnly lines of this trace
qquerystringLucene-style expression, ANDed with the structured filters. `key:value` (service, environment, severity, trace_id, span_id, body; any other key matches an attribute), "quoted phrases", AND / OR / NOT in uppercase, parentheses. A bare word matches a whole word in the message body. Example: service:api AND NOT severity:INFO AND "connection refused"
fromquerystringOldest timestamp to include, ISO 8601
toquerystringNewest timestamp to include, ISO 8601
limitqueryintegerHow many lines to return, 1-1000, default 100
cursorquerystringThe nextCursor of the previous page; omit for the first page

Response

Returns object.

FieldTypeAlwaysDescription
rowsobject[]The matching log lines, newest first
nextCursorstring | nullPass back as cursor for the next page; null when the last page was reached
GET/observe/logs/tail

Follow the log lines of the current product. The first call returns the last 50 lines oldest-first; pass the returned cursor back to get only what arrived since.

MCP tool: observe_logs_tail

Parameters

NameInTypeRequiredDescription
environmentquerystringOnly lines of this environment
servicequerystringOnly lines of this service
severityInquerystring[]Only lines whose severity is one of these
cursorquerystringThe nextCursor of the previous poll; omit to start at the newest lines

Response

Returns object.

FieldTypeAlwaysDescription
rowsobject[]The new log lines, oldest first
nextCursorstring | nullPass back as cursor on the next poll; null only while the product has no logs
GET/observe/metrics/catalog

Catalogue the metrics of the current product: what exists, whether it is a counter or a histogram, its unit, which services report it and which attribute keys its series carry. Read this before observe_metrics_query — it is where a name, a type and a groupBy key come from.

MCP tool: observe_metrics_list

Parameters

NameInTypeRequiredDescription
environmentquerystringOnly metrics reported in this environment, e.g. "production"
servicequerystringOnly metrics reported by this service, e.g. "api"
searchquerystringOnly metrics whose name contains this text, case-insensitively
windowquerystringone of: 15m, 1h, 24h, 7d, 30dHow far back to look for metrics; default "24h"

Response

Returns object.

FieldTypeAlwaysDescription
windowstringThe window that was catalogued
metricsobject[]The metrics seen in the window, by name
GET/observe/metrics/query

Read one metric of the current product as a time series. Cumulative counters are differenced at read time, so a process restart reads as its own increase rather than as a negative spike; histogram percentiles are interpolated across the emitter's buckets. Up to 100 series and 500 points each, over at most 31 days; truncated says when a ceiling was reached.

MCP tool: observe_metrics_query

Parameters

NameInTypeRequiredDescription
namequerystringThe metric to read, exactly as observe_metrics_list names it
aggregationquerystringone of: rate, increase, value, p50, p90, p99, avg, countHow to aggregate each step. A counter takes "rate" (per second), "increase" (over the step) or "value" (its last reading); a histogram takes "p50", "p90", "p99", "avg" or "count". A pair that does not match the metric is rejected.
fromquerystringStart of the window, ISO 8601; default one hour ago
toquerystringEnd of the window, ISO 8601; default now
stepquerystringone of: 1m, 5m, 15m, 1h, 6h, 1dBucket width; default the finest that renders at most 500 points
environmentquerystringOnly points from this environment
servicequerystringOnly points from this service
attributesqueryobjectOnly points whose attributes match every one of these key/value pairs
groupByquerystring[]Attribute keys to keep as the series labels, aggregating every other attribute into them; default one series per distinct attribute set

Response

Returns object.

FieldTypeAlwaysDescription
tostringEnd of the window that was read, ISO 8601
fromstringStart of the window that was read, ISO 8601
namestringThe metric that was read
stepstringThe bucket width the series is rendered at
typestringone of: sum, histogramWhat the metric holds: a counter ("sum") or an explicit-bucket histogram
unitstringUnit as the emitter declared it; empty when none
seriesobject[]One series per label set, ordered stably
truncatedbooleanTrue when a ceiling cut the answer — more series exist than were returned
aggregationstringThe aggregation that was applied
stepSecondsnumberThat width in seconds — what a rate was divided by
GET/observe/traces/:traceId

Read every span of one trace of the current product, oldest first, as a flat list carrying parentSpanId and depth — enough to draw a waterfall without a second call. Span events are returned exactly as the emitter sent them. Up to 5000 spans.

MCP tool: observe_traces_get

Parameters

NameInTypeRequiredDescription
traceIdpathstringThe trace to render, by its 32-character hex id

Response

Returns object.

FieldTypeAlwaysDescription
spansobject[]Every span of the trace, oldest first; empty when the product has no such trace
traceIdstringThe trace that was read
GET/observe/traces/search

Search the traces of the current product, newest first. One row per trace: its root span, how long the whole trace took, how many spans it has and whether any of them failed. Filters are structured; there is no SQL surface. Page with nextCursor.

MCP tool: observe_traces_search

Parameters

NameInTypeRequiredDescription
environmentquerystringOnly traces of this environment, e.g. "production"
servicequerystringOnly traces one of whose spans belongs to this service, e.g. "api"
namequerystringOnly traces one of whose spans carries this exact span name, e.g. "GET /users"
statusquerystringone of: ok, error, unsetOnly traces in this state: "error" when any span failed, "ok" when none did and at least one reported OK, "unset" when no span reported a status
minDurationMsquerynumberOnly traces that took at least this many milliseconds end to end
maxDurationMsquerynumberOnly traces that took at most this many milliseconds end to end
traceIdquerystringOnly this trace, by its 32-character hex id
fromquerystringOldest span start to include, ISO 8601
toquerystringNewest span start to include, ISO 8601
limitqueryintegerHow many traces to return, 1-1000, default 100
cursorquerystringThe nextCursor of the previous page; omit for the first page

Response

Returns object.

FieldTypeAlwaysDescription
tracesobject[]The matching traces, newest first
nextCursorstring | nullPass back as cursor for the next page; null when the last page was reached
GET/observe/webhooks

List the webhook endpoints registered for this product. Signing secrets are never returned.

MCP tool: observe_webhooks_list

Parameters

No parameters.

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the endpoint
urlstringHTTPS endpoint events are POSTed to
activebooleanWhether deliveries are being attempted for it
createdAtstringISO 8601 registration timestamp
updatedAtstringISO 8601 timestamp of the last change
descriptionstring | nullFree-form note given at registration, or null
POST/observe/webhooks

Register an HTTPS endpoint to receive this product’s observe issue events, and mint its signing secret. The secret is returned here and NOWHERE ELSE — store it now: it cannot be read back and can only be replaced by rotating it. Plain http:// endpoints are rejected.

MCP tool: observe_webhooks_create

Parameters

NameInTypeRequiredDescription
urlbodystring (uri)HTTPS endpoint the event is POSTed to. Plain http:// is rejected
descriptionbodystringFree-form note about what this endpoint is for, up to 1000 characters

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the endpoint
urlstringHTTPS endpoint events are POSTed to
activebooleanWhether deliveries are being attempted for it
secretstringThe signing secret — shown only here, store it now; it cannot be read back
createdAtstringISO 8601 registration timestamp
updatedAtstringISO 8601 timestamp of the last change
descriptionstring | nullFree-form note given at registration, or null
DELETE/observe/webhooks/:id

Remove a webhook endpoint and its delivery log. Delivery stops immediately. To stop delivery while keeping the history, set the endpoint inactive instead.

MCP tool: observe_webhooks_delete

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the endpoint

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the removed endpoint
deletedbooleanone of: trueAlways true; the call fails otherwise
GET/observe/webhooks/:id

Read one registered webhook endpoint of this product. Its signing secret is never returned.

MCP tool: observe_webhooks_get

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the endpoint

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the endpoint
urlstringHTTPS endpoint events are POSTed to
activebooleanWhether deliveries are being attempted for it
createdAtstringISO 8601 registration timestamp
updatedAtstringISO 8601 timestamp of the last change
descriptionstring | nullFree-form note given at registration, or null
PATCH/observe/webhooks/:id

Edit a registered endpoint: its url, its description, or whether it is active. Setting active to false keeps the registration and stops delivery. Omit a field to leave it alone; pass null to clear the description. The signing secret is not editable here — rotate it instead.

MCP tool: observe_webhooks_update

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the endpoint to change
urlbodystring (uri)New HTTPS endpoint. Plain http:// is rejected
activebodybooleanfalse keeps the registration and stops delivery; true resumes it
descriptionbodystring | nullNew note, or null to clear it

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the endpoint
urlstringHTTPS endpoint events are POSTed to
activebooleanWhether deliveries are being attempted for it
createdAtstringISO 8601 registration timestamp
updatedAtstringISO 8601 timestamp of the last change
descriptionstring | nullFree-form note given at registration, or null
POST/observe/webhooks/:id/rotate-secret

Replace the signing secret of an endpoint and return the new one, exactly once. The old secret stops verifying immediately — there is no grace window, so update the receiver before rotating.

MCP tool: observe_webhooks_rotate_secret

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the endpoint

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the endpoint
urlstringHTTPS endpoint events are POSTed to
activebooleanWhether deliveries are being attempted for it
secretstringThe signing secret — shown only here, store it now; it cannot be read back
createdAtstringISO 8601 registration timestamp
updatedAtstringISO 8601 timestamp of the last change
descriptionstring | nullFree-form note given at registration, or null
GET/observe/webhooks/deliveries

List webhook delivery attempts for this product, newest first. Filter by endpoint or by state (pending, success, failed). Each row carries the event data that was sent, the last HTTP status and why the last attempt failed.

MCP tool: observe_webhooks_deliveries_list

Parameters

NameInTypeRequiredDescription
webhookIdquerystringOnly deliveries for this endpoint
statusquerystringone of: pending, success, failedOnly deliveries in this state
limitqueryintegerPage size, 1..200
offsetqueryintegerNumber of deliveries to skip

Response

Returns object[].

Item fieldTypeAlwaysDescription
idstringIdentifier of the delivery, also sent as the envelope id
statusstringone of: pending, success, failedpending means attempts remain; failed means the retry ladder is spent
payloadstringThe event data that was sent, before snake_case conversion
createdAtstringISO 8601 time the delivery was opened
eventNamestringEvent that was delivered, e.g. "observe/issue.created"
lastErrorstring | nullWhy the last attempt failed, or null
webhookIdstringEndpoint the delivery is for
deliveredAtstring | nullISO 8601 time it succeeded, or null
attemptCountnumberHow many attempts have been made so far
idempotencyKeystringIdentity of the source event, repeated on every attempt and on a redelivery
lastStatusCodenumber | nullHTTP status of the last attempt, or null
POST/observe/webhooks/deliveries/:id/redeliver

Send a past delivery to its endpoint again, with the original payload and the original idempotency key — a receiver that already processed it can recognise and ignore the repeat. The original delivery is kept as history and a new one is opened for this attempt. If the endpoint has since been disabled, nothing is delivered.

MCP tool: observe_webhooks_redeliver

Parameters

NameInTypeRequiredDescription
idpathstringIdentifier of the delivery to send again

Response

Returns object.

FieldTypeAlwaysDescription
idstringIdentifier of the delivery, also sent as the envelope id
statusstringone of: pending, success, failedpending means attempts remain; failed means the retry ladder is spent
payloadstringThe event data that was sent, before snake_case conversion
createdAtstringISO 8601 time the delivery was opened
eventNamestringEvent that was delivered, e.g. "observe/issue.created"
lastErrorstring | nullWhy the last attempt failed, or null
webhookIdstringEndpoint the delivery is for
deliveredAtstring | nullISO 8601 time it succeeded, or null
attemptCountnumberHow many attempts have been made so far
idempotencyKeystringIdentity of the source event, repeated on every attempt and on a redelivery
lastStatusCodenumber | nullHTTP status of the last attempt, or null
Was this page helpful?
Esc

Start typing to search the docs.

navigateselect