get_groups_by_id_members

Read-only

Calls GET /api/groups/{id}/members as the signed-in person · REST reference

List a group's memberships

Requires query:ListGroupsQuery — the plain group READ permission, not a membership-specific one — and the group's org in the caller's org tree, admin.groups.view held there or in an org above it (403 GROUP_VIEW_DENIED); platform staff bypass only the permission gate. A caller holding admin.groups.view in no org is refused 403 before the group is looked up. Rows are DAL GroupMembershipDetail records passed through unchanged, so timestamps are epoch MILLISECONDS. The DAL's roster applies: REMOVED and DECLINED memberships are left out, and every other state — INVITED, REQUESTED and REJECTED included — is returned. A caller wanting effective members filters on status itself (ACTIVE and APPROVED confer authority). There is no pagination: the DAL's default page of 50 is taken as-is. Envelope shape { success, data }, not a bare array.

Arguments

ArgumentTypeDescription
idpathstring (uuid)required

Example call

A client sends this over the MCP session; Claude and other agents build it for you. The values are placeholders — the shape is real.

json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_groups_by_id_members",
    "arguments": {
      "id": "11111111-1111-4111-8111-111111111111"
    }
  }
}

Result

On success (HTTP 200) the tool returns one text item holding the API's JSON, pretty-printed.

The group's membership records, in the success envelope.

json
{
  "data": [
    {
      "createdAt": 1,
      "id": "string",
      "roles": [],
      "status": "ACCEPTED",
      "updatedAt": 1,
      "acceptedAt": 1,
      "activatedAt": 1,
      "approvedAt": 1,
      "approvedBy": "string",
      "invitedAt": 1,
      "invitedBy": "string",
      "metadata": {},
      "rejectedAt": 1,
      "rejectedBy": "string"
    }
  ],
  "success": true
}

Fields

FieldTypeDescription
dataarray of object
data[].acceptedAtnumber | null
data[].activatedAtnumber | null
data[].approvedAtnumber | null
data[].approvedBystring | null
data[].createdAtnumber
data[].idstring
data[].invitedAtnumber | null
data[].invitedBystring | null
data[].metadataobject | null
data[].rejectedAtnumber | null
data[].rejectedBystring | null
data[].rejectionReasonstring | null
data[].removalReasonstring | null
data[].removedAtnumber | null
data[].removedBystring | null
data[].rolesarray of string
data[].status"ACCEPTED" | "ACTIVE" | "APPROVED" | "DECLINED" | "INVITED" | "REJECTED" | … (8 values)
data[].updatedAtnumber
successtrue

When it fails

A failed call returns isError: true with the API's message as text.

400

id is not a UUID.

403

Missing query:ListGroupsQuery, no admin.groups.view in any org, or none in the group's org (code: GROUP_VIEW_DENIED).

404

No such group. Carries code: GROUP_NOT_FOUND.

What the model is shown

This is the tool exactly as the server lists it in tools/list. The description starts with the REST call it makes.

json
{
  "name": "get_groups_by_id_members",
  "description": "GET /api/groups/{id}/members — Requires `query:ListGroupsQuery` — the plain group READ permission, not a membership-specific one — and the group's org in the caller's org tree, `admin.groups.view` held there or in an org above it (403 `GROUP_VIEW_DENIED`); platform staff bypass only the permission gate. A caller holding `admin.groups.view` in no org is refused 403 before the group is looked up. Rows are DAL `GroupMembershipDetail` records passed through unchanged, so timestamps are epoch MILLISECONDS. The DAL's roster applies: REMOVED and DECLINED memberships are left out, and every other state — INVITED, REQUESTED and REJECTED included — is returned. A caller wanting effective members filters on `status` itself (ACTIVE and APPROVED confer authority). There is no pagination: the DAL's default page of 50 is taken as-is. Envelope shape `{ success, data }`, not a bare array.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "id": {
        "type": "string"
      }
    },
    "required": [
      "id"
    ]
  },
  "annotations": {
    "readOnlyHint": true,
    "openWorldHint": false
  }
}