Team Tools
A team groups creators, roles and projects, and every token is scoped to exactly one.
A team groups creators, roles and projects, and every token is scoped to exactly one. These tools read and manage the teams the account can act in.
Tools
create_teamCreate TeamDESTRUCTIVEdelete_teamDelete TeamREADget_teamGet TeamREADlist_teamsList TeamsDESTRUCTIVEupdate_teamRename Teamcreate_team
DESTRUCTIVECreate a team owned by the caller. Growth-tier capability.
Creates a team owned by the caller. Teams are the tenant every project, plan and subscription hangs off; the caller becomes the owner, which is not a membership row and cannot later be removed or re-roled.
Growth-tier capability. On a lower tier this returns TEAM_TIER_REQUIRED and
creates nothing. See what the tier
gates.
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.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.
Arguments
name*stringTeam name, 1..255 characters.
What it returns
{ "data": { "id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "name": "Research Collective", "owner_user_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80" }}Emits team.created.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team:create.
TEAM_TIER_REQUIREDthe caller's platform tier does not include Teams.
VALIDATION_FAILEDname empty or longer than 255 characters.
delete_team
DESTRUCTIVEDelete a team and everything scoped to it. Owner only, irreversible.
Deletes a team. Only the owner may do it — destroying the container everyone else works in is not something a member can decide.
Irreversible, and it takes everything with it
A team is the tenant that projects, plans, subscriptions, roles and groups hang off. Deleting one is not a tidy-up; confirm with a human before calling this. The tool is annotated destructive so a client can prompt for confirmation.
Unlike create_team and update_team, this is not tier-gated. A creator
whose tier lapsed has to be able to take access away. See what the tier
gates.
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.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.
Arguments
team_id*stringUUID of the team to delete. Irreversible.
What it returns
{ "data": { "id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "deleted": true }}Emits team.deleted.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team:delete.
RESOURCE_NOT_FOUNDno such team, or the caller is not a member.
VALIDATION_FAILEDthe caller is a member but not the owner.
get_team
READFetch a single team by UUID from the caller's visibility set (owned + membership). Foreign teams return RESOURCE_NOT_FOUND.
Fetch one team the authenticated user owns or belongs to. Foreign teams always return RESOURCE_NOT_FOUND to prevent existence leaks.
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 to fetch.
What it returns
{ "data": { "id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "name": "Research Studio", "owner_user_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80", "personal": false, "created_at": "2026-05-18T10:05:00Z" }}How it fails
RESOURCE_NOT_FOUNDteam_id is not a valid UUID, or it falls outside the caller's visibility set.
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team:view.
list_teams
READList every team the authenticated user owns or belongs to. Read-only — team CRUD stays in the dashboard.
List every team the caller has visibility into. Useful before minting a token scoped to a specific team — agents can surface a picker instead of making the user hunt for a UUID. Read-only; team create/update/delete flows stay in the dashboard.
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
This tool takes no arguments.
What it returns
{ "data": [ { "id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "name": "Research Collective", "owner_user_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80", "personal": true, "created_at": "2026-01-12T10:05:00Z" } ], "meta": { "total": 1 }}personal is true for the auto-created signup team and false for every other team the user created or joined.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team:view-any.
update_team
DESTRUCTIVERename a team. Owner only, Growth-tier capability.
Renames a team. name is the only mutable field on a team — ownership does not transfer, and the tier a team sits on is a property of the owner's billing rather than of the team.
Only the owner may rename. Belonging to a team is enough to read it and to add to it; changing what everyone else's workspace is called is the owner's alone.
Growth-tier capability. On a lower tier this returns TEAM_TIER_REQUIRED and
changes nothing.
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.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. It reaches beyond Subscriby: a connector, a provider or a member.
Arguments
team_id*stringUUID of the team to rename.
name*stringNew team name, 1..255 characters.
What it returns
{ "data": { "id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86", "name": "Research Collective", "owner_user_id": "2a91c4e7-6f38-4b52-8e0d-9c1a7b3f5d80" }}Emits team.updated, which fires however the rename happened — this tool, the REST endpoint, or the dashboard.
How it fails
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks team:update.
TEAM_TIER_REQUIREDthe caller's platform tier does not include Teams.
RESOURCE_NOT_FOUNDno such team, or the caller is not a member. A team in another account is invisible rather than forbidden, so the tool cannot be used to discover that an id exists.
VALIDATION_FAILEDname empty or too long, or the caller is a member but not the owner.
How is this guide?