Every observability tool can tell you your agent threw errors. None of them can tell you whether it did its job. Agent Score is one number, 0 to 100, for a project over a rolling window — and, more usefully, the evidence that produced it.

Five dimensions

Each dimension has its own estimator, its own confidence interval and its own coverage floors. They are weighted into the composite:

  • Outcome (35%) — whether the session ended with the user getting what they came for, from a sampled holistic verdict over the transcript rather than an error count
  • Reliability (25%) — the terminal failure rate, expressed as what survives twenty consecutive sessions
  • Cost (15%) — the share of spend that did not have to happen: cache gaps, context you paid to resend, work retried into success
  • Speed (15%) — time on the critical path that a reference run at frozen latency figures would not have spent
  • Safety (10%) — the harm rate over a jailbreak and PII suite, expressed across a hundred sessions

The two convex ones are deliberate. A 1% terminal failure rate reads as 82, not 99, because twenty sessions is roughly one user’s week.

It withholds rather than guesses

A daily sweep picks the shortest whole-week window that reaches the session floor — 7 days if the traffic is there, stepping out to 28 if it is not — runs the five estimators over one read of that window, and publishes an immutable snapshot. A published day never changes afterwards, not even when you force a recalculation.

When a dimension cannot be measured, the composite is withheld entirely rather than shown as four scores beside a gap. A day with no score is left out of the trend instead of zero-filled. If you are below the floors, the page tells you which requirement you are short of and by how much, rather than showing a bare “no score”.

Every number opens into its evidence

Deficits are attributed after the fact and can never move the score. Cost, Speed and Reliability get Shapley shares in their own units — dollars, seconds, sessions — alongside a separate fix-gain column showing what repairing each one would return. Outcome and Safety get issue rows carrying reach and no points. Every cause row hands you example sessions in a filter the sessions list accepts, so the number is two clicks from the transcripts underneath it.

Wherever you already work

The score is readable from outside the app on day one:

  • GET /v1/projects/{projectSlug}/agent-score, plus /history and /causes
  • getAgentScore, listAgentScoreHistory and getAgentScoreCauses over MCP
  • The TypeScript and Python SDKs, and latitude agent-score get|history|causes in the CLI

Today’s score or nothing: a stale score presented as current is the one error a reader cannot detect.

Agent Score is in early access, enabled per organization. See how the score works, or reach us at hello@latitude.so to turn it on for yours.