---
title: "Compare 2–10 teams' reputation scores"
method: GET
path: "/teams/reputation/compare"
tags: ["Team Reputation"]
---

# Compare 2–10 teams' reputation scores

`GET /teams/reputation/compare`

## Request

- Base URL: `https://api.mnemom.ai/v1`
- URL: `https://api.mnemom.ai/v1/teams/reputation/compare`
- Auth: none required

## Query parameters

- `ids` string, required

## Response `200`

Comparison.

- object
  - `teams` 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
- `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/e13923bd55ef?raw)
