Skip to content
docs
UseBuildChangelog
Open Lumin
All tools

Core analysis

Natal Promise Analysis

analyze_natal_promise

Run Cuspal Sub Lord (CSL) promise analysis across every defined life event. The CSL is the planet ruling the sub-division at a house cusp, KP's deciding factor for whether an event is promised at all. Each row returns the verdict AND the reasoning behind it: '{ event, house, csl, chain, verdict: ACTIVE|MIXED_ACTIVE|PARTIALLY_ACTIVE|DENIED, coverage, reason, required[], covered[], missing[], signifies[], levels: {L1..L4}, starLord, starLordSignifies[], starLordDenial, motion, notes }', plus 'mixed' on a MIXED_ACTIVE row, which is undecided at the cusp (both results operate, each in the dasa of its own significators, KP Reader 4 canon p.184; whether the matter holds is a predominance call KSK makes in prose, Reader 4 canon p.110, and the engine hands it to you with the evidence) and 'bhadhaka' on a longevity-class event. **'motion' reports the CSL's retrograde, combustion and dignity state and gates nothing** — see the response's 'motion_policy'. Paged: read 'pagination.totalItems' and request further pages rather than assuming the first page is everything. Use when: starting any life-area question, and call it BEFORE any timing tool. When the user knows the birth time only roughly, pass 'birth_time_uncertainty_minutes' and each row also carries 'timeStability' ('stable' or 'changes', with 'firstChangeMinutes'), stated once in 'birth_time_window'; a verdict marked 'changes' rests on the birth time and is not settled until it is rectified. The CSL's condition on each row ('extent', 'combustStar', 'motion' with its release dates) and 'motion_policy' are a claim about the CUSP, the same on every event that shares it, and gate nothing; that claim is also a tool of its own, named in 'methodSeams': 'get_csl_condition', one row per cusp. Every row here still carries it.

Parameters

NameTypeRequiredDescription
birth_datetimestringYesBirth date and time in ISO 8601 format (e.g., "1990-05-15T14:30:00").
latitudenumberYesBirth location latitude. Range: -90 to 90.
longitudenumberYesBirth location longitude. Range: -180 to 180.
utc_offset_minutesnumberYesUTC offset in minutes (e.g., 330 for IST, -300 for EST).
ayanamsaenum: kp | kp_new | lahiri | raman | true_chitra | khullarNoAyanamsa system. Defaults to kp.
birth_time_uncertainty_minutesnumberNoHow well the user knows the birth time, in minutes either side of the stated time. The user's own figure, never a guess; omit or 0 when the time is exact. When given, each verdict carries timeStability: whether it holds for every birth time in that window, and the nearest minute at which it changes.

Example call

Send the request as a standard MCP tools/call:

http
POST https://mcp.lumin.guru/mcp
Authorization: Bearer mcp_yourkey...
Accept: application/json, text/event-stream
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "analyze_natal_promise",
    "arguments": {
      "birth_datetime": "1992-08-14T04:32:00",
      "latitude": 6.927,
      "longitude": 79.861,
      "utc_offset_minutes": 330,
      "ayanamsa": "kp"
    }
  }
}

Birth data

This tool requires birth data on every call. The MCP server is stateless, so calling set_birth_profile first validates the data and returns the reading plan, but it does not store anything. Repeat the same five fields here.