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
It reads and never changes anything.
Arguments
team_id*stringUUID 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_FOUNDteam_id is not a valid UUID, or the team falls outside the caller's visibility set.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team-member:view-any.
How is this guide?
Last updated on