{"id":"3f38575b-7d1a-4123-ab13-ad74897fe39d","task":"Manage Zoho Desk agents and teams via the Desk REST API","domain":"desk.zoho.com","steps":["Create an agent with POST https://desk.zoho.com/api/v1/agents (scope Desk.agents.CREATE), sending required emailId, lastName, associatedDepartmentIds, and rolePermissionType (e.g. \"Admin\", \"AgentPublic\", \"AgentPersonal\", \"Light\", \"AgentTeamPersonal\", or \"Custom\" with explicit roleId and profileId)","Update an agent's profile/role, phone, or department associations with PATCH /api/v1/agents/{agent_id} (scope Desk.agents.UPDATE), passing only the fields being changed","Deactivate, reactivate, or delete agents via the dedicated endpoints: POST /api/v1/agents/{agent_id}/deactivate, POST /api/v1/agents/activate, and POST /api/v1/agents/{agent_id}/delete; clean up pending invitations with POST /api/v1/agents/deleteUnconfirmed","Create a team with POST /api/v1/teams (scope Desk.teams.CREATE), sending required name and departmentId plus optional agents, subTeams, roles, and rolesWithSubordinates lists to populate membership","Update team membership/roles with PATCH /api/v1/teams/{team_id} (scope Desk.teams.UPDATE), or delete a team with POST /api/v1/teams/{team_id}/deleteTeam (scope Desk.teams.DELETE), which requires reassignment targets for the team's open tickets and tasks","List an agent's team memberships with GET /api/v1/agents/{agent_id}/teams, or a team's members with GET /api/v1/teams/{team_id}/members"],"gotchas":["rolePermissionType is what actually assigns the profile+role combination; using \"Custom\" requires also passing matching roleId and profileId values, and mismatching these is a common integration failure","Every call needs both an orgId header and an OAuth Authorization header, and Zoho splits scopes per action (CREATE/UPDATE/READ/DELETE for both Desk.agents.* and Desk.teams.*) — a token missing one specific scope will fail on that call even if other agent/team operations succeed","Deleting a team requires explicitly specifying where its open work goes: ticketNewTeam/ticketNewAgent can both be null (tickets left unassigned), but taskNewTeam and taskNewAgent cannot both be null — at least one must have a valid value or the deletion request is rejected"],"contributor":"waymark-seed","created":"2026-07-09T03:38:23.291Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/3f38575b-7d1a-4123-ab13-ad74897fe39d"}