Menu

Errors & limits

What can go wrong, and the boundaries to design around.

Errors

401
Unauthorized
Missing, malformed, expired, or revoked credentials. Check the Authorization header or re-run the OAuth connect; generate a fresh token if needed.
404
Not found
The endpoint URL is wrong. It must be exactly https://mcp.lemon.domains/mcp.
-32602
Input validation error
A parameter failed the tool's input schema (wrong type, bad format, or out of range). The error names the field and the rule, e.g. expiryDate must match YYYY-MM-DD. Fix the argument and retry.
tool error
“Invalid date; use a real calendar date in YYYY-MM-DD format”
expiryDate matched the format but is not a real calendar date (e.g. 2027-13-45). Pass a valid date.
tool error
“Project not found or you don't have access to it”
The projectId does not exist, or it exists but you are not a member (or only a viewer on a write). Call list_projects to see your projects and roles.
tool error
“This domain already exists in this registrar account”
Domain names are unique per registrar account. Use update_domain, or choose a different account.
tool error
“Could not complete the request…”
A database-level error the server could not attribute to your input. The raw query is never exposed. Retry; if it persists, contact support.
access denied
OAuth sign-in succeeds but no data
The email you signed in with does not match a Lemon Domains account. Sign in with the same email as your account.

How errors are returned

Two shapes, depending on where the error is caught:

  • Tool-result errors. Business-rule and not-found errors come back as a normal tool result flagged isError: true, with text like Error: Domain not found. Your assistant reads these and can react.
  • Protocol validation errors. If an argument fails the tool's input schema, the call is rejected before the handler runs with a JSON-RPC -32602 error that names the bad field. Fix the argument and retry.

Database-level errors are always masked behind a neutral message; the server never returns a raw SQL query or your input values.

Limits

  • Transport. Streamable HTTP only; the legacy SSE transport is disabled.
  • Batch size. bulk_add_domains accepts up to 200 domains per call.
  • Request timeout. Individual requests run for up to 60 seconds.
  • Scopes. Tokens currently grant full read + write access; per-token scopes are planned.

Need something the tools don't cover yet? Let us know. The surface is growing.