# `get_group_details`

Reads one group, its member roster, and the active goals shared with it.

Annotations: `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

## When to use it

- To see who's in a group, for example before deciding whether to share a goal with it.
- To find your goal in a group you named, through `ownGoals`.
- To find the ID of a fellow member's goal shared with the group.

Reuse a `publicId` you already have instead of listing groups again.

## Inputs

| Input | Required | Type | Description |
| --- | --- | --- | --- |
| `groupPublicId` | yes | string | A `publicId` from [`list_groups`](/docs/mcp/tools/list_groups): 32 lowercase hexadecimal characters |

## Returns

`{ "group": ... }`. The group has the [`list_groups`](/docs/mcp/tools/list_groups) fields, plus:

| Field | Type | Description |
| --- | --- | --- |
| `roster` | list | The group's members, moderators first |
| `goals` | list | Every active goal shared with the group that you can read, newest first, with the [`list_goals`](/docs/mcp/tools/list_goals) fields |
| `ownGoals` | list | The goals in `goals` that you own |

Each roster entry has:

| Field | Type | Description |
| --- | --- | --- |
| `memberId` | string | Member ID |
| `displayName` | string or null | Name |
| `email` | string or null | Email address, for your own use only |
| `imageUrl` | string or null | Profile photo |
| `isModerator` | boolean | Moderates the group |
| `isCurrentMember` | boolean | This entry is you |
| `isSearchable` | boolean | Gravity can search this member's network. It says nothing about who's in it. |
| `gmailConnectionState` | string | `connected`, `disconnected`, `never_connected`, or `unknown` |
| `canAskToConnect` | boolean | You could ask this member to connect Gmail in Gravity |

A goal owned by someone else never includes its private details: its `additionalContext` is empty and its `clarificationQuestion` is null. A goal hidden from this group is listed only for its owner. Read a goal with [`get_goal`](/docs/mcp/tools/get_goal) before acting on it.

A missing or inaccessible group returns the common `unavailable` error. Malformed IDs fail input validation before the application runs.

## Example

```json get_group_details
{
  "groupPublicId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}
```

Result (synthetic data):

```json result:get_group_details
{
  "group": {
    "publicId": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "name": "Synthetic founders",
    "description": null,
    "memberCount": 2,
    "hasActiveGoal": true,
    "isModerator": false,
    "roster": [
      {
        "memberId": "00000000-0000-4000-a000-000000000003",
        "displayName": "Synthetic member",
        "email": "member@example.test",
        "imageUrl": null,
        "isModerator": false,
        "isCurrentMember": true,
        "isSearchable": true,
        "gmailConnectionState": "connected",
        "canAskToConnect": false
      }
    ],
    "ownGoals": [
      {
        "id": "00000000-0000-4000-a000-000000000001",
        "memberId": "00000000-0000-4000-a000-000000000003",
        "beneficiary": null,
        "ownerName": "Synthetic member",
        "ownerImageUrl": null,
        "text": "Find design partners",
        "additionalContext": "Synthetic private details",
        "clarificationQuestion": null,
        "contextRevisionId": "00000000-0000-4000-a000-000000000002",
        "scopeVersion": 2,
        "suggestedByGravity": false,
        "retiredAt": null,
        "createdAt": "2026-10-09T00:00:00.000Z",
        "isOwner": true,
        "version": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      }
    ],
    "goals": [
      {
        "id": "00000000-0000-4000-a000-000000000001",
        "memberId": "00000000-0000-4000-a000-000000000003",
        "beneficiary": null,
        "ownerName": "Synthetic member",
        "ownerImageUrl": null,
        "text": "Find design partners",
        "additionalContext": "Synthetic private details",
        "clarificationQuestion": null,
        "contextRevisionId": "00000000-0000-4000-a000-000000000002",
        "scopeVersion": 2,
        "suggestedByGravity": false,
        "retiredAt": null,
        "createdAt": "2026-10-09T00:00:00.000Z",
        "isOwner": true,
        "version": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      },
      {
        "id": "00000000-0000-4000-a000-000000000002",
        "memberId": "00000000-0000-4000-a000-000000000003",
        "beneficiary": null,
        "ownerName": "Synthetic member",
        "ownerImageUrl": null,
        "text": "Find design partners",
        "additionalContext": "",
        "clarificationQuestion": null,
        "contextRevisionId": "00000000-0000-4000-a000-000000000002",
        "scopeVersion": 2,
        "suggestedByGravity": false,
        "retiredAt": null,
        "createdAt": "2026-10-09T00:00:00.000Z",
        "isOwner": false,
        "version": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
      }
    ]
  }
}
```

## Related

- [`get_goal`](/docs/mcp/tools/get_goal) reads one goal in full.
- [Find matches and search again](/docs/mcp/guides/find-matches) starts from a group name.
