Advanced techniques
Ayanamsa Frame Spread (what the choice of ayanamsa actually changes)
get_frame_spread
Builds the SAME chart under every ayanamsa the engine implements and reports exactly which positions change lord and which hold. Use it instead of a birth-time disclaimer: the KP and Chitrapaksha frames (kp, kp_new, khullar, lahiri, true_chitra) disagree by a fixed ~5 arcminutes, so among them the set of positions that actually move is small and nameable; Raman's zero point sits about 1 degree 27 arcminutes below Lahiri, roughly one whole sub, so with raman in the comparison most cusps move, and 'spreadByFamily' shows which frame makes the spread large. Returns per cusp and per planet the levels that move (sign / star / sub / subSub) with the lord each frame gives, the base lords always, a 'summary' with 'frameIndependentAtSub' (true for about a third of charts across the five KP and Chitrapaksha frames, which is a stronger statement than any caveat, and for none once raman is included), the dasha balance spread in days (a fixed offset carried to every later period boundary, and a flag when the frames disagree on the birth mahadasha lord outright), and 'birthTimeEquivalence': how much clock-time error each position's frame spread is worth. That last block is the reframe. On the Ascendant the five KP and Chitrapaksha frames are worth well under a minute of birth time, so the frame is noise there, and raman several minutes; on the slow planets it is worth hours or days, so the frame is the entire uncertainty and no birth-time precision can settle it. Nothing here is scored, ranked or averaged, and no frame is preferred: a position either changes lord or it does not. All six frames are computed, 'true_chitra' from Spica's apparent place and 'raman' from Raman's own zero point, so none carries an 'aliasOf'.
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. |
| frames | unknown | No | no description |
| include_subsub | unknown | No | no description |
| include_dasha | unknown | No | Report the dasha balance spread per frame. Default true. |
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": "get_frame_spread",
"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.