Skip to content
Lumindocs
UseBuild
Open Lumin

Reference

Error codes

Every Lumin error follows the same shape: an MCP error object with a stable code, a human-readable reason, and (where useful) a recovery hint.

The error shape

{
  "isError": true,
  "content": [{
    "type": "text",
    "text": "Daily limit reached. Resets at 00:00 UTC."
  }],
  "_meta": {
    "code": "rate_limited",
    "recoverable": false
  }
}

All codes

CodeHTTPCauseRecovery
rate_limited429Daily quota or burst limit reachedStop reading, surface to user, do not retry
invalid_event_name400Event keyword not recognizedMap to nearest known event or pass house_group override
birth_data_missing400Tool requires birth data and none in contextCall set_birth_profile, then retry once
validation_failed400Schema validation rejected inputFix input, do not retry blindly
auth_invalid401Bearer token rejectedRefresh OAuth or rotate API key
auth_expired401OAuth token expiredRefresh against /token endpoint
tier_insufficient403Tier does not allow this tool or limitUpgrade tier or use a free-tier alternative
user_suspended403Account is suspendedContact support, no automated recovery
engine_unavailable502kp-engine transient failureExponential backoff, max 2 retries
engine_timeout504kp-engine slow responseRetry with timeout extension or skip phase
internal_error500Unhandled MCP-side errorRetry once, then escalate with request id

Idempotency

All Lumin tool calls are pure. Retrying produces the same result, and failed calls do not count against your quota.