Skip to content
docs
UseBuildChangelog
Open Lumin
All tools

Event timing

Event Timing (v2)

find_event_timing_v2

Enhanced KP event timing: checks all 3 dasha levels (MD+AD+PD must jointly signify required houses), filters against the Ruling Planets of the moment of judgement (fruitful significators only; 'judgement_datetime', default now, KP Reader 4; the birth-moment set rides beside it as 'atBirth'), integrates transit hierarchy for year/month/day narrowing. Use this instead of find_event_timing for precise, methodologically correct KP timing. Returns '{ event, isPromised, promise, fruitful[], candidatePeriods: [{ md, ad, pd, start, end, coverage, fruitful, confidence, subLordJudgement, strictSelection }], confidenceProvenance, subLordRule, kskSubCleared, candidateOrderings, strictSelectionRule, transitTiming, transitTimingFor, summary, pagination, pageNote }'. 'transitTimingFor' names the candidate 'transitTiming' narrows: the first in list order still running at the moment of judgement, scanned from no earlier than that moment (F260). 'candidateOrderings' states two orders of the same candidates as variants, each a list of 'candidateIndexes' with a methodology note (what it does, its source class and locus, how it differs): 'lumin-confidence', the default and the list's own order, labelled through 'scoreProvenance'; and 'ksk-sub-lord-first', the candidates whose three sub lords all give ahead of the rest, each tier earliest first (Reader 3 canon p.151, Reader 6 canon p.294). Name the order you quote; never blend them. 'promise.coverageGrade' (full/strong/thin/none) is a GRADE: only 'none', the cuspal sub lord reaching no required house, denies (F057; this tool kept a 50% denial until 2026-09-11). 'promise.cslMotion' reports whether the cuspal sub lord is retrograde and, if so, the dates it turns direct and re-crosses its turning degree (F063); reported, gating nothing. **'candidatePeriods' is paged and ordered by 'confidence'**, a Lumin ordering convention and not a KP quantity ('confidenceProvenance' names its weights as unsourced); page on when the user's real-world constraint rules the first windows out. **Read the sub lord before the order.** KSK judges every period lord by its sub lord (Reader 3 canon p.151, Reader 6 canon p.294): each candidate's 'subLordJudgement' gives, for the MD, AD and PD lords, the sub lord, the houses it signifies and 'gives | negates | silent', and 'kskSubCleared' lists the candidates whose three sub lords all give, earliest first, beside the ordered list and never instead of it. On the 48-chart spread 23.6% of candidate periods carry a lord whose sub lord reaches no required house (every candidate, measured 2026-10-08; it read 31.9% over the first ten before that list was uncapped), 24.4% of top-ranked candidates ('scripts/bp019-dasha-sublord.ts'). 'strictSelection' per candidate tests each lord on the two clauses Astrology for Beginners canon p.318 states (posited 6/8/12 to the matter; in the sub of a planet in a detrimental house), reported, removing nothing. Dates are ISO instants. 'judgement.holdsUntil' is the next instant those Ruling Planets change, solved and never a score: 'instant' in UTC, 'local' with the offset in force then only when 'judgement_time_zone' is sent, otherwise with the judgement's own offset (read 'utcOffsetSource'), and 'changes' naming the member (the Ascendant's or the Moon's sign or star lord, or the day lord at sunrise at the place) with its old and new lord. The 'fruitful' flags hold until that instant; say so when you quote them.

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.
eventevent nameNoLife event to find timing for. If omitted, the engine derives the most active event from the running MD+AD lord's signification with Ruling Planets tie-break, and returns it in the eventResolution field. Ignored if house_group is provided.
house_grouparray<house number (1-12)>NoOverride event lookup with explicit house numbers (1-12). When provided, event is ignored.
denial_grouparray<house number (1-12)>NoHouses that DENY the event (e.g., [1,5,9] deny marriage). Only used with house_group. If unsure, omit. The engine derives denial houses automatically from the event name.
judgement_datetimestringNoThe moment the matter is judged, local wall clock at the birth place unless judgement_latitude/longitude are given (e.g. 2026-09-27T12:00:00). Defaults to now. KP selects fruitful significators with the Ruling Planets of THIS moment (KP Reader 4), not the birth moment.
judgement_latitudenumberNoLatitude of the place of judgement. Defaults to the birth latitude.
judgement_longitudenumberNoLongitude of the place of judgement. Defaults to the birth longitude.
judgement_utc_offset_minutesnumberNoUTC offset of the place of judgement in minutes. Defaults to the birth offset when the place defaults to the birth place.
judgement_time_zonestringNoIANA time zone of the place of judgement (e.g. "Asia/Colombo"), instead of judgement_utc_offset_minutes: the offset in force there at judgement_datetime is read from the tz database. If both are given they must agree.

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": "find_event_timing_v2",
    "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.