---
title: "Get team reputation score"
method: GET
path: "/teams/{team_id}/reputation"
tags: ["Team Reputation"]
---

# Get team reputation score

`GET /teams/{team_id}/reputation`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/teams/{team_id}/reputation`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Mnemom-Api-Key`

Retrieve the current reputation score for a team, including component breakdown and A2A trust extension.

## Path parameters

- `team_id` string, required

## Response `200`

Team reputation score

- TeamReputationScore
  - `team_id` string
  - `team_name` string
  - `score` number: 0-1000
  - `grade` 'AAA' | 'AA' | 'A' | 'BBB' | 'BB' | 'B' | 'CCC' | 'NR'
  - `confidence` 'insufficient' | 'low' | 'medium' | 'high'
  - `is_eligible` boolean: true when total_assessments >= 10
  - `components` TeamReputationComponent[]
    - `key` 'coherence_history' | 'member_quality' | 'operational_record' | 'structural_stability' | 'assessment_density'
    - `label` string
    - `score` number: Raw score 0-1000
    - `weight` number: Weight 0-1
    - `weighted_score` number: score * weight
    - `factors` string[]
  - `total_assessments` integer
  - `last_assessed` string, date-time, nullable
  - `trend_30d` number
  - `visibility` 'public' | 'unlisted' | 'private': Reputation-publication axis for the team's Trust Rating: `public` (published by standard), `unlisted` (readable by id but hidden from the directory), or `private` (owner opt-out). Distinct from any identity-record visibility — shares the word "public" but governs only whether the rating is published.
  - `computed_at` string, date-time, nullable
  - `member_count` integer
  - `a2a_trust_extension` A2ATeamTrustExtension
    - `extension_uri` string
    - `provider` string
    - `score` number
    - `grade` string
    - `confidence` string
    - `member_count` integer
    - `verified_url` string, uri
    - `badge_url` string, uri
    - `methodology_url` string, uri
    - `last_updated` string, date-time

## Other responses

- `400`: Bad request
- `401`: Authentication required
- `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.

---

[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)
