MCPMCP Tools/Team

Team

Invite, update, and remove team members.

list_team_members

Readteam:read

List the agency's team members — everyone with (or invited to have) access to this agency's OS account. Each row has name, email, role (owner/admin/member), status (Owner / Active / Not Active / Invited), last session, weekly hours capacity, module permissions, and Slack link. Use this to find a member's id before update_team_member, resend_team_invite, revoke_team_invite, or remove_team_member.

Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_team_members",
    "arguments": {}
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.

MCPMCP Tools/Team/invite_team_member

invite_team_member

Writeteam:write

Invite a new team member to the agency by email — sends them a signup invite (or, if that email already has an active Synup account elsewhere, an account-link invite instead). Fails if that email is already on this agency's team (use resend_team_invite instead). permissions is a { moduleKey: boolean } map; omit to use the default "member" preset. Returns the new (pending) member's id.

Parameters
firstNamestringrequired
Invitee's first name (required).
lastNamestringrequired
Invitee's last name (required).
emailstringrequired
Invitee's email address (required).
permissionsobjectoptional
Per-module permission overrides ({ moduleKey: boolean }). Omit for the default "member" preset.
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "invite_team_member",
    "arguments": {
      "firstName": "string",
      "lastName": "string",
      "email": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.

MCPMCP Tools/Team/update_team_member

update_team_member

Writeteam:write

Edit a team member's weekly hours capacity, module permissions, or Slack link. Does NOT change their role (owner/admin/member — there is no way to change role through this action; it isn't editable in the product today). Pass only the fields you want to change. A Slack user id can only be linked to one member at a time — assigning it here unlinks it from whoever had it. Identify the member by their id (from list_team_members).

Parameters
memberIdstringrequired
The id of the team member to update (required).
weeklyHoursCapacitynumberoptional
Weekly hours capacity, 0–80.
permissionsobjectoptional
Per-module permission overrides ({ moduleKey: boolean }). Unspecified modules are set to false.
slackUserIdstringoptional
Slack member id to link for standup DMs. Pass an empty string to unlink.
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_team_member",
    "arguments": {
      "memberId": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.

MCPMCP Tools/Team/resend_team_invite

resend_team_invite

Writeteam:write

Resend a pending team invite email with a fresh 7-day link. Only works while the invite is still pending (status "Invited") — throws if the member already accepted. Identify the member by their id (from list_team_members).

Parameters
memberIdstringrequired
The id of the invited member to resend to (required).
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "resend_team_invite",
    "arguments": {
      "memberId": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.

MCPMCP Tools/Team/revoke_team_invite

revoke_team_invite

Writeteam:write

Revoke an accepted team member's access, removing them from the agency entirely (this permanently deletes their membership row — it is not reversible; they'd need to be re-invited). Only works for members who already accepted their invite (status "Active"/"Not Active") — use remove_team_member for a pending invite instead, or this throws. Cannot be used on the owner.

Parameters
memberIdstringrequired
The id of the member to revoke (required).
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "revoke_team_invite",
    "arguments": {
      "memberId": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.

MCPMCP Tools/Team/remove_team_member

remove_team_member

Writeteam:write

Remove a team member (pending invite or accepted member) from the agency. This permanently deletes their membership row — not reversible; they'd need to be re-invited from scratch. Cannot be used on the owner.

Parameters
memberIdstringrequired
The id of the member to remove (required).
Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_team_member",
    "arguments": {
      "memberId": "string"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

Response shape shown for illustration — the actual content depends on the tool and your data.