---
title: "N-Way value coherence for the org fleet (with care-framed recommendations)"
method: GET
path: "/orgs/{org_id}/coherence"
tags: ["Organizations"]
---

# N-Way value coherence for the org fleet (with care-framed recommendations)

`GET /orgs/{org_id}/coherence`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/orgs/{org_id}/coherence`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Mnemom-Api-Key`
  - API key in cookie `mnemom_session`

Returns a dimensional team-coherence vector (pairwise_governance_median / floor / max, conflict_edge_count, outlier_agents, pairwise) computed from the active alignment cards of every agent in the org. The response also carries `recommendations[]` — care-framed actionable suggestions derived from the structural findings (cards-as-primitive Phase 4 W2.5). Requires at least 2 agents with alignment cards — returns `insufficient_agents` otherwise. Cached 5 minutes in `fleet_coherence_snapshots`; recommendations are recomputed on each read so older snapshots gain the field without backfill. Feature-gated: `nway_coherence`. See ADR-025 (E-05).

## Path parameters

- `org_id` string, required

## Response `200`

Team-coherence result (or `insufficient_agents` stub).

- union
  - object: Team-coherence vector (v2 / ADR-025).
    - `pair_count` integer
    - `pairwise_governance_median` number, nullable
    - `pairwise_governance_floor` number, nullable
    - `conflict_edge_count` integer
    - `outlier_agents` unknown[]
      - unknown
    - `pairwise` unknown[]
      - unknown
    - `conscience_universal` boolean, nullable
    - `recommendations` object[]: Care-framed actionable recommendations derived from the structural findings. Each entry carries a `for_finding` discriminator (`outlier_agents`, `pairwise_governance_floor`, `conflict_edges`) plus interpretive prose. cards-as-primitive Phase 4 W2.5.
      - `for_finding` 'outlier_agents' | 'pairwise_governance_floor' | 'conflict_edges', required
      - `text` string, required
  - object
    - `error` 'insufficient_agents'
    - `agent_count` integer
    - `message` string

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `402`: Paid feature gate — the caller's plan doesn't include this operation's feature flag. Emitted by `requireFeature` / `requireEntitlement` in `src/org/rbac.ts`.
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate-limit exceeded. The global per-IP limiter (100 requests/minute, applied to every `/v1/*` route) rejected this request. Back off until the window resets — `Retry-After` carries the cooldown in seconds and `X-RateLimit-Reset` the absolute reset time.
- `500`: Server error — request was well-formed but the server failed to fulfill it. Typically a downstream dependency (DB / RPC / external API) returned an unexpected error.
- `503`: An upstream dependency is currently unavailable. The request was not processed; retry after the cooldown window.

---

[API](https://skmtc.dev/mnemom/apis/mnemom-api.md) · [All operations](https://skmtc.dev/mnemom/apis/mnemom-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mnemom/apis/mnemom-api/revisions/274b7a6ea182?raw)
