Event timing
Elect a Surgery Date
find_surgery_time
Elect the moment for a surgery or an operation. Elects on houses 1, 5 and 11, which are the CURE houses, not the disease houses. Astrology for Beginners pp.790-791: "11th house which is the 6th from the 6th house, recovery and cure" and "The 5th house, which is the 12th to the 6th house, promises cessation of suffering." This elects toward recovery, not toward the operation. Houses 6 and 8 are the disease and 12 is the hospitalisation: they describe the illness and are not what a treatment is elected on. The corpus also prefers the dasa lord's star day when the dasa lord is a strong benefic (Astrology for Beginners p.792), and its worked cataract election names three candidate star days and flags the likeliest, which is not the earliest. Read 'windows[].discriminator' before assuming the soonest window is the answer. SURGICAL SCHEDULING BELONGS TO THE SURGEON. This is a supplementary lens, not medical advice and not a reason to move, delay or decline a procedure. Say that in the same breath as any window. If the clinical timing is fixed, that decides it, and no elected moment overrides it. Never use it to argue against an urgent or emergency operation. ASK FOR THE THEATRE'S USABLE HOURS AND PASS THEM AS 'preferred_time_of_day'. Operating lists have hours, and KP elects inside the window the world has already fixed. It is the single biggest improvement to this answer, and it is also what keeps the output inside what the hospital can actually offer. For whether recovery is promised and when, call 'get_cure_window', 'get_surgery_success' or 'get_medical_timing'. Those answer a different question from this one. Returns '{ event, granularity, windows[], selection, significatorSet, scanSummary, provenanceSummary, relaxations[], disclaimer, summary }'. Each window carries startLocal, endLocal, durationMinutes, layersSatisfied, verdict, resolvingLayer, matchedConditions[], discriminator and rank. There is no score and no top ten. Election in KP is read-only. It locates a moment this chart already points at and it does not cause the outcome of the surgery. Report windows in startLocal and endLocal, never in UTC.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| birth_datetime | string | Yes | Birth date and time in ISO 8601 format (e.g., "1990-05-15T14:30:00"). |
| latitude | number | Yes | Birth location latitude. Range: -90 to 90. |
| longitude | number | Yes | Birth location longitude. Range: -180 to 180. |
| utc_offset_minutes | number | Yes | UTC offset in minutes (e.g., 330 for IST, -300 for EST). |
| ayanamsa | enum: kp | kp_new | lahiri | raman | true_chitra | khullar | No | Ayanamsa system. Defaults to kp. |
| bosmia_lens | boolean | No | no description |
| scan_start | string | No | First moment to consider, ISO 8601. A bare datetime is read as local time at the place of the action. Defaults to now. |
| scan_days | number | No | Days to scan. Clamped by granularity: 365 for day, 90 for hour, 30 for minute. Default 7. |
| granularity | enum: day | hour | minute | No | Election precision. 'minute' runs the Ascendant layer and gives the narrowest window, 'hour' stops at the Moon sub, 'day' groups by local civil day. Defaults to this event's own default. |
| preferred_time_of_day | object | No | What this window is, for example "office hours" or "before the registrar closes". Echoed back in the response. |
| event_latitude | number | No | Latitude of where the action happens. Defaults to the birth latitude. KP computes the Ascendant for the place of the action, not the place of birth. |
| event_longitude | number | No | Longitude of where the action happens. Defaults to the birth longitude. |
| event_utc_offset_minutes | number | No | UTC offset at the place of the action, in minutes. Defaults to the birth offset. Drives every local time in the response. |
| max_windows | number | No | Override the default output shape and take a pool of up to 25 instead of the one elected moment. Only use this when the user explicitly asks to see the whole field. |
Example call
Send the request as a standard MCP tools/call:
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_surgery_time",
"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.