Errors
Successful responses return the result in data:
Errors return a message in error, and sometimes a code and details:
Status codes
400: Invalid input.401: Invalid or expired credentials.402: Free AI allowance and credits used up.403: Insufficient scope or permission.404: Missing or inaccessible resource.405: Unsupported method.409: Version conflict.413: Oversized body.429: Rate limit.500: Unexpected server error.
For 401 responses, and for 403 responses caused by a missing scope, the WWW-Authenticate header says what is missing. OAuth endpoints return standard OAuth errors.
Changes saved without confirmation
A 500 response with the code mutation_committed_result_unconfirmed means your change was saved, but the API could not confirm the result. Read the item before you retry so the change is not made twice. MCP tools report this case with isError: true and the same { success: false, error, code } body as JSON text, without structuredContent.