Individual risk
Each individual risk assessment produces a score between 0 and 1, computed as:Context-aware component risk (60%)
Five reputation components are weighted differently depending on the action type:
Different actions weight these differently. A
financial_transaction emphasizes compliance (0.30) and integrity (0.30). A task_delegation emphasizes coherence (0.35) — can this agent hand off work reliably? A multi_agent_coordination action weights coherence highest (0.40).
Six action types are supported:
financial_transaction, data_access, task_delegation, tool_invocation, autonomous_operation, and multi_agent_coordination. Each has a distinct weight profile tuned to the risks specific to that action.Recency penalty (30%)
Recent violations count more than old ones. The engine uses exponential decay with a 30-day half-life:Confidence penalty (10%)
Agents with limited behavioral history receive an uncertainty premium:insufficient data adds 0.30, low adds 0.20, medium adds 0.10, and high confidence adds nothing.
Amount scaling
Whencontext.amount is supplied (e.g. for a financial_transaction), the composite R is multiplied by a log10-based scale that grows with transaction size: roughly 1.0x at 1,000, 1.2x at 100,000, and 1.4x at $1,000,000, capped at 1.5x. No amount (or an amount ≤ 0) leaves the score unscaled.
Risk levels and recommendations
The composite score maps to four risk levels. Thresholds shift based on the caller’s risk tolerance:
Each level maps to a recommendation:
approve (low/medium), review (high, requires human approval), or deny (critical, block the action).
Team risk
Team risk assessment evaluates whether a group of agents is safe to operate together. A team of individually low-risk agents can still be dangerous.Three-pillar model
Shapley attribution
After computing team coherence, the engine attributes each agent’s marginal contribution using leave-one-out (LOO) Shapley values:Circuit breakers
Hard safety floors override the continuous score when conditions are extreme:- Any agent with reputation below 200 forces the team to critical/deny
- Any pairwise boundary compatibility below 100 forces critical/deny
Additional analytics
Team recommendations
Zero-knowledge proofs
Every risk assessment can optionally be backed by a cryptographic proof. Immediately after/risk/assess or /risk/assess/team computes a score, the risk service fires an asynchronous, fire-and-forget request to a separate proving service and links the resulting proof_id to the assessment. The risk score and recommendation are returned synchronously and are always valid regardless of proof status — an absent or failed proof never invalidates the assessment.
Proof lifecycle and fail-open behavior
proof_status (on the assessment) and status (on the proof object returned by GET /v1/risk/proofs/:proof_id) share the same lifecycle:
Proofs typically complete within tens of seconds. Poll
GET /v1/risk/proofs/:proof_id to follow a proof from pending through to verified or failed; see Get proof in the API reference.
Proof availability depends on the feature entitlements active on the caller’s account — see Feature gating. Current μ-based usage pricing has no fixed plan tiers; check your account settings for which entitlements are active.
Authorization model
All Risk API endpoints require authentication. Pass your credentials as either:- Bearer token:
Authorization: Bearer <token> - API key:
X-Mnemom-Api-Key: <key>
Account-scoped GET endpoints
GET endpoints that retrieve a stored resource by ID —GET /v1/risk/assessments/:assessment_id, GET /v1/risk/team-assessments/:assessment_id, and GET /v1/risk/proofs/:proof_id — are account-scoped. A request with a valid token from a different account returns 404 rather than 403. This prevents leaking resource existence to authenticated callers who do not own the resource.
List endpoints (GET /v1/risk/history/:agent_id, GET /v1/risk/team-history/:team_id) filter implicitly to the calling account and return an empty list rather than 404 when the requested ID belongs to a different account.
Which agents you can assess
Assessing another organization’s public or unlisted agent is allowed — that counterparty check is what the engine is for. An assessment never carries reputation data that the reputation API itself withholds, so bothPOST /v1/risk/assess and POST /v1/risk/assess/team check every agent first:
- Private reputation — an agent whose reputation visibility is
privatecan be assessed only by a member (owner,admin,memberorviewer) of the organization that governs it. Anyone else gets403with codereputation_private. - Deleted agents — a deleted (tombstoned) agent returns
404with codeagent_not_found. - Teams by
team_id— a team assessment byteam_idrequires membership in the team’s organization. A team in an organization you don’t belong to returns the same404as a team that doesn’t exist.
503 and code membership_unresolved; retry it.
See also
- Reputation Scores — the input data that feeds risk assessments
- Team Trust Rating — team-level reputation built from team risk assessments
- Fleet Coherence — the pairwise coherence data used for team risk
- Integrity Checkpoints — how violations are detected
- Risk Engine Guide — step-by-step usage with SDK examples
- Security & Trust Model — the broader cryptographic verification pipeline