# Error Codes — Zoom MCP Server

Errors can surface from the MCP protocol layer or from the underlying Zoom API-style behavior
behind a tool call.

## MCP Protocol Errors

| Code | Message | Cause | Fix |
|------|---------|-------|-----|
| `-32001` | `Access token is required` | Missing Authorization header because the bundled connector has no token | Set `ZOOM_MCP_ACCESS_TOKEN`, then restart Claude Code or re-enable the plugin |
| `-32001` | `Invalid access token` | Expired, revoked, malformed, or missing required scopes | Refresh the token and verify the MCP-specific scopes |
| `-32602` | `Can not found tool: ... in this MCP Server` | Wrong tool name or wrong MCP server surface | Re-run `tools/list` and use the current live tool names for that endpoint |
| `-32603` | `Call handle error` | Missing required parameter or server-side call handling failure | Re-check required arguments against the live schema and retry |

## Exact Scope Errors Observed in Testing

| Tool | Exact missing-scope error |
|------|---------------------------|
| `search_meetings` | `meeting:read:search` |
| `get_meeting_assets` | `meeting:read:assets` or `meeting:read:assets:admin` |
| `recordings_list` | `cloud_recording:read:list_user_recordings` or admin/master variants |
| `get_recording_resource` | `cloud_recording:read:content` |
| `create_file_with_content` | `docs:write:import` worked with user OAuth; S2S runtime error surfaced `docs_import:write` aliasing |
| `get_file_content` | `docs:read:export` |

## Recording and Transcript Failures

| Symptom | Likely cause | Fix |
|---------|-------------|-----|
| `get_recording_resource` fails on scope | Missing `cloud_recording:read:content` | Add the scope and mint a new token |
| Recording search/list works but transcript-capable retrieval fails | Token has list scope but not content scope | Add `cloud_recording:read:content` |
| Returned resource URL gives `401` | Bearer token not included on the follow-up fetch | Include the same bearer token on the direct request |

## Upstream API Validation Errors

Some tool calls can succeed at the MCP protocol layer but surface a downstream Zoom API
validation error in the result payload.

Common downstream validation response:

| Tool | Error shape | Cause | Fix |
|------|-------------|-------|-----|
| `create_file_with_content` | `Upstream API returned error status code: 400 ... "message":"invalid param"` | Invalid parameter value such as a bogus `parent_id` | Fix the argument value and retry |

## Whiteboard Server Split

The Zoom MCP server (`mcp.zoom.us/mcp/zoom/streamable`), the Zoom Docs MCP server
(`mcp.zoom.us/mcp/docs/streamable`), and the Whiteboard MCP server
(`mcp.zoom.us/mcp/whiteboard/streamable`) are separate surfaces.

Use the dedicated Whiteboard MCP skill for Whiteboard-specific auth, scopes, and identifier mapping:
- [../whiteboard/SKILL.md](../whiteboard/SKILL.md)

## Debugging Checklist

1. Confirm the client can discover the current MCP tool list through `tools/list`.
2. Confirm the bearer token is fresh.
3. Verify the exact MCP-specific scopes, not just adjacent REST scopes.
4. Re-discover the target meeting or recording instead of reusing guessed IDs.
