---
title: "Mcp List Source Duplicates"
method: GET
path: "/v1/mcp/projects/{project_id}/source-duplicates"
tags: ["mcp"]
---

# Mcp List Source Duplicates

`GET /v1/mcp/projects/{project_id}/source-duplicates`

## Request

- Base URL: `https://api.sonenta.dev`
- URL: `https://api.sonenta.dev/v1/mcp/projects/{project_id}/source-duplicates`
- Auth: none declared

List duplicate source-value groups with their persisted status (task 1114),
paginated. `status` narrows the result (an agent pulls status=neutral to scope
the untriaged backlog, or status=to_fix for human-requested repairs). Groups are
computed then sliced [offset:offset+limit]; `total` is the full filtered count so
the agent can page deterministically.

## Path parameters

- `project_id` string, required

## Query parameters

- `version_id` string, nullable
- `status` string, nullable: neutral | allowed | to_fix | resolved. `neutral` is the UNTRIAGED default (detected, no decision yet); pass status=neutral to self-scope the untriaged backlog. to_fix = a human requested a fix.
- `offset` integer
- `limit` integer: Page size. The full unpaginated dump is too large for an agent to hold.

## Response `200`

Successful Response

- DuplicateGroupsPage
  - `items` DuplicateGroupOut[], required
    - `source_value` string, required
    - `namespace_slug` string
    - `key_count` integer, required
    - `key_names` string[], required
    - `key_uuids` string[], required
    - `status` string, required
    - `note` string, nullable
    - `merge_plan` MergePlan
      - `clusters` MergeCluster[], required
        - `canonical_key_uuid` string, nullable
        - `new_key` NewCanonicalKey
          - `name` string, required
          - `namespace` string, required
        - `new_key_created` boolean
        - `redundant_key_uuids` string[], required
        - `applied` boolean
      - `survivor_outcome` string, required
    - `ai_diagnosis` string, nullable
    - `ai_proposed_plan` object, nullable
    - `ai_model` string, nullable
    - `ai_diagnosed_at` string, date-time, nullable
    - `ai_diagnosis_cached` boolean
  - `total` integer, required
  - `offset` integer, required
  - `limit` integer, required
  - `has_more` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sonenta/apis/sonenta-api.md) · [All operations](https://skmtc.dev/sonenta/apis/sonenta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sonenta/apis/sonenta-api/revisions/f853ea49fb05?raw)
