Errors & limits
What can go wrong, and the boundaries to design around.
Errors
401Unauthorized
Missing, malformed, expired, or revoked credentials. Check the Authorization header or re-run the OAuth connect; generate a fresh token if needed.
404Not found
The endpoint URL is wrong. It must be exactly https://mcp.lemon.domains/mcp.
-32602Input 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 deniedOAuth 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 likeError: 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
-32602error 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_domainsaccepts 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.