READ

list_team_members

List the people on a team, the owner first, each with the role they hold there. Email addresses only for a token that may view a member.

List the staff and guests on a team. The owner's pseudo-row is prepended to every member, with is_owner: true, a null role_id and the role code admin; every other row carries the role the member holds on this team, such as business_analyst or developer, which decides what they may do there.

A token holding only team-member:view-any gets the roster without email addresses: the email key is absent, not null. A token that also holds team-member:view gets it on every row, as the REST show route does.

Requires ability

The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.

Runs the same action as

The REST endpoint and this tool share one action, so validation, permissions and events are identical.

Annotations

Read-only

It reads and never changes anything.

Arguments

team_id*string

UUID of the team whose members to list.

What it returns

{  "data": [    {      "id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80",      "team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86",      "name": "Priya Patel",      "email": "priya@example.com",      "role_id": null,      "role": "admin",      "is_owner": true,      "joined_at": "2026-01-12T10:05:00+00:00"    },    {      "id": "5e0c7a2d-9b1f-4c3e-8d6a-2f4b7c9e1a30",      "team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86",      "name": "Nimal Perera",      "email": "nimal@example.com",      "role_id": "d05e1a83-7c46-4f29-b613-8ae407c9d251",      "role": "developer",      "is_owner": false,      "joined_at": "2026-04-02T14:15:00+00:00"    }  ],  "meta": { "total": 2 }}

How it fails

RESOURCE_NOT_FOUND

team_id is not a valid UUID, or the team falls outside the caller's visibility set.

AUTHENTICATION_REQUIRED

no authenticated user on the request.

TOKEN_MISSING_ABILITY

token lacks team-member:view-any.

How is this guide?

Last updated on