List the per-(team, skill) scout configs for this project. Each row includes its schedule (rolling run_interval_minutes, or a project-local run_cron_schedule when set), enabled, emit posture, and tags. A freshly authored scout skill appears here once its config is registered, either explicitly via create or by the coordinator's next tick. Pass tags to narrow the fleet to the scouts carrying at least one of the given labels.
643 matches
60 actions
PostHog
60 actions
- Fetch CI checks for a report's implementation PRGETv1.0.0
- Fetch comments for a report's implementation PRGETv1.0.0
- Fetch the diff for a commit artefactGETv1.0.0
- Get a channelGETv1.0.0
- Get a loopGETv1.0.0
- Get a run by IDGETv1.0.0
- Get a single artefactGETv1.0.0
- Get a team's quota-limit stateGETv1.0.0
- Get active breakpoints (External API)GETv1.0.0
- Get active task session storage accessGETv1.0.0
- Get app sandbox statusGETv1.0.0
- Get breakpoint hitsGETv1.0.0
- Get channel instructionsGETv1.0.0
- Get iframe connection info for a running appGETv1.0.0
- Get repository readinessGETv1.0.0
- Get scout metadataGETv1.0.0
- Get taskGETv1.0.0
- Get task runGETv1.0.0
- Get task run logsGETv1.0.0
- Get the channel's CONTEXT.md generation taskGETv1.0.0
- Get the current project profileGETv1.0.0
- Get the team's active onboarding wizard cloud runGETv1.0.0
- listGETv1.0.0
- List a report's artefactsGETv1.0.0
- List a report's signalsGETv1.0.0
- List a run's emitted findingsGETv1.0.0
- List blind-spots skills and which one is activeGETv1.0.0
- List channel feed messagesGETv1.0.0
- List channelsGETv1.0.0
- List distinct task repositoriesGETv1.0.0
- List external customer analytics accountsGETv1.0.0
- List living artifacts for a task runGETv1.0.0
- List loop runsGETv1.0.0
- List loopsGETv1.0.0
- List marketing data sourcesGETv1.0.0
- List mentions of the requesterGETv1.0.0
- List pinned tasksGETv1.0.0
- List project members for reviewer routingGETv1.0.0
- List recent emitted findings across all runsGETv1.0.0
- List recent reviewsGETv1.0.0
- List recipients opted out of a message categoryGETv1.0.0
- List review perspectives and their enablementGETv1.0.0
- List review validators and which one is activeGETv1.0.0
- List scout configsGETv1.0.0
- List streamlit appsGETv1.0.0
- List subscription deliveriesGETv1.0.0
- List suppressed email addresses for the teamGETv1.0.0
- List task runsGETv1.0.0
- List the inbox reports a run's findings linked toGETv1.0.0
- List the requester's task activityGETv1.0.0
- List thread messagesGETv1.0.0
- query_draft_sql_retrieveGETv1.0.0
- query_log_retrieveGETv1.0.0
- query_retrieveGETv1.0.0
- Read the connected project's identityGETv1.0.0
- retrieveGETv1.0.0
- Retrieve a streamlit appGETv1.0.0
- Retrieve one review's detailGETv1.0.0
- Retrieve subscription deliveryGETv1.0.0
- retrieve_session_summaries_configGETv1.0.0
Analytics/PostHog
List scout configs
v1.0.0Input
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
{
"type": "object",
"properties": {
"project_id": {
"type": "string"
},
"tags": {
"type": "string"
}
},
"required": [
"project_id"
],
"additionalProperties": false
}Output
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
{
"type": "array",
"items": {
"type": "object",
"description": "Read shape for a per-(team, skill) scout config.\n\nOne row per scout skill on the team. The coordinator auto-creates a row\nwhen it discovers a scout skill; this serializer lets agents tune the row.",
"required": [
"auto_pause_exempt",
"consecutive_failure_count",
"created_at",
"description",
"emit",
"enabled",
"id",
"last_run_at",
"mcp_gateway_server_ids",
"model",
"network_access",
"output_destinations",
"owners",
"pause_reason",
"run_cron_schedule",
"run_interval_minutes",
"scout_origin",
"skill_name",
"source_id",
"source_product",
"status",
"status_changed_at",
"structured_output_schema",
"write_scopes"
],
"properties": {
"auto_pause_exempt": {
"type": "boolean",
"description": "Whether this scout is exempt from the inactivity sweep, meaning both the `ignored` pause and the `no_output` quiet warning. Set it on watchdog scouts whose value is staying quiet. Only ever set explicitly: re-enabling a swept scout instead grants a fresh grace window before the sweep may judge it again."
},
"consecutive_failure_count": {
"type": "integer",
"description": "How many of this scout's runs have failed in a row. Back to 0 after a successful run or any config edit. At the failure limit the scout pauses itself (`status` becomes `paused_by_system` with `pause_reason` `repeated_failures`) and retries about once a day; a successful retry resumes it, and so does setting `enabled=true`."
},
"created_at": {
"type": "string",
"format": "date-time"
},
"description": {
"type": "string",
"description": "Human-readable summary of what this scout investigates, sourced from the scout skill's `description` metadata. Use it for a quick steer on the scout's focus without loading the full skill body. Empty if the skill is not currently present on the team or carries no description."
},
"display_name": {
"type": "string",
"description": "Name shown in the UI. Does not change the skill name. Leave blank to use the default name."
},
"emit": {
"type": "boolean",
"description": "Whether the scout writes findings to the inbox. False = dry-run: it runs and logs but emits nothing."
},
"enabled": {
"type": "boolean",
"description": "Whether this scout runs on its schedule. Disabled scouts are skipped by the coordinator. Derived from `status`: true for `active` and `pending_pause`, false for the paused statuses."
},
"id": {
"type": "string",
"format": "uuid"
},
"last_run_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the coordinator last dispatched this scout. Null if it has never run."
},
"mcp_gateway_server_ids": {
"type": "array",
"description": "MCP gateway servers (by id) this scout's runs may use, chosen from the connections members shared to the whole team. Selection is per scout: an empty list gives the scout no MCP servers. Applies from the scout's next run.",
"items": {
"type": "string",
"format": "uuid"
}
},
"model": {
"type": [
"string",
"null"
],
"description": "Optional model id this scout's runs are pinned to, e.g. `claude-opus-4-5`. Must be one of the platform's agent models; an invalid id is rejected with the available ones listed. Null keeps the default model, chosen by the platform. Early access: the pin can only be set on projects enrolled in the scout model preview, and only takes effect there. Set null to clear it."
},
"network_access": {
"description": "What the scout's sandbox can reach over the network while it runs. `trusted` (the default) restricts runs to the platform's trusted-domain allowlist (PostHog, GitHub, common package registries). `full` lets the scout reach any site, for skills that read external sources such as documentation or papers.\n\n* `trusted` - Trusted domains only\n* `full` - Full",
"type": "object"
},
"output_destinations": {
"description": "Destinations that receive each finding or report this scout emits. Empty when none is configured.",
"type": "object"
},
"owners": {
"type": "array",
"description": "Who answers for this scout, seed-creator first. Ownership is recorded on the scout's skill rather than on this config, so editing the skill or toggling the scout leaves it unchanged. Reports the scout files suggest these people as reviewers. Prefer this over `created_by`-style fields, which only say who last flipped a switch. Empty when nobody owns the scout, when the owners are no longer members with access to the project, or when the caller is a scout sandbox token: owners are member PII, and a scout reads them through the skill API instead.",
"items": {
"type": "object",
"required": [
"email",
"hedgehog_config",
"id",
"uuid"
],
"properties": {
"distinct_id": {
"type": [
"string",
"null"
]
},
"email": {
"type": "string",
"format": "email"
},
"first_name": {
"type": "string"
},
"hedgehog_config": {
"type": [
"object",
"null"
]
},
"id": {
"type": "integer"
},
"is_email_verified": {
"type": [
"boolean",
"null"
]
},
"last_name": {
"type": "string"
},
"role_at_organization": {
"type": "object"
},
"uuid": {
"type": "string",
"format": "uuid"
}
}
}
},
"pause_reason": {
"description": "Why the system paused (or warned) this scout: `no_output` (it emitted nothing over the evaluation window), `ignored` (no person engaged with its reports — no view, rating, note, dismissal, or resolution), or `repeated_failures` (consecutive failed runs). Null unless `status` is `pending_pause` or `paused_by_system`.\n\n* `no_output` - No output\n* `ignored` - Ignored\n* `repeated_failures` - Repeated failures",
"type": "object"
},
"run_cron_schedule": {
"type": [
"string",
"null"
],
"description": "Optional five-field cron expression evaluated in the project timezone, e.g. '30 9 * * *'. Takes precedence over `run_interval_minutes` when set. Null means the rolling interval schedule."
},
"run_interval_minutes": {
"type": "integer",
"description": "Minutes between runs (30–43200). The scout runs once this interval has elapsed since its last run."
},
"scout_origin": {
"description": "Where this scout came from: `canonical` for a scout PostHog ships and maintains (seeded from `products/signals/skills/`), or `custom` for one a team hand-authored on this project. Use it to badge built-in vs custom scouts instead of a hardcoded name list. Defaults to `custom` if the skill is not currently present on the team.",
"type": "object"
},
"skill_name": {
"type": "string",
"description": "The skill this config controls as a scout. Set at creation, not editable."
},
"source_id": {
"type": [
"string",
"null"
],
"description": "Id of the owning object in `source_product`, e.g. a Replay Vision scanner id."
},
"source_product": {
"type": [
"string",
"null"
],
"description": "The product that stood this scout up for one of its own objects. Null when a person created it."
},
"status": {
"description": "Lifecycle status. `active`: runs on its schedule. `pending_pause`: still running, but flagged by the system to pause soon unless something changes (any config edit clears it). `paused_by_system`: paused automatically, see `pause_reason`; set `enabled=true` to resume. `paused_by_user`: switched off by a person and never resumed automatically.\n\n* `active` - Active\n* `pending_pause` - Pending pause\n* `paused_by_system` - Paused by system\n* `paused_by_user` - Paused by user",
"type": "object"
},
"status_changed_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When `status` last changed. For `pending_pause` this is when the warning was issued (an `ignored` warning pauses about a week later unless someone engages with the scout's reports — opening one counts; a `no_output` warning only flags the scout); for the paused statuses it is when the scout was paused. Null if the status never changed."
},
"structured_output_schema": {
"type": [
"object",
"null"
],
"description": "Optional JSON Schema (draft 2020-12) describing ONE structured record this scout produces via `scout-record-output` — e.g. a per-report quality judgment (`{\"type\": \"object\", \"properties\": {\"verdict\": {\"enum\": [\"good\", \"bad\", \"unsure\"]}, \"reason\": {\"type\": \"string\"}}, \"required\": [\"verdict\", \"reason\"]}`). The root must be `\"type\": \"object\"`. Setting a schema turns the structured-output channel on: the run prompt renders the schema and every submitted record is validated against it and recorded in the project as a `$scout_structured_output` event, queryable like any event. The channel also requires emit — a dry-run scout has nowhere to record to. Cardinality is the scout's call (one record per run, one per judged entity, ...). Null = channel off. Setting a schema requires skill-authoring authorization (the `llm_skill:write` scope and skill editor access) since the scout reads it verbatim in its prompt; clearing it needs only the config write. Records validate against the schema in force when the run was dispatched."
},
"tags": {
"type": "array",
"description": "Free-form labels for grouping the fleet, e.g. `[\"revenue\", \"on-call\"]`. Normalized to lowercase kebab-case (`On Call` and `on_call` both become `on-call`), deduped, and stored sorted; at most 10 tags, each at most 50 characters once normalized. Pass the full desired set — a write replaces the existing tags rather than merging into them. Filter the config list with the `tags` query parameter.",
"items": {
"type": "string"
}
},
"write_scopes": {
"type": "array",
"description": "Extra write access granted to this one scout, as scope strings. The grantable set is `alert:write`, `annotation:write`, `dashboard:write`, `insight:write`, `llm_skill:write`, `warehouse_table:write`, `warehouse_view:write`. Empty (the default) means the scout reads the project and writes only what every scout may write: notebooks, its findings, and its own memory. Each scope is project-wide and object-level, so a scout holding `dashboard:write` can update or delete any dashboard in the project, not only ones it made. Grant only what this scout maintains. Only the person the scout's runs act as (whoever authored it) or a project admin can set it, and a scoped API key must itself carry each scope it grants. A dry run (`emit=false`) never holds the grant. Applies from the scout's next run.",
"items": {
"type": "string"
}
}
}
}
}