Skip to main content
Projections are read-only derived views. Each one reports where its numbers came from and how fresh they are — meta carries a projectionStatus, a sourceCursor (or an explicit null with a status when a cursor is not available), and an evidenceStatus that distinguishes measured data from insufficient evidence. Update the source records, not the projection. All four are GET operations accepting Authorization: Bearer oxk_... or a web-app session, scoped by workspace_id.

Work ledger — GET /api/v1/projections/work-ledger

Aggregated work activity over a time window: tool calls, conversations, sessions, runs, receipts, decisions, and artifacts, bucketed by time and broken down by source client and initiative. Response data: buckets[] (each with counts, per-client and per-initiative splits), clients[], initiatives[], totals, sources[], mode (aggregated or scanned), truncated, and queryMs. meta carries projectionStatus: "derived_work_ledger" and a freshness block; When sourceCursor is null, sourceCursorStatus explains why a shared cursor is not available. The API reports that state explicitly. When mode is scanned, counts come from bounded reads and may be a floor; use truncated and the freshness metadata when deciding how much confidence to place in the result.

Adoption — GET /api/v1/projections/adoption

How much a confirmed operating process is actually used. Response data: eligiblePopulation, targetPathPopulation, behavioralAdoptionRate (nullable), selfReportedAdoptionRate (nullable — behavioral and self-reported are never merged), bypassCount, shadowSystemCount, confidence, limitations[], refreshedAt. meta reports evidenceStatus: "measured" only when there is real behavioral signal; otherwise "insufficient_evidence".

Value case — GET /api/v1/projections/value-case

The evidence-gated economic view of one process. Response data: baseline and comparison periods, realizedOutcomeRefs[], costMeterEventRefs[], attributionLinkRefs[], benefit ranges (annualHardBenefit, annualCapacityValue, each low/expected/high), cost ranges, roiRange, paybackMonthsRange, confidence, limitations[]. Reference arrays stay empty until the underlying outcomes are independently bound — meta.evidenceStatus is "realized_outcome_bound" only when at least one realized outcome exists.

Meter usage — GET /api/v1/projections/meter-usage

Effective usage derived from immutable meter events, with corrections applied. Response data: event counts (raw vs corrected), quantity totals split into actualQuantity and estimatedQuantity, per-meter buckets[], evidenceStatus (measured, estimated, or insufficient_evidence), limitations[], and billingReady — a capability flag for billing decisions; this projection is a usage view, not an invoice.

All operations on these resources

Where the IDs come from

MCP equivalents

No MCP tool reads these projections today — they are REST-first. The MCP orgx_recommend morning-brief mode reads a separate summary surface.