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 MCPorgx_recommend morning-brief mode reads a separate summary surface.