action posthog_signals_scout_project_profile_get { label: "Get the current project profile" description: "Return the team's deterministic project profile. For the internal scout token the response reflects the newest non-expired cached row or a freshly-built one (lazy compute on cache miss); `force_refresh=true` skips the cache and rebuilds from authoritative sources. Public read callers (session auth or a `signal_scout:read` PAK) get the newest cached profile, or 404 if none has been built yet — they never trigger a rebuild. Read this at the start of a run to orient on the team's product mix, integrations, warehouse sources, signal coverage, and existing inbox surface." provider: posthog method: GET path: "/api/projects/{project_id}/signals/scout/project_profile/current/" encoding: json input: { type: "object" properties: { force_refresh: { type: "boolean" } } additionalProperties: false } output: { type: "object" description: "Wire shape for the project profile returned by `signals-scout-harness-project-profile-list`.\n\nRead this once at the start of a run (after `skill-get`) to orient on the team. Cache\nis per-team with a soft TTL (`PROFILE_TTL`); the response always reflects either the\nlatest cached profile or a freshly-built one if the cache was stale or the caller passed\n`force_refresh=true`." required: ["computed_at", "expires_at", "payload", "profile_id", "source_version"] properties: { computed_at: { type: "string" description: "ISO-8601 timestamp the profile was built." } expires_at: { type: "string" description: "ISO-8601 timestamp after which the profile is considered stale." } payload: { description: "Structured profile content. v1 has `inventory` only." type: "object" } profile_id: { type: "string" description: "UUID of the `SignalProjectProfile` row." } source_version: { type: "string" description: "Schema version of the inventory builder. Bumps invalidate older cached rows." } } } }