provider signals POST /api/projects/{project_id}/signals/scout/runs/{run_id}/emit-signal/
@utdk/posthog /api/projects/{project_id}/signals/scout/runs/{run_id}/emit-signal/
Emit a finding for a run
Fire `emit_signal` with `source_product = signals_scout`. The `finding_id` is baked into the deterministic `Signal.source_id = run:<id>:finding:<id>` for traceability, but this is NOT idempotent — a second call with the same `finding_id` emits a second signal, so do not retry an emit that may have already succeeded.
project_id path required
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
string
run_id path required
UUID of the `SignalScoutRun` bridge row.
string

Try it

Authentication
Configure credentials for PostHog API
signalsScoutEmitSignal
POST/api/projects/{project_id}/signals/scout/runs/{run_id}/emit-signal/
Fire `emit_signal` with `source_product = signals_scout`. The `finding_id` is baked into the deterministic `Signal.source_id = run:<id>:finding:<id>` for traceability, but this is NOT idempotent — a second call with the same `finding_id` emits a second signal, so do not retry an emit that may have already succeeded.

Parameters

required

Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.

required

UUID of the `SignalScoutRun` bridge row.

Input

required

Canonical evidence-bundle prose. Becomes the signal's `description`.

required

Agent's confidence the finding is real in [0, 1]. Persisted in `extra`.

required

Citations supporting the finding. Capped at 20 entries.

Optional one-line hypothesis the finding tests.

Optional severity tag — one of P0, P1, P2, P3, P4. Informational only. * `P0` - P0 * `P1` - P1 * `P2` - P2 * `P3` - P3 * `P4` - P4

Optional keys for downstream dedupe (e.g. `error_tracking_issue:<id>`).

Optional category tags as lowercase kebab-case slugs (e.g. `cost-spike`, `silent-failure`), max 10. Reuse the vocabulary in your `tags:<domain>:taxonomy` scratchpad entry when a tag fits; coin a new slug when a genuinely new category emerges. Near-miss formats are normalized to slugs; persisted in the signal's `extra.tags` and on the emission row.

Optional time window the finding refers to.

Optional MCP trace id for cross-system debugging.

Stable id for this finding, baked into the signal's source_id for traceability. NOT a dedupe key — re-emitting the same id creates another signal.

Configure credentials above to enable sending.

Code snippet
Updates live as you fill in the form above.

TypeScript

import posthog from '@utdk/posthog';

await posthog.signalsScoutEmitSignal()