Koskamo

Sahadeva MCP

A remote MCP server for Vedic astrology that provides deterministic chart calculations, Panchanga, dashas, compatibility analysis, muhurta, and AI-narrated readings.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Sahadeva MCP logo, by MagicTeamsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by MagicTeams
MCP endpoint (Streamable HTTP)
https://sahadeva.magicteams.ai/mcp
Vendor documentation

What its tools do

101 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Read-only (96)

101 of 101 have a description · 101 of 101 declare behavior hints · 1 of 94 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Generate Vedic astrology charts
  • Calculate Panchanga details
  • Analyze dashas and muhurta
  • Perform kundli matching

Source and maintenance

Community listingRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
sahadeva 0.5.0
MCP protocol negotiated in check
2025-11-25
Tools
101 advertised
Resources
10 advertised
Resource templates
1 advertised
Prompts
8 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "logging": {},
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "extensions": {
    "io.modelcontextprotocol/ui": {
      "mimeTypes": [
        "text/html;profile=mcp-app"
      ]
    }
  },
  "completions": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Sahadeva is a deterministic Vedic astrology (Jyotishya) engine. It calculates; you interpret, keeping its evidence and uncertainty intact. If list_my_people is available, call it first whenever the person says "my chart", "my wife", "my son" and so on, so you never ask for birth details they already saved. Questions about life areas or timing: consult_jyotishya (retain profileRef for follow-ups). To show the chart: calculate_chart_from_known_place. Today or a date: get_panchanga. Matching: calculate_compatibility. Whole family: compare_family_timing. Unsure: recommend_tools. Pass explicit latitude, longitude and IANA timezone when you know them; otherwise pass the place name and use search_locations if it is ambiguous. For a tool's exact arguments and output, read the sahadeva://tools/{name} resource. Keep traditions (Parashari, Jaimini, KP, Lal Kitab) as separate ledgers. Frame interpretations as possibilities; never guarantee events, diagnose, or predict death, fertility or legal outcomes.

Tools

101 advertised

recommend_tools — Recommend which Sahadeva tool(s) to call for a question
Advertised by the server during the last successful anonymous check.
Advertised read-only

Router / planner. Give it the user's natural-language question and optional context flags and it returns a deterministic, ordered call plan — the primary tool, why, the arguments it needs, alternatives and relevant resource URIs — so you know exactly what to call BEFORE calling it. Read-only, makes no astrological claim. Call this first when unsure which of the many tools fits.

recommend_tools input schema
{
  "type": "object",
  "required": [
    "question"
  ],
  "properties": {
    "context": {
      "type": "object",
      "properties": {
        "language": {
          "enum": [
            "en",
            "te"
          ],
          "type": "string"
        },
        "hasProfileRef": {
          "type": "boolean"
        },
        "hasBirthDetails": {
          "type": "boolean"
        },
        "hasSecondPerson": {
          "type": "boolean"
        }
      }
    },
    "question": {
      "type": "string",
      "minLength": 2
    }
  }
}
recommend_tools output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "intent",
    "primaryTool",
    "plan",
    "safety"
  ],
  "properties": {
    "plan": {
      "type": "array"
    },
    "intent": {
      "type": "string"
    },
    "safety": {
      "type": "object"
    },
    "primaryTool": {
      "type": "string"
    },
    "schemaVersion": {
      "const": "sahadeva-tool-router-1"
    }
  }
}
recommend_tools annotations
{
  "title": "Recommend which Sahadeva tool(s) to call for a question",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_locations — Find a chart location
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Searches Sahadeva's deterministic local catalogue and geographic index. It never invokes another AI model. If no result exists, the MCP host should resolve the place with its own capabilities and pass coordinates to the chart tool.

search_locations input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 8,
      "maximum": 20,
      "minimum": 1
    },
    "query": {
      "type": "string",
      "minLength": 2
    }
  }
}
search_locations output schema
{
  "type": "object",
  "required": [
    "query",
    "status",
    "matches"
  ],
  "properties": {
    "query": {
      "type": "string"
    },
    "status": {
      "enum": [
        "resolved",
        "ambiguous",
        "not_found"
      ],
      "type": "string"
    },
    "matches": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "latitude",
          "longitude",
          "timezone",
          "timezoneOffset"
        ]
      }
    }
  }
}
search_locations annotations
{
  "title": "Find a chart location",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_chart_from_known_place — Calculate a chart from a place or coordinates
Advertised by the server during the last successful anonymous check.
Advertised read-only

SHOW THE BIRTH CHART. Use when the person wants to see their chart, planet positions, Navamsa or running dasha. Returns a compact readable summary (Lagna, planet table, current Vimshottari, birth Panchanga, Navamsa) and, in hosts that support MCP Apps, an interactive South Indian Rasi/Navamsa chart with a dasha timeline. For interpretation of a question use consult_jyotishya instead. Calculates a complete South Indian chart from a known catalogue place or explicit latitude, longitude, and IANA timezone supplied by the MCP host. Bare place names auto-resolve to the curated best-effort match with alternatives noted. This deterministic tool never invokes another AI model.

calculate_chart_from_known_place input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -12
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_chart_from_known_place output schema
{
  "type": "object",
  "additionalProperties": true
}
calculate_chart_from_known_place annotations
{
  "title": "Calculate a chart from a place or coordinates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_family_timing — Compare family members' running periods side by side
Advertised by the server during the last successful anonymous check.
Advertised read-only

Family view for 2–6 linked people (for example wife, husband, children, parents). For each person: current mahadasha and antardasha with dates, upcoming period changes, Sade Sati / Ashtama Shani status, and the windows when two or more members are under Saturn pressure together. Use it when a question involves the whole family. It reports dated overlaps only and never treats one chart as the cause of another person's events.

compare_family_timing input schema
{
  "type": "object",
  "required": [
    "people"
  ],
  "properties": {
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "relation",
          "date",
          "time"
        ],
        "properties": {
          "date": {
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "name": {
            "type": "string"
          },
          "time": {
            "type": "string",
            "pattern": "^\\d{2}:\\d{2}$"
          },
          "place": {
            "type": "string",
            "description": "Town or village; \"<village>, near <town>\" is accepted"
          },
          "latitude": {
            "type": "number",
            "maximum": 90,
            "minimum": -90
          },
          "relation": {
            "type": "string",
            "description": "How this person relates to the one asking, e.g. self, husband, wife, son, daughter, mother"
          },
          "timezone": {
            "type": "string"
          },
          "longitude": {
            "type": "number",
            "maximum": 180,
            "minimum": -180
          },
          "birthTimeAccuracyMinutes": {
            "type": "number",
            "default": 5,
            "maximum": 1440,
            "minimum": 0
          }
        }
      },
      "maxItems": 6,
      "minItems": 2
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "horizonYears": {
      "type": "number",
      "default": 2,
      "maximum": 5,
      "minimum": 1
    }
  }
}
compare_family_timing output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "asOfIso",
    "endIso",
    "people",
    "sharedSaturnPressure"
  ],
  "additionalProperties": true
}
compare_family_timing annotations
{
  "title": "Compare family members' running periods side by side",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_compatibility — Calculate Ashtakoota, Porutham and Kuja compatibility
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolves both birth places, calculates both charts, and returns separate auditable North Indian 36-point Ashtakoota and South Indian ten-Porutham breakdowns plus Mangal/Kuja Dosha evidence. Traditional research preview; never a relationship verdict.

calculate_compatibility input schema
{
  "type": "object",
  "required": [
    "bride",
    "groom"
  ],
  "properties": {
    "bride": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5,
          "maximum": 1440,
          "minimum": 0
        }
      }
    },
    "groom": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5,
          "maximum": 1440,
          "minimum": 0
        }
      }
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    }
  }
}
calculate_compatibility output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subjects",
    "ashtakoota",
    "porutham",
    "kujaDosha",
    "sourceCoverage",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "porutham": {
      "type": "object"
    },
    "subjects": {
      "type": "object"
    },
    "kujaDosha": {
      "type": "object"
    },
    "ashtakoota": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-compatibility-1"
    },
    "sourceCoverage": {
      "type": "object"
    }
  }
}
calculate_compatibility annotations
{
  "title": "Calculate Ashtakoota, Porutham and Kuja compatibility",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_relationship_compatibility — Relationship compatibility (business, friends, siblings, and more)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Gender-neutral Nakshatra compatibility between any two people for a chosen bond — business partner, friend, sibling, colleague, mentor/student, roommate or general. Resolves both places, calculates both charts, and returns per-factor Tara, Graha Maitri, Gana, Yoni, Bhakoot and Moon-element evidence weighted for that relationship, plus a 0-100 harmony index. Traditional research preview; never a verdict on any relationship.

calculate_relationship_compatibility input schema
{
  "type": "object",
  "required": [
    "personA",
    "personB",
    "relationship"
  ],
  "properties": {
    "personA": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5,
          "maximum": 1440,
          "minimum": 0
        }
      }
    },
    "personB": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5,
          "maximum": 1440,
          "minimum": 0
        }
      }
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "relationship": {
      "enum": [
        "business_partner",
        "friend",
        "sibling",
        "colleague",
        "mentor_student",
        "parent_child",
        "roommate",
        "general"
      ],
      "type": "string",
      "default": "general"
    }
  }
}
calculate_relationship_compatibility output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "relationship",
    "subjects",
    "harmony",
    "factors",
    "sourceCoverage",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "factors": {
      "type": "array"
    },
    "harmony": {
      "type": "object"
    },
    "subjects": {
      "type": "object"
    },
    "relationship": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-relationship-compatibility-1"
    },
    "sourceCoverage": {
      "type": "object"
    }
  }
}
calculate_relationship_compatibility annotations
{
  "title": "Relationship compatibility (business, friends, siblings, and more)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_panchanga — Get complete daily Panchanga
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the five limbs plus Rahu Kaal, Yamaganda, Gulika, Bhadra status, Abhijit and Brahma Muhurta, day/night Choghadiya, 24 Horas, solar-day context, festival flags, and optional Tara/Chandra Bala from a natal chart.

get_panchanga input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "natal": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5
        }
      }
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
get_panchanga output schema
{
  "type": "object",
  "additionalProperties": true
}
get_panchanga annotations
{
  "title": "Get complete daily Panchanga",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_muhurta — Find ranked Muhurta windows
Advertised by the server during the last successful anonymous check.
Advertised read-only

Ranks candidate windows over a bounded date range using activity Panchanga fitness, prohibited-period avoidance, optional Tara/Chandra Bala, instant Lagna structure, and activity-karaka condition. Returns every pass/fail reason and draft source key.

find_muhurta input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "activity",
    "startDate",
    "endDate"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "natal": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        },
        "birthTimeAccuracyMinutes": {
          "type": "number",
          "default": 5
        }
      }
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "endDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "activity": {
      "enum": [
        "marriage",
        "griha_pravesh",
        "travel",
        "business_start",
        "vehicle_purchase",
        "property_purchase",
        "naming",
        "contract",
        "important_conversation",
        "new_venture",
        "surgery"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "startDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
find_muhurta output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "activity",
    "rulebook",
    "windows",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "windows": {
      "type": "array"
    },
    "activity": {
      "type": "string"
    },
    "rulebook": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-muhurta-1"
    }
  }
}
find_muhurta annotations
{
  "title": "Find ranked Muhurta windows",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_elected_lagna — Find elected-Lagna windows
Advertised by the server during the last successful anonymous check.
Advertised read-only

EXPERT electional search: finds ascendant-sign windows across 1 day (up to 3 with an API key) and scores each elected Lagna structurally (lord strength and dignity, benefic/malefic placement, Moon condition, activity-karaka state, prohibited-period overlap). Ineligible windows stay visible with fail reasons; draft rules, never a guarantee.

find_elected_lagna input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "startDate"
  ],
  "properties": {
    "days": {
      "type": "integer",
      "default": 1,
      "maximum": 3,
      "minimum": 1
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "activity": {
      "enum": [
        "marriage",
        "griha_pravesh",
        "travel",
        "business_start",
        "vehicle_purchase",
        "property_purchase",
        "naming",
        "contract",
        "important_conversation",
        "new_venture",
        "surgery"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "startDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
find_elected_lagna output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "place",
    "rulebook",
    "windows",
    "safety"
  ],
  "properties": {
    "place": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "windows": {
      "type": "array"
    },
    "rulebook": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-elected-lagna-1"
    }
  }
}
find_elected_lagna annotations
{
  "title": "Find elected-Lagna windows",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_doshas — Calculate evidence-first Dosha patterns
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculates Mangal/Kuja, Kaal Sarpa enclosure, Kemadruma, and conservative Pitru-related structural candidates with raw/effective severity and explicit cancellation or mitigation evidence.

calculate_doshas input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_doshas output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subject",
    "patterns",
    "summary",
    "rulebook",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "subject": {
      "type": "object"
    },
    "summary": {
      "type": "object"
    },
    "patterns": {
      "type": "array"
    },
    "rulebook": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-doshas-1"
    }
  }
}
calculate_doshas annotations
{
  "title": "Calculate evidence-first Dosha patterns",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_kp — Calculate KP structural preview
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns KP Placidus cusps (tropical cusp longitudes checked against six Swiss Ephemeris reference values; abstains where Placidus is undefined at high latitudes), KP sidereal positions using Lahiri with the corpus-specified 6′ correction (located in the source, not reproduced against a reference), Nakshatra star, sub and sub-sub lords, ruling planets and significator evidence. Rulers, significators and event logic are a structural preview, not independently certified.

calculate_kp input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_kp output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "status",
    "zodiac",
    "cusps",
    "planets",
    "rulingPlanets",
    "significators",
    "safety"
  ],
  "properties": {
    "cusps": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "status": {
      "type": "string"
    },
    "zodiac": {
      "type": "object"
    },
    "planets": {
      "type": "array"
    },
    "rulingPlanets": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-kp-preview-1"
    },
    "significators": {
      "type": "array"
    }
  }
}
calculate_kp annotations
{
  "title": "Calculate KP structural preview",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_jaimini — Calculate Jaimini structural chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns seven- and eight-Chara-Karaka conventions, all Arudha Padas including Arudha Lagna and Upapada, Karakamsha, and Jaimini Rashi Drishti matrices without silently mixing conventions.

calculate_jaimini input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_jaimini output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "status",
    "charaKarakas",
    "arudhaPadas",
    "karakamsha",
    "devataProfile",
    "rashiDrishti",
    "charaDasha",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "status": {
      "type": "string"
    },
    "charaDasha": {
      "type": "object"
    },
    "karakamsha": {
      "type": "object"
    },
    "arudhaPadas": {
      "type": "object"
    },
    "charaKarakas": {
      "type": "object"
    },
    "rashiDrishti": {
      "type": "object"
    },
    "devataProfile": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-jaimini-1"
    }
  }
}
calculate_jaimini annotations
{
  "title": "Calculate Jaimini structural chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_varshaphal — Calculate Varshaphal annual chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Casts the sidereal (Lahiri) solar-return chart for a target year and returns Tajaka Varshaphal: Muntha, the five office-bearers with Panchavargiya and Harsha Bala, the year lord, the sixteen Tajaka yogas, cited Sahams (Punya first), and Mudda and Patyamsa dashas.

calculate_varshaphal input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "targetYear"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "targetYear": {
      "type": "integer",
      "maximum": 2050,
      "minimum": 1800
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_varshaphal output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "status",
    "subject",
    "solarReturn",
    "annualChart",
    "muntha",
    "tajika",
    "safety"
  ],
  "properties": {
    "muntha": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "status": {
      "type": "string"
    },
    "tajika": {
      "type": "object"
    },
    "sources": {
      "type": "array"
    },
    "subject": {
      "type": "object"
    },
    "annualChart": {
      "type": "object"
    },
    "conventions": {
      "type": "array"
    },
    "solarReturn": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-varshaphal-2"
    }
  }
}
calculate_varshaphal annotations
{
  "title": "Calculate Varshaphal annual chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_ayanamsa_chart — Calculate a selectable ayanamsa projection
Advertised by the server during the last successful anonymous check.
Advertised read-only

Projects placements and sign-based Graha Drishti under Lahiri, Krishnamurti, Raman, or Fagan/Bradley, reports boundary changes, and preserves per-convention validation status. Non-Lahiri full derived systems are not silently recomputed.

calculate_ayanamsa_chart input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "ayanamsa"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "ayanamsa": {
      "enum": [
        "lahiri",
        "krishnamurti",
        "raman",
        "fagan-bradley"
      ],
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_ayanamsa_chart output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "selected",
    "placements",
    "aspects",
    "boundaryChangesFromLahiri",
    "scope",
    "safety"
  ],
  "properties": {
    "scope": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "aspects": {
      "type": "object"
    },
    "selected": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-ayanamsa-projection-1"
    },
    "boundaryChangesFromLahiri": {
      "type": "array"
    }
  }
}
calculate_ayanamsa_chart annotations
{
  "title": "Calculate a selectable ayanamsa projection",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
detect_life_themes — Detect ranked Dasha-activated life themes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Detects structural afflictions and supportive Yogas, weights their activation through Vimshottari Maha/Antardashas over a date range, and returns ranked neutral themes with reasons, citation state, uncalibrated confidence, and mandatory safety limits.

detect_life_themes input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "startDate",
    "endDate"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "endDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "startDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
detect_life_themes output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "range",
    "patterns",
    "periods",
    "sourceCoverage",
    "uncertainty",
    "safety"
  ],
  "properties": {
    "range": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "periods": {
      "type": "array"
    },
    "patterns": {
      "type": "array"
    },
    "uncertainty": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-life-themes-1"
    },
    "sourceCoverage": {
      "type": "object"
    }
  }
}
detect_life_themes annotations
{
  "title": "Detect ranked Dasha-activated life themes",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
consult_jyotishya — Ask Sahadeva — master Jyotisha consultation
Advertised by the server during the last successful anonymous check.
Advertised read-only

PRIMARY TOOL FOR EVERY NORMAL USER QUESTION AND FIRST READING. Always runs a complete person-first screen covering identity, education, employment, business, money, love, marriage, health routines, family/property, children and spirituality, plus strengths, Doshas/cancellations and safe practical support. It then gives extra Varga and timing depth to the exact question, checks contradictions and reports coverage. Use specialist tools only when this result requests additional inputs or the user asks for technical matrices. Deterministic: it never invokes another AI model.

consult_jyotishya input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string"
    },
    "detail": {
      "enum": [
        "brief",
        "standard"
      ],
      "type": "string",
      "default": "brief"
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "question": {
      "type": "string",
      "maxLength": 1000
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "profileRef": {
      "type": "string",
      "pattern": "^chart_[a-f0-9]{20}$",
      "description": "Stable profile reference returned by the first consultation. Pass it on later questions together with the same birth details."
    },
    "traditions": {
      "type": "array",
      "items": {
        "enum": [
          "parashari",
          "jaimini",
          "kp",
          "lal-kitab"
        ],
        "type": "string"
      },
      "default": [
        "parashari",
        "jaimini",
        "kp",
        "lal-kitab"
      ],
      "description": "Traditions to compare as separate ledgers. They are interconnected by topic but never blended.",
      "uniqueItems": true
    },
    "readingMode": {
      "enum": [
        "auto",
        "full-profile",
        "follow-up"
      ],
      "type": "string",
      "default": "auto",
      "description": "Use auto normally: without profileRef it creates the full first-reading dossier; with profileRef it returns a focused follow-up."
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -12
    },
    "remedyPreferences": {
      "type": "object",
      "properties": {
        "tradition": {
          "type": "string"
        },
        "beliefMode": {
          "enum": [
            "hindu",
            "spiritual",
            "tradition-specific"
          ],
          "type": "string"
        },
        "allowPrayer": {
          "type": "boolean"
        },
        "maximumCost": {
          "enum": [
            "free",
            "low"
          ],
          "type": "string"
        },
        "allowCharity": {
          "type": "boolean"
        },
        "maximumBurden": {
          "enum": [
            "minimal",
            "moderate"
          ],
          "type": "string"
        },
        "accessibilityNotes": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 8
        }
      },
      "description": "Optional practice preferences. Prayer and charity can be turned off; every other remedy family is always included."
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
consult_jyotishya output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subject",
    "anchors",
    "priorities",
    "currentTiming",
    "confidence",
    "safety"
  ],
  "additionalProperties": true
}
consult_jyotishya annotations
{
  "title": "Ask Sahadeva — master Jyotisha consultation",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_chart_topic — Analyze one chart topic with an evidence ledger
Advertised by the server during the last successful anonymous check.
Advertised read-only

Runs the shared deterministic judgment pipeline for career, education, property, relationships, or spirituality. Returns supporting and opposing evidence, relevant Varga confirmation, current Dasha activation, uncertainty, matched reviewed citations, unresolved source keys, and explicit abstention boundaries. The web app uses the same judgment engine.

analyze_chart_topic input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth",
        "health",
        "children"
      ],
      "type": "string"
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -12
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
analyze_chart_topic output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "conclusion",
    "status",
    "supportingEvidence",
    "opposingEvidence",
    "vargaConfirmation",
    "timingActivation",
    "appliedRules",
    "citations",
    "unresolvedSourceKeys",
    "uncertainty",
    "safety"
  ],
  "additionalProperties": true
}
analyze_chart_topic annotations
{
  "title": "Analyze one chart topic with an evidence ledger",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
validate_rule_spec — Validate and replay a structured Jyotisha rule
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reviewer/developer tool. Validates the typed rule DSL and replays a proposed rule, including exceptions and harm/review publication gates, against a deterministic chart. It does not approve or publish the rule.

validate_rule_spec input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "rule"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "rule": {
      "type": "object",
      "additionalProperties": true
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "asOfDate": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
validate_rule_spec output schema
{
  "type": "object",
  "required": [
    "valid",
    "execution",
    "publicationGate"
  ],
  "additionalProperties": true
}
validate_rule_spec annotations
{
  "title": "Validate and replay a structured Jyotisha rule",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
reconstruct_worked_example — Reconstruct a local rule worked example
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists or deterministically replays a local book-rule fixture, comparing expected matches, exceptions and source locators. Passing validates software consistency only; examples remain unpublishable until independent scan adjudication and review.

reconstruct_worked_example input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "minimum": 1
    },
    "fixtureId": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
reconstruct_worked_example output schema
{
  "type": "object",
  "additionalProperties": true
}
reconstruct_worked_example annotations
{
  "title": "Reconstruct a local rule worked example",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_conventions — Compare chart conventions without silent mixing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compares Lahiri with selected alternative ayanamsa projections for one topic, identifies changed Lagna, topic lord, karaka, sign, house and Nakshatra anchors, and marks when a Lahiri judgment must not be reused. Alternative full derived charts remain explicitly unvalidated.

compare_conventions input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth",
        "health",
        "children"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "conventions": {
      "type": "array",
      "items": {
        "enum": [
          "lahiri",
          "krishnamurti",
          "raman",
          "fagan-bradley"
        ],
        "type": "string"
      }
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
compare_conventions output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "variants",
    "judgmentChangeAnalysis",
    "traditionBoundary",
    "safety"
  ],
  "additionalProperties": true
}
compare_conventions annotations
{
  "title": "Compare chart conventions without silent mixing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_house — Analyze one natal house with support and opposition
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the selected house, lord condition, occupants, functional lordship, relevant relationship edges, supporting and opposing evidence, unresolved source keys and sensitive-house restrictions.

analyze_house input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "house"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "house": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_house output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "house",
    "lord",
    "supportingEvidence",
    "opposingEvidence",
    "sourceCoverage",
    "safety"
  ],
  "additionalProperties": true
}
analyze_house annotations
{
  "title": "Analyze one natal house with support and opposition",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
prepare_consultation_intake — Prepare a practitioner consultation intake
Advertised by the server during the last successful anonymous check.
Advertised read-only

Refines the question, checks birth-time fitness, collects dated life history for rectification, records consent, and returns the session plan. Run this before chart judgment for a new person.

prepare_consultation_intake input schema
{
  "type": "object",
  "required": [
    "question"
  ],
  "properties": {
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth"
      ],
      "type": "string"
    },
    "consent": {
      "type": "object"
    },
    "question": {
      "type": "string"
    },
    "lifeEvents": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "expectations": {
      "type": "string"
    },
    "birthTimeSource": {
      "enum": [
        "birth-certificate",
        "hospital-record",
        "family-memory",
        "approximate",
        "unknown"
      ],
      "type": "string"
    },
    "traditionPreference": {
      "type": "string"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number"
    }
  }
}
prepare_consultation_intake output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "status",
    "refinedQuestion",
    "birthDataFitness"
  ],
  "additionalProperties": true
}
prepare_consultation_intake annotations
{
  "title": "Prepare a practitioner consultation intake",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_prediction_journal — Freeze a falsifiable prediction-journal claim
Advertised by the server during the last successful anonymous check.
Advertised read-only

Builds one reviewable claim from a topic judgment: active dasha window, observable outcome, falsifier, and review date. Resolve it later with record_consultation_outcome.

build_prediction_journal input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth"
      ],
      "type": "string"
    },
    "asOfDate": {
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "nodeMode": {
      "enum": [
        "mean",
        "true"
      ],
      "type": "string"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "timezoneOffset": {
      "type": "number"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number"
    }
  }
}
build_prediction_journal output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subject",
    "claims",
    "method",
    "notice"
  ],
  "additionalProperties": true
}
build_prediction_journal annotations
{
  "title": "Freeze a falsifiable prediction-journal claim",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_planetary_relationship_graph — Get the typed planetary relationship graph
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns dispositors, chains, conjunctions, exchanges, Graha Drishti, compound relationships and Lagna-specific functional lordships as distinct edge types.

get_planetary_relationship_graph input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
get_planetary_relationship_graph output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "nodes",
    "edges",
    "dispositorChains",
    "functionalLordships"
  ],
  "additionalProperties": true
}
get_planetary_relationship_graph annotations
{
  "title": "Get the typed planetary relationship graph",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_natal_panchanga — Analyze the five natal Panchanga limbs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns calculated Vara, Tithi class, Nakshatra lord, Yoga, Karana, Paksha Bala, boundary warnings and unresolved lineage-specific source keys. This is distinct from daily Panchanga.

get_natal_panchanga input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
get_natal_panchanga output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "limbs",
    "paksha",
    "interpretation",
    "safety"
  ],
  "additionalProperties": true
}
get_natal_panchanga annotations
{
  "title": "Analyze the five natal Panchanga limbs",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_crystal_profile — Crystal astrology profile (Western, tropical)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the crystal for each placement's tropical degree after Costelloe's Complete Guide to Crystal Astrology (360 degrees, one crystal each, with page locators): Sun to Saturn, Uranus, Neptune, Pluto, Chiron, the Ascendant and the true (osculating) nodes, with retrograde flags, the Sun's Karmic Condition/Focus/Quest sequence, each degree's number (1-360), the zodiac birthstones, weekday stone and planet metals, the chart's colour and rock-type pattern, and what each crystal is looked to for. Every crystal carries handling, water, price and availability facts and, when it is toxic, costly or rare, a safe stand-in from the neighbouring degrees. Western tropical practice, separate from Jyotish; not a gemstone prescription.

calculate_crystal_profile input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_crystal_profile output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "tradition",
    "source",
    "placements",
    "traditions",
    "pattern",
    "notice"
  ],
  "properties": {
    "tradition": {
      "const": "western-tropical"
    },
    "schemaVersion": {
      "const": "sahadeva-crystal-profile-2"
    }
  },
  "additionalProperties": true
}
calculate_crystal_profile annotations
{
  "title": "Crystal astrology profile (Western, tropical)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_crystal_timing — Crystal astrology over time (Western, tropical)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Crystals over time from Costelloe's degree table: this year's crystal from the secondary-progressed Sun (about one crystal per year of life, with the ages each one starts), this month's from the progressed Moon, the day's crystal (the transiting Sun's degree), each planet's crystal at the moment, and when Jupiter, Saturn, Uranus, Neptune, Pluto or Chiron stand on one of the person's natal crystal degrees in the coming window. Western tropical practice, separate from Jyotish.

calculate_crystal_timing input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "asOf": {
      "type": "string",
      "description": "ISO date or date-time; defaults to now"
    },
    "date": {
      "type": "string"
    },
    "days": {
      "type": "number",
      "default": 365,
      "maximum": 730,
      "minimum": 1
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_crystal_timing output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "progressed",
    "sky"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-crystal-timing-1"
    }
  },
  "additionalProperties": true
}
calculate_crystal_timing annotations
{
  "title": "Crystal astrology over time (Western, tropical)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_relationship_crystals — Crystals for two people (Western, tropical)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Relationship crystals from Costelloe's degree table: composite-midpoint crystals for the pair (Sun, Venus, Mercury, Moon, Mars, Jupiter, Saturn), degrees the two people share or sit next to, their relationship, communication and emotion crystals side by side, and shared crystal colours. Western tropical practice; not a verdict on the relationship.

calculate_relationship_crystals input schema
{
  "type": "object",
  "required": [
    "personA",
    "personB"
  ],
  "properties": {
    "personA": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        }
      }
    },
    "personB": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}$"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        }
      }
    }
  }
}
calculate_relationship_crystals output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "composite",
    "links",
    "notice"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-crystal-relationship-1"
    }
  },
  "additionalProperties": true
}
calculate_relationship_crystals annotations
{
  "title": "Crystals for two people (Western, tropical)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_crystal — Look up a crystal by number, degree or name
Advertised by the server during the last successful anonymous check.
Advertised read-only

Looks up Costelloe's crystal astrology table by number (1-360, the book's astrological numerology, e.g. a house or street number), by tropical degree ("Libra 2") or by crystal name. Returns the degree, number, birthdays, page locator, crystal-name numerology, the Karmic Condition/Focus/Quest neighbours, and handling, water, price and availability facts with a safe stand-in where needed.

lookup_crystal input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "A number 1-360, a degree such as Libra 2, or a crystal name"
    }
  }
}
lookup_crystal output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "query",
    "matches"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-crystal-lookup-1"
    }
  },
  "additionalProperties": true
}
lookup_crystal annotations
{
  "title": "Look up a crystal by number, degree or name",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_sibling_bond — Sibling and speech rule cards for one chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Runs sibling and communication rule cards located in Sarvarth Chintamani (Brothers v15, v17, v24; Speech v29) and Jyotisha Fundamentals (10.1.1, 10.1.3, 3.2.4): Lagna lord friendship with the 3rd (younger) and 11th (elder) lords, benefic blessing of the 3rd, Mars rivalry and Mercury's condition for talking with kin. Each finding cites its rule card. No loss-of-sibling claims.

analyze_sibling_bond input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_sibling_bond output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "younger",
    "elder",
    "findings",
    "rules",
    "notice"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-sibling-bond-1"
    }
  },
  "additionalProperties": true
}
analyze_sibling_bond annotations
{
  "title": "Sibling and speech rule cards for one chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_book_rule_findings — Book verses this chart meets for one life area
Advertised by the server during the last successful anonymous check.
Advertised read-only

Runs the life-area rule cards drafted from the house chapters of Bhasin's Sarvarth Chintamani and Larsen's Jyotisha Fundamentals (career, wealth, marriage, children, education, property, spirituality) and returns the verses this chart meets, each with its citation, effect and weight. Located drafts, not reviewed rules.

get_book_rule_findings input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "wealth",
        "marriage",
        "children",
        "education",
        "property",
        "spirituality"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
get_book_rule_findings output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "rulesTested",
    "fired",
    "balance",
    "notice"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-life-area-findings-1"
    }
  },
  "additionalProperties": true
}
get_book_rule_findings annotations
{
  "title": "Book verses this chart meets for one life area",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_lal_kitab — Inspect Lal Kitab house structure and source sections
Advertised by the server during the last successful anonymous check.
Advertised read-only

Converts verified natal placements to Lal Kitab fixed houses and returns source locators for all nine planet-house sections. Prediction prose and annual-chart emulation are not yet built; the book remedies for each placement come from analyze_lal_kitab_remedies and reason_lal_kitab.

analyze_lal_kitab input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
analyze_lal_kitab output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "tradition",
    "conversion",
    "placements",
    "conjunctions",
    "sourceCoverage",
    "controlledDisclosurePolicy",
    "blockedOutputs",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "tradition": {
      "type": "object"
    },
    "conversion": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "conjunctions": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-lal-kitab-structure-1"
    },
    "blockedOutputs": {
      "type": "array"
    },
    "sourceCoverage": {
      "type": "object"
    },
    "controlledDisclosurePolicy": {
      "type": "object"
    }
  }
}
analyze_lal_kitab annotations
{
  "title": "Inspect Lal Kitab house structure and source sections",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explore_lal_kitab_sources — Explore complete Lal Kitab source coverage
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns all source families, locators, coverage counts, lexical risk signals and graduated disclosure policy without republishing source body text.

explore_lal_kitab_sources input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
explore_lal_kitab_sources output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "source",
    "coverage",
    "policy",
    "families",
    "notice"
  ],
  "properties": {
    "notice": {
      "type": "string"
    },
    "policy": {
      "type": "object"
    },
    "source": {
      "type": "object"
    },
    "coverage": {
      "type": "object"
    },
    "families": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-lal-kitab-source-catalog-1"
    }
  }
}
explore_lal_kitab_sources annotations
{
  "title": "Explore complete Lal Kitab source coverage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_lal_kitab_remedies — Match source-located Lal Kitab remedy candidates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Matches the chart's nine fixed-house placements to remedy blocks extracted from the complete 778-page corpus. Returns each remedy's book wording, its condition text, provenance and risk-flag labels.

analyze_lal_kitab_remedies input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
analyze_lal_kitab_remedies output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "mode",
    "placements",
    "matchedCandidateCount",
    "catalogCoverage",
    "publication",
    "notice"
  ],
  "additionalProperties": true
}
analyze_lal_kitab_remedies annotations
{
  "title": "Match source-located Lal Kitab remedy candidates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
reason_lal_kitab — Run the deterministic Lal Kitab inference kernel
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculates a topic-aware Lal Kitab natal prediction and remedy plan from fixed houses, conjunction friendship/enmity, dormancy, eclipse conditions and birth-period context. It reasons from calculated chart facts without searching the corpus at runtime and returns a complete explanation trace; annual timing is not implied.

reason_lal_kitab input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth",
        "health",
        "children",
        "general"
      ],
      "type": "string",
      "default": "general"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
reason_lal_kitab output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "computation",
    "factGraph",
    "diagnoses",
    "topicPrediction",
    "predictions",
    "remedyPlan",
    "explanationTrace",
    "unresolved",
    "safety"
  ],
  "additionalProperties": true
}
reason_lal_kitab annotations
{
  "title": "Run the deterministic Lal Kitab inference kernel",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explore_lal_kitab_remedy_catalog — Inspect Lal Kitab remedy-engine coverage
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns whole-book extraction counts, source hash, catalog hash and publication policy without returning copyrighted remedy text.

explore_lal_kitab_remedy_catalog input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
explore_lal_kitab_remedy_catalog output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "source",
    "policy",
    "coverage",
    "catalogSha256"
  ],
  "additionalProperties": true
}
explore_lal_kitab_remedy_catalog annotations
{
  "title": "Inspect Lal Kitab remedy-engine coverage",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_remedy_catalog — Browse the Vedic remedy catalog
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists the structured remedy catalog indexed from Sanjay Rath's Vedic Remedies in Astrology (mantra, deity mantra, yantra, homa, puja, dana, vrata, meditation, pranayama, devata orientation, calendar observances and gemstone reference topics) with source locators and our own guidance; no book prose. Not chart-specific: gemstone rows are reference topics, and chart gemstones come from build_remedy_repertoire.

get_remedy_catalog input schema
{
  "type": "object",
  "properties": {
    "graha": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 500,
      "minimum": 1
    },
    "topic": {
      "type": "string"
    },
    "family": {
      "type": "string"
    },
    "tradition": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
get_remedy_catalog output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "total",
    "returned",
    "families",
    "entries",
    "withheld",
    "policy",
    "safety"
  ],
  "properties": {
    "total": {
      "type": "integer"
    },
    "policy": {
      "type": "string"
    },
    "safety": {
      "type": "object"
    },
    "entries": {
      "type": "array"
    },
    "families": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "returned": {
      "type": "integer"
    },
    "withheld": {
      "type": "array"
    },
    "chartChecked": {
      "type": "boolean"
    },
    "schemaVersion": {
      "type": "string"
    }
  },
  "additionalProperties": true
}
get_remedy_catalog annotations
{
  "title": "Browse the Vedic remedy catalog",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
suggest_safe_practice — Suggest belief-compatible remedies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Builds a remedy protocol from the evidence ledger and user preferences, with the full planet repertoire (mantra, stotra, gemstone, daana, vrata, rudraksha, yantra) and the Lal Kitab book remedies. It can return no-remedy-needed and does not claim causality.

suggest_safe_practice input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic",
    "preferences"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth",
        "health",
        "children"
      ],
      "type": "string"
    },
    "detail": {
      "enum": [
        "brief",
        "full"
      ],
      "type": "string",
      "default": "brief",
      "description": "brief omits internal audit sections; full returns the complete protocol"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "preferences": {
      "type": "object",
      "required": [
        "beliefMode",
        "maximumBurden",
        "maximumCost",
        "allowPrayer",
        "allowCharity"
      ],
      "properties": {
        "tradition": {
          "type": "string"
        },
        "beliefMode": {
          "enum": [
            "hindu",
            "spiritual",
            "tradition-specific"
          ],
          "type": "string"
        },
        "allowPrayer": {
          "type": "boolean"
        },
        "maximumCost": {
          "enum": [
            "free",
            "low"
          ],
          "type": "string"
        },
        "allowCharity": {
          "type": "boolean"
        },
        "maximumBurden": {
          "enum": [
            "minimal",
            "moderate"
          ],
          "type": "string"
        }
      }
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
suggest_safe_practice output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "diagnosis",
    "outcome",
    "preferences",
    "eligiblePractices",
    "traditionalChartRemedies",
    "contraindications",
    "followUp"
  ],
  "additionalProperties": true
}
suggest_safe_practice annotations
{
  "title": "Suggest belief-compatible remedies",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_devata_profile — Calculate Iṣṭa and guiding Devatā candidates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculates Iṣṭa, Dharma, Pālana, Guru and Kula Devatā anchors from an explicit lineage preset: occupants, Rashi Drishti, then sign lord with visible tie-breaks. Unsupported lineages are withheld rather than silently mixed. It never prescribes initiation-only mantra or claims one uniquely correct deity.

calculate_devata_profile input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "lineage": {
      "enum": [
        "rath-eight-karaka-reversed-rahu",
        "seven-karaka-comparative"
      ],
      "type": "string",
      "default": "rath-eight-karaka-reversed-rahu"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_devata_profile output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "lineage",
    "convention",
    "anchors",
    "ishtaDevata",
    "dharmaDevata",
    "palanaDevata",
    "guruDevata",
    "kulaDevata",
    "birthTimeSensitivity",
    "safety"
  ],
  "additionalProperties": true
}
calculate_devata_profile annotations
{
  "title": "Calculate Iṣṭa and guiding Devatā candidates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_remedies — Build a source-grounded chart remedy protocol
Advertised by the server during the last successful anonymous check.
Advertised read-only

Combines the topic evidence ledger, belief/cost/burden preferences, Iṣṭa and guiding Devatā calculation, Muhurta-as-remedy routing, named charity, conduct, and the full planet repertoire: mantras, gemstones, vrata and Lal Kitab book remedies. Every candidate exposes its source.

analyze_remedies input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic",
    "preferences"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "education",
        "property",
        "relationships",
        "spirituality",
        "wealth",
        "health",
        "children"
      ],
      "type": "string"
    },
    "detail": {
      "enum": [
        "brief",
        "full"
      ],
      "type": "string",
      "default": "brief",
      "description": "brief omits internal audit sections; full returns the complete protocol"
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "preferences": {
      "type": "object",
      "required": [
        "beliefMode",
        "maximumBurden",
        "maximumCost",
        "allowPrayer",
        "allowCharity"
      ],
      "properties": {
        "tradition": {
          "type": "string"
        },
        "beliefMode": {
          "enum": [
            "hindu",
            "spiritual",
            "tradition-specific"
          ],
          "type": "string"
        },
        "allowPrayer": {
          "type": "boolean"
        },
        "maximumCost": {
          "enum": [
            "free",
            "low"
          ],
          "type": "string"
        },
        "allowCharity": {
          "type": "boolean"
        },
        "maximumBurden": {
          "enum": [
            "minimal",
            "moderate"
          ],
          "type": "string"
        },
        "accessibilityNotes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
analyze_remedies output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "diagnosis",
    "eligiblePractices",
    "traditionalChartRemedies",
    "traditionalRemedyStatus",
    "contraindications",
    "followUp"
  ],
  "additionalProperties": true
}
analyze_remedies annotations
{
  "title": "Build a source-grounded chart remedy protocol",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_remedy_repertoire — Full classical remedy repertoire for a chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full remedy repertoire. Works out each graha's functional nature and afflictions, then returns beej and Vedic mantras, stotra, gemstone (for grahas to strengthen), named daana, vrata, rudraksha, yantra, conduct, the Lal Kitab remedies for its fixed house, dosha remedies and Dasha-based timing. Every family is on by default; pass false to leave one out. No topic required.

build_remedy_repertoire input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "options": {
      "type": "object",
      "properties": {
        "allowCharity": {
          "type": "boolean",
          "default": true
        },
        "allowFasting": {
          "type": "boolean",
          "default": true
        },
        "allowMantras": {
          "type": "boolean",
          "default": true
        },
        "allowGemstones": {
          "type": "boolean",
          "default": true
        }
      }
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
build_remedy_repertoire output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "approach",
    "functionalNature",
    "planetRemedies",
    "safety"
  ],
  "additionalProperties": true
}
build_remedy_repertoire annotations
{
  "title": "Full classical remedy repertoire for a chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_transit_activation — Analyze natal, Dasha and transit activation together
Advertised by the server during the last successful anonymous check.
Advertised read-only

TIMING FOR A TOPIC. Combines the natal promise for one topic (career, marriage, wealth, education, children, property, spirituality) with the running dasha and slow transits between startIso and endIso. Use for 'when' questions about one area of life. For a plain list of current transits use analyze_transits.

analyze_transit_activation input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic",
    "asOfIso",
    "startIso",
    "endIso"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "marriage",
        "wealth",
        "education",
        "children",
        "property",
        "spirituality"
      ],
      "type": "string"
    },
    "endIso": {
      "type": "string"
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "startIso": {
      "type": "string"
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_transit_activation output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "promise",
    "transits",
    "timingFusion",
    "safety"
  ],
  "additionalProperties": true
}
analyze_transit_activation annotations
{
  "title": "Analyze natal, Dasha and transit activation together",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_strength_profile — Calculate a separated planetary strength profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

PLANET STRENGTHS. Full Shadbala (all six balas with components, required-strength ratio), Vimshopaka in four varga sets, Ishta/Kashta Phala, avasthas and planetary friendships. Use when asked which planets are strong or weak, or to qualify a yoga.

calculate_strength_profile input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_strength_profile output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "dignities",
    "avasthas",
    "shadbala",
    "lineage"
  ],
  "additionalProperties": true
}
calculate_strength_profile annotations
{
  "title": "Calculate a separated planetary strength profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_ashtakavarga — Calculate Bhinnashtakavarga and Sarvashtakavarga
Advertised by the server during the last successful anonymous check.
Advertised read-only

ASHTAKAVARGA. Bhinnashtakavarga for the seven planets, Sarvashtakavarga, Trikona/Ekadhipatya reductions and Pinda. Use for sign strength and transit support.

calculate_ashtakavarga input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_ashtakavarga output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "sarva",
    "signs"
  ],
  "additionalProperties": true
}
calculate_ashtakavarga annotations
{
  "title": "Calculate Bhinnashtakavarga and Sarvashtakavarga",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_varga — Analyze one divisional chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

ONE DIVISIONAL CHART. Placements, lords and topic emphasis in a chosen varga (D1–D60, plus D5, D6, D8, D81, D108, D144). Use D9 for marriage/dharma, D10 career, D7 children, D4 property, D24 education, D60 fine detail (needs an accurate birth time).

analyze_varga input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "varga"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "marriage",
        "wealth",
        "education",
        "children",
        "property",
        "spirituality"
      ],
      "type": "string"
    },
    "varga": {
      "enum": [
        "D1",
        "D2",
        "D3",
        "D4",
        "D7",
        "D9",
        "D10",
        "D12",
        "D16",
        "D20",
        "D24",
        "D27",
        "D30",
        "D40",
        "D45",
        "D60",
        "D5",
        "D6",
        "D8",
        "D81",
        "D108",
        "D144"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_varga output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "varga",
    "purpose",
    "placements",
    "safety"
  ],
  "additionalProperties": true
}
analyze_varga annotations
{
  "title": "Analyze one divisional chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_yogas — Analyze classical Yogas: formation, strength, cancellation and timing
Advertised by the server during the last successful anonymous check.
Advertised read-only

YOGAS. Evaluates about a hundred classical yogas — the 32 Nabhasa yogas, Pancha Mahapurusha, Chandra and Surya yogas, Raja and Dhana yogas, named Viparita and Parivartana types, Neecha Bhanga, Lakshmi/Saraswati/Parvata and traditional afflictions — with rule, evidence, cancellation tests, a participant-strength grade and the dasha periods that activate each formed yoga.

analyze_yogas input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "asOfIso": {
      "type": "string",
      "description": "ISO date-time for the dasha activation windows; defaults to now"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_yogas output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "counts",
    "formed",
    "notFormed",
    "notice"
  ],
  "additionalProperties": true
}
analyze_yogas annotations
{
  "title": "Analyze classical Yogas: formation, strength, cancellation and timing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_special_points — Calculate Upagrahas, Gulika/Mandi, Bhrigu Bindu, Yogi/Avayogi and sensitive degrees
Advertised by the server during the last successful anonymous check.
Advertised read-only

SPECIAL POINTS. Upagrahas (Dhuma group and Gulika, Mandi, Kala, Mrityu, Ardhaprahara, Yamaghantaka), Bhrigu Bindu, Yogi/Avayogi graha, Jagradadi avasthas, Pushkara Navamsa/Bhaga, Gandanta, Vargottama, deep exaltation and nakshatra attributes (deity, gana, yoni, nadi) for every graha.

analyze_special_points input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_special_points output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "upagrahas",
    "bhriguBindu",
    "yogi",
    "sensitiveDegrees",
    "nakshatraAttributes",
    "notice"
  ],
  "additionalProperties": true
}
analyze_special_points annotations
{
  "title": "Calculate Upagrahas, Gulika/Mandi, Bhrigu Bindu, Yogi/Avayogi and sensitive degrees",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_transits — Analyze current transits (Gochara) against the natal chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

CURRENT TRANSITS (GOCHARA). For each graha at asOfIso: house from the natal Moon and Lagna, classical favourability, Vedha obstruction, its own Ashtakavarga bindus, Kakshya lord, Murthy Nirnaya for slow planets, plus Sade Sati/Dhaiya and Jupiter–Saturn double-transit houses. Use for 'how are my transits now / this month'.

analyze_transits input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "asOfIso": {
      "type": "string",
      "description": "ISO date-time to evaluate; defaults to now"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_transits output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "asOfIso",
    "transits",
    "sadeSati",
    "doubleTransit",
    "notice"
  ],
  "additionalProperties": true
}
analyze_transits annotations
{
  "title": "Analyze current transits (Gochara) against the natal chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_dasha_system — Calculate a declared Dasha system
Advertised by the server during the last successful anonymous check.
Advertised read-only

A DASHA SYSTEM. Vimshottari (5 levels at asOfIso), Yogini, Ashtottari, Kalachakra, Narayana or Chara, with the period running at asOfIso and a timeline focused around it (detail: full returns every level).

calculate_dasha_system input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "system",
    "asOfIso"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "detail": {
      "enum": [
        "focused",
        "full"
      ],
      "type": "string",
      "description": "focused (default) keeps sub-periods only around asOfIso"
    },
    "system": {
      "enum": [
        "vimshottari",
        "yogini",
        "ashtottari",
        "kalachakra",
        "narayana",
        "chara",
        "status"
      ],
      "type": "string"
    },
    "asOfIso": {
      "type": "string",
      "description": "ISO date-time whose running period is reported"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_dasha_system output schema
{
  "type": "object",
  "additionalProperties": true
}
calculate_dasha_system annotations
{
  "title": "Calculate a declared Dasha system",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_badhaka — Inspect Badhaka structure without supernatural claims
Advertised by the server during the last successful anonymous check.
Advertised read-only

BADHAKA. The obstruction house and its lord for this Lagna's modality, its placement and relationships. Structural only; no supernatural cause is inferred.

analyze_badhaka input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_badhaka output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "status",
    "badhaka",
    "safety"
  ],
  "additionalProperties": true
}
analyze_badhaka annotations
{
  "title": "Inspect Badhaka structure without supernatural claims",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_arudha_and_upapada — Analyze Arudha and Upapada structures
Advertised by the server during the last successful anonymous check.
Advertised read-only

ARUDHA AND UPAPADA. Arudha Lagna, Upapada and all twelve padas with Jaimini rashi drishti.

analyze_arudha_and_upapada input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_arudha_and_upapada output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "arudhaLagna",
    "upapadaLagna"
  ],
  "additionalProperties": true
}
analyze_arudha_and_upapada annotations
{
  "title": "Analyze Arudha and Upapada structures",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
audit_reading_evidence — Audit reading prose against calculated placements and safety rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

AUDIT A READING. Checks prose against the calculated placements and safety rules and lists contradictions.

audit_reading_evidence input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "text"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date YYYY-MM-DD (1800–2050)"
    },
    "name": {
      "type": "string",
      "description": "Person's name or a label"
    },
    "text": {
      "type": "string",
      "maxLength": 30000
    },
    "time": {
      "type": "string",
      "description": "Local birth time HH:MM (24-hour); 6:30 PM is also accepted"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
audit_reading_evidence output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "supported",
    "unsupportedClaims",
    "prohibitedClaimPatterns"
  ],
  "additionalProperties": true
}
audit_reading_evidence annotations
{
  "title": "Audit reading prose against calculated placements and safety rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
explain_chart_sources — Explain the source and review status behind a chart topic
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns book-section locators and rule-review status without treating discovered prose as executable doctrine.

explain_chart_sources input schema
{
  "type": "object",
  "required": [
    "topic"
  ],
  "properties": {
    "topic": {
      "type": "string"
    }
  }
}
explain_chart_sources output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "sources",
    "notice"
  ],
  "additionalProperties": true
}
explain_chart_sources annotations
{
  "title": "Explain the source and review status behind a chart topic",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_reading_versions — Explain why two reading versions changed
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compares engine, ruleset, input and conclusion status changes.

compare_reading_versions input schema
{
  "type": "object",
  "required": [
    "first",
    "second"
  ],
  "properties": {
    "first": {
      "type": "object"
    },
    "second": {
      "type": "object"
    }
  }
}
compare_reading_versions output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "configurationChanges",
    "conclusions"
  ],
  "additionalProperties": true
}
compare_reading_versions annotations
{
  "title": "Explain why two reading versions changed",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_nakshatra_profile — analyze nakshatra profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze nakshatra profile without deterministic outcome claims.

analyze_nakshatra_profile input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_nakshatra_profile output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "janma",
    "placements",
    "notice"
  ],
  "additionalProperties": true
}
analyze_nakshatra_profile annotations
{
  "title": "analyze nakshatra profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_marriage_structure — analyze marriage structure
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked marriage structure plus a six-part partner profile (spouseProfile): when the relationship starts, someone new or known, where and in which direction from the person's current place, the partner's nature, work hints, and prior relationships. Every finding cites a located passage; questions the installed texts do not answer are marked unavailable. No deterministic outcome claims.

analyze_marriage_structure input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "currentPlace": {
      "type": "string",
      "description": "Where the person lives now, as they said it (for example 'Bangalore'). Directions are given relative to it. Never pass the birthplace in its place."
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_marriage_structure output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_marriage_structure annotations
{
  "title": "analyze marriage structure",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_career_structure — analyze career structure
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze career structure without deterministic outcome claims.

analyze_career_structure input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_career_structure output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_career_structure annotations
{
  "title": "analyze career structure",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_education_structure — analyze education structure
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze education structure without deterministic outcome claims.

analyze_education_structure input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_education_structure output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_education_structure annotations
{
  "title": "analyze education structure",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_property_and_vehicle — analyze property and vehicle
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze property and vehicle without deterministic outcome claims.

analyze_property_and_vehicle input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_property_and_vehicle output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_property_and_vehicle annotations
{
  "title": "analyze property and vehicle",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_finance_structure — analyze finance structure
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze finance structure without deterministic outcome claims.

analyze_finance_structure input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_finance_structure output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_finance_structure annotations
{
  "title": "analyze finance structure",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_spiritual_path — analyze spiritual path
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked analyze spiritual path without deterministic outcome claims.

analyze_spiritual_path input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
analyze_spiritual_path output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "domain",
    "judgment",
    "vargas",
    "safety"
  ],
  "additionalProperties": true
}
analyze_spiritual_path annotations
{
  "title": "analyze spiritual path",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_claim_evidence_ledger — build claim evidence ledger
Advertised by the server during the last successful anonymous check.
Advertised read-only

Evidence-linked build claim evidence ledger without deterministic outcome claims.

build_claim_evidence_ledger input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topics": {
      "type": "array",
      "items": {
        "enum": [
          "career",
          "education",
          "property",
          "relationships",
          "spirituality",
          "wealth",
          "health",
          "children"
        ],
        "type": "string"
      }
    },
    "asOfIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
build_claim_evidence_ledger output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "claims",
    "summary",
    "notice"
  ],
  "additionalProperties": true
}
build_claim_evidence_ledger annotations
{
  "title": "build claim evidence ledger",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
analyze_name — Analyse a name: nama nakshatra syllable and numerology
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks whether a name begins with the syllable of the Moon's birth nakshatra pada (classical Avakahada rule), and scores the name and alternative spellings with Chaldean and Pythagorean numerology, Cheiro compound numbers 10-52, birth and destiny numbers, and a ranking of numbers by functional lordship for the lagna. Give date, time and place for the chart-based checks; date alone gives birth numbers only. Numerology is labelled modern, not classical.

analyze_name input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string",
      "description": "Full name as currently used"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "spellings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "Other full-name spellings to compare, for example the passport or social media spelling"
    },
    "variantLimit": {
      "type": "integer",
      "default": 20,
      "maximum": 40,
      "minimum": 1
    },
    "timezoneOffset": {
      "type": "number"
    },
    "generateVariants": {
      "type": "boolean",
      "default": false,
      "description": "Also score single-edit spelling variants of the first name"
    }
  }
}
analyze_name output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "numerology",
    "namaNakshatra",
    "evidence"
  ],
  "additionalProperties": true
}
analyze_name annotations
{
  "title": "Analyse a name: nama nakshatra syllable and numerology",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_muhurta_with_natal_fit — Find Muhurta windows fitted to a natal chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Ranks a maximum seven-day range using Panchanga, prohibited intervals, Tara Bala and Chandra Bala. Medical procedures are unsupported.

find_muhurta_with_natal_fit input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "activity",
    "startDate",
    "endDate",
    "natal"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1
    },
    "natal": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string"
        },
        "place": {
          "type": "string",
          "description": "Catalogue query or display label when explicit coordinates are supplied"
        },
        "latitude": {
          "type": "number",
          "maximum": 90,
          "minimum": -90
        },
        "timezone": {
          "type": "string",
          "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
        },
        "longitude": {
          "type": "number",
          "maximum": 180,
          "minimum": -180
        },
        "timezoneOffset": {
          "type": "number",
          "maximum": 14,
          "minimum": -14,
          "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
        }
      }
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "endDate": {
      "type": "string"
    },
    "activity": {
      "enum": [
        "marriage",
        "griha_pravesh",
        "travel",
        "business_start",
        "vehicle_purchase",
        "property_purchase",
        "naming",
        "contract",
        "important_conversation",
        "new_venture"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "startDate": {
      "type": "string"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
find_muhurta_with_natal_fit output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "activity",
    "windows",
    "safety"
  ],
  "additionalProperties": true
}
find_muhurta_with_natal_fit annotations
{
  "title": "Find Muhurta windows fitted to a natal chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
run_longitudinal_validation — Measure outcome calibration over time
Advertised by the server during the last successful anonymous check.
Advertised read-only

Produces descriptive calibration from recorded claim outcomes; it never presents the result as scientific validation.

run_longitudinal_validation input schema
{
  "type": "object",
  "required": [
    "records"
  ],
  "properties": {
    "records": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "claimId",
          "predictedStatus",
          "outcome"
        ],
        "properties": {
          "claimId": {
            "type": "string"
          },
          "outcome": {
            "enum": [
              "confirmed",
              "partly-confirmed",
              "not-confirmed",
              "unresolved"
            ],
            "type": "string"
          },
          "recordedAt": {
            "type": "string"
          },
          "predictedStatus": {
            "type": "string"
          }
        }
      },
      "maxItems": 10000,
      "minItems": 1
    }
  }
}
run_longitudinal_validation output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "sample",
    "descriptiveConfirmationRate",
    "limitations"
  ],
  "additionalProperties": true
}
run_longitudinal_validation annotations
{
  "title": "Measure outcome calibration over time",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_full_life_report — Generate a complete evidence-linked life report
Advertised by the server during the last successful anonymous check.
Advertised read-only

EXPERT FULL-REPORT TOOL — prefer consult_jyotishya (brief dossier + profileRef) for normal questions; use get_full_life_report_section for one section at a time. Builds a complete South Indian astrology report covering all major life areas, domain-specific timing outlooks, measured strengths, Vargas, structural Yogas, current Dasha and upcoming Antardashas. Timing activation identifies an area, never a specific event; interpretations remain qualified and evidence-linked.

generate_full_life_report input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "asOfDate": {
      "type": "string",
      "description": "ISO date or instant for the current-timing section; defaults to now"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "horizonYears": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
generate_full_life_report output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subject",
    "anchors",
    "plainLanguageReading",
    "placements",
    "measuredStrengths",
    "aspects",
    "ashtakavarga",
    "divisionalChartAnchors",
    "currentTiming",
    "sourceCoverage",
    "uncertainty",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "anchors": {
      "type": "object"
    },
    "aspects": {
      "type": "object"
    },
    "subject": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "uncertainty": {
      "type": "object"
    },
    "ashtakavarga": {
      "type": "object"
    },
    "futureTiming": {
      "type": "object"
    },
    "currentTiming": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-full-life-report-1"
    },
    "sourceCoverage": {
      "type": "object"
    },
    "measuredStrengths": {
      "type": "array"
    },
    "plainLanguageReading": {
      "type": "object"
    },
    "divisionalChartAnchors": {
      "type": "object"
    }
  }
}
generate_full_life_report annotations
{
  "title": "Generate a complete evidence-linked life report",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_full_reading_context — Get complete one-shot reading context
Advertised by the server during the last successful anonymous check.
Advertised read-only

EXPERT FULL-REPORT ALIAS — prefer consult_jyotishya for normal questions. One-call alias for the complete evidence-linked life report. Returns enriched placements, strengths, Vargas, synthesis, current Dasha, and a configurable future transit-and-Dasha horizon for narration clients.

get_full_reading_context input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "horizonYears": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
get_full_reading_context output schema
{
  "type": "object",
  "additionalProperties": true
}
get_full_reading_context annotations
{
  "title": "Get complete one-shot reading context",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_full_life_report_section — Get one full-life-report section
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns one bounded section of the full report for MCP clients with limited context windows.

get_full_life_report_section input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "section"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "section": {
      "enum": [
        "summary",
        "life-areas",
        "placements",
        "strengths",
        "vargas",
        "aspects",
        "ashtakavarga",
        "synthesis",
        "timing",
        "uncertainty",
        "evidence",
        "citations",
        "yogas",
        "special-points",
        "transits"
      ],
      "type": "string"
    },
    "asOfDate": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "horizonYears": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5
    }
  }
}
get_full_life_report_section output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "section",
    "data",
    "safety"
  ],
  "properties": {
    "data": {},
    "safety": {
      "type": "object"
    },
    "section": {
      "type": "string"
    },
    "schemaVersion": {
      "const": "sahadeva-full-life-report-section-1"
    }
  }
}
get_full_life_report_section annotations
{
  "title": "Get one full-life-report section",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_south_indian_chart — Calculate South Indian Jyotish chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

EXPERT FULL-MATRIX TOOL — prefer consult_jyotishya or get_compact_chart_evidence for normal questions. Deterministically calculates sidereal placements, all 16 Parashari vargas, Panchanga, Vimshottari timing, layered evidence and uncertainty from explicit birth data. Placement sign is a zero-based 0-11 index and signName is the display-safe name.

calculate_south_indian_chart input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Optional IANA timezone, for example Asia/Kolkata. When supplied, historical rules override timezoneOffset."
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "methodology": {
      "enum": [
        "parashari",
        "kp",
        "western",
        "comparative"
      ],
      "type": "string",
      "default": "parashari"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
calculate_south_indian_chart output schema
{
  "type": "object",
  "required": [
    "input",
    "placements",
    "panchanga",
    "vimshottari",
    "advanced",
    "engine"
  ],
  "properties": {
    "input": {
      "type": "object"
    },
    "engine": {
      "type": "object"
    },
    "advanced": {
      "type": "object"
    },
    "panchanga": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "vimshottari": {
      "type": "object"
    }
  }
}
calculate_south_indian_chart annotations
{
  "title": "Calculate South Indian Jyotish chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
describe_methodology — Describe Sahadeva methodology
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the calculation boundary, accuracy status, interpretive safety contract and production validation requirements.

describe_methodology input schema
{
  "type": "object",
  "properties": {}
}
describe_methodology output schema
{
  "type": "object",
  "required": [
    "computation",
    "currentAccuracy",
    "supportedMethodology",
    "productionGate",
    "interpretation"
  ],
  "properties": {
    "computation": {
      "type": "string"
    },
    "interpretation": {
      "type": "string"
    },
    "productionGate": {
      "type": "string"
    },
    "currentAccuracy": {
      "type": "string"
    },
    "supportedMethodology": {
      "type": "string"
    },
    "calculationComponents": {
      "type": "array"
    }
  }
}
describe_methodology annotations
{
  "title": "Describe Sahadeva methodology",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_gochara — Calculate sidereal gochara
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculates deterministic transit placements for an explicit instant and maps them to whole-sign houses from a supplied natal Lagna.

calculate_gochara input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset",
    "natalLagnaSign"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "natalLagnaSign": {
      "type": "integer",
      "maximum": 11,
      "minimum": 0
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14
    }
  }
}
calculate_gochara output schema
{
  "type": "object",
  "required": [
    "instantJulianDay",
    "engine",
    "natalLagnaSign",
    "placements"
  ],
  "properties": {
    "engine": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "natalLagnaSign": {
      "type": "integer"
    },
    "instantJulianDay": {
      "type": "number"
    }
  }
}
calculate_gochara annotations
{
  "title": "Calculate sidereal gochara",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_gochara_from_known_place — Calculate gochara from a verified place
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolves a verified catalogue place and its IANA timezone before calculating sidereal transits, avoiding manual coordinate and offset entry.

calculate_gochara_from_known_place input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "natalLagnaSign"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "natalLagnaSign": {
      "type": "integer",
      "maximum": 11,
      "minimum": 0
    }
  }
}
calculate_gochara_from_known_place output schema
{
  "type": "object",
  "required": [
    "instantJulianDay",
    "engine",
    "resolvedPlace",
    "natalLagnaSign",
    "placements"
  ],
  "properties": {
    "engine": {
      "type": "object"
    },
    "placements": {
      "type": "array"
    },
    "resolvedPlace": {
      "type": "object"
    },
    "natalLagnaSign": {
      "type": "integer"
    },
    "instantJulianDay": {
      "type": "number"
    }
  }
}
calculate_gochara_from_known_place annotations
{
  "title": "Calculate gochara from a verified place",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_ingress_timeline — Calculate sidereal ingress timeline
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds sign-boundary crossings for Sun through Saturn and the lunar nodes over an explicit future interval.

calculate_ingress_timeline input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "days": {
      "type": "integer",
      "maximum": 366,
      "minimum": 1
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
calculate_ingress_timeline output schema
{
  "type": "object",
  "required": [
    "events",
    "precision"
  ],
  "properties": {
    "events": {
      "type": "array"
    },
    "precision": {
      "type": "string"
    }
  }
}
calculate_ingress_timeline annotations
{
  "title": "Calculate sidereal ingress timeline",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
simulate_birth_time_uncertainty — Simulate birth-time uncertainty
Advertised by the server during the last successful anonymous check.
Advertised read-only

Samples the declared birth-time interval and reports Lagna, Moon-pada and Navamsa-Lagna boundary changes. This is not rectification.

simulate_birth_time_uncertainty input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset",
    "birthTimeAccuracyMinutes"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "timezoneOffset": {
      "type": "number"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "maximum": 1440,
      "minimum": 0
    }
  }
}
simulate_birth_time_uncertainty output schema
{
  "type": "object",
  "required": [
    "stability",
    "samples",
    "notice"
  ],
  "properties": {
    "notice": {
      "type": "string"
    },
    "samples": {
      "type": "array"
    },
    "stability": {
      "type": "object"
    }
  }
}
simulate_birth_time_uncertainty annotations
{
  "title": "Simulate birth-time uncertainty",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
knowledge_status — Inspect reviewed Jyotish knowledge status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns counts of sources, passages, approved rules and active reviewers. Draft material is never represented as expert knowledge.

knowledge_status input schema
{
  "type": "object",
  "properties": {}
}
knowledge_status output schema
{
  "type": "object",
  "required": [
    "readiness",
    "publicationRule"
  ],
  "properties": {
    "readiness": {
      "type": "string"
    },
    "publicationRule": {
      "type": "string"
    }
  }
}
knowledge_status annotations
{
  "title": "Inspect reviewed Jyotish knowledge status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_rule_hit_rates — Measured hit rates of chart-named past windows
Advertised by the server during the last successful anonymous check.
Advertised read-only

Aggregate results from people who chose to share their answers to Sahadeva's chart-named past windows: confirmed, denied and unsure counts and hit rate overall, per topic and per timing-fusion factor, each beside the ordinary control months (lift). No individual answers. Rates appear only once a cell has 20 decided answers.

get_rule_hit_rates input schema
{
  "type": "object",
  "properties": {}
}
get_rule_hit_rates output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "minimumCell",
    "overall",
    "byTopic",
    "byFactor",
    "notice"
  ],
  "properties": {
    "schemaVersion": {
      "const": "sahadeva-rule-hit-rates-1"
    }
  },
  "additionalProperties": true
}
get_rule_hit_rates annotations
{
  "title": "Measured hit rates of chart-named past windows",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
assess_prediction_readiness — Assess prediction and tradition readiness
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reports independent readiness gates for calculations, executable rules, worked examples, practitioner review and outcome calibration. It explicitly reports Lal Kitab as source-only until a dedicated reviewed engine exists.

assess_prediction_readiness input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
assess_prediction_readiness output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "overallStatus",
    "decision",
    "gates",
    "traditions",
    "recommendedMcpBuildOrder",
    "safety"
  ],
  "properties": {
    "gates": {
      "type": "array"
    },
    "safety": {
      "type": "object"
    },
    "decision": {
      "type": "object"
    },
    "traditions": {
      "type": "array"
    },
    "overallStatus": {
      "const": "research-preview"
    },
    "schemaVersion": {
      "const": "sahadeva-prediction-readiness-1"
    },
    "recommendedMcpBuildOrder": {
      "type": "array"
    }
  }
}
assess_prediction_readiness annotations
{
  "title": "Assess prediction and tradition readiness",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
audit_chart_calculation — Audit chart calculation provenance and sensitivity
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks engine certification, timezone provenance, conventions and important sign/Nakshatra/Pada boundary distances before interpretation. It does not claim an external ephemeris recomputation.

audit_chart_calculation input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{2}:\\d{2}$"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    },
    "birthTimeAccuracyMinutes": {
      "type": "number",
      "default": 5,
      "maximum": 1440,
      "minimum": 0
    }
  }
}
audit_chart_calculation output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "engine",
    "inputProvenance",
    "convention",
    "validation",
    "boundaryAudit",
    "decision",
    "notice"
  ],
  "properties": {
    "engine": {
      "type": "object"
    },
    "notice": {
      "type": "string"
    },
    "decision": {
      "type": "object"
    },
    "convention": {
      "type": "object"
    },
    "validation": {
      "type": "object"
    },
    "boundaryAudit": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-calculation-audit-1"
    },
    "inputProvenance": {
      "type": "object"
    }
  }
}
audit_chart_calculation annotations
{
  "title": "Audit chart calculation provenance and sensitivity",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_rule_review_queue — List source-linked rule review work
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns implemented rule claims and their passage, rule, reviewer, contradiction, and publication state. Each item also lists draftSources: the book lines the code draws the rule from, marked not reviewed. Draft sources are never citations of reviewed doctrine.

list_rule_review_queue input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 100,
      "maximum": 100,
      "minimum": 1
    },
    "module": {
      "enum": [
        "muhurta",
        "dosha",
        "interpretation",
        "judgment",
        "natal-panchanga",
        "kp",
        "jaimini",
        "varshaphal"
      ],
      "type": "string"
    }
  }
}
list_rule_review_queue output schema
{
  "type": "object",
  "required": [
    "items",
    "summary",
    "publicationRule"
  ],
  "properties": {
    "items": {
      "type": "array"
    },
    "summary": {
      "type": "object"
    },
    "publicationRule": {
      "type": "string"
    }
  }
}
list_rule_review_queue annotations
{
  "title": "List source-linked rule review work",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_rule_citations — Get approved citations for source keys
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns passage-level citations only when the linked rule satisfies the two-reviewer publication gate and has no blocking review. Unresolved keys are returned separately; draftSources names the book line (no text) behind any unresolved key the code cites, marked not reviewed.

get_rule_citations input schema
{
  "type": "object",
  "required": [
    "sourceKeys"
  ],
  "properties": {
    "sourceKeys": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1
    }
  }
}
get_rule_citations output schema
{
  "type": "object",
  "required": [
    "citations",
    "unresolvedSourceKeys",
    "draftSources",
    "publicationRule"
  ],
  "properties": {
    "citations": {
      "type": "array"
    },
    "draftSources": {
      "type": "array"
    },
    "publicationRule": {
      "type": "string"
    },
    "unresolvedSourceKeys": {
      "type": "array"
    }
  }
}
get_rule_citations annotations
{
  "title": "Get approved citations for source keys",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_synthesis_validation_status — Get Synthesis Brain validation status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the frozen blind-validation protocol, cohort-size gates, anti-leakage rules, and the honest current calibration state. It never treats a known single case as validation.

get_synthesis_validation_status input schema
{
  "type": "object",
  "properties": {}
}
get_synthesis_validation_status output schema
{
  "type": "object",
  "required": [
    "protocol",
    "currentStatus",
    "blindValidationCompleted",
    "calibratedProbabilities"
  ],
  "properties": {
    "protocol": {
      "type": "object"
    },
    "currentStatus": {
      "type": "string"
    },
    "calibratedProbabilities": {
      "type": "boolean"
    },
    "blindValidationCompleted": {
      "type": "boolean"
    }
  }
}
get_synthesis_validation_status annotations
{
  "title": "Get Synthesis Brain validation status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
query_vimshottari_date — Query Vimshottari period on a date
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the active Mahadasha, Antardasha and Pratyantardasha with exact boundaries for one ISO date. Optimized for AI clients that do not need the full 120-year timeline.

query_vimshottari_date input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset",
    "queryDate"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "queryDate": {
      "type": "string",
      "description": "ISO 8601 date or instant"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
query_vimshottari_date output schema
{
  "type": "object",
  "required": [
    "mahadasha",
    "antardasha",
    "pratyantardasha"
  ],
  "properties": {
    "mahadasha": {
      "type": "string"
    },
    "antardasha": {
      "type": "string"
    },
    "pratyantardasha": {
      "type": "string"
    }
  }
}
query_vimshottari_date annotations
{
  "title": "Query Vimshottari period on a date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_compact_chart_evidence — Get compact chart evidence for AI
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns a stable, compact, deterministic evidence object for narration agents. It omits bulky timelines and contribution matrices while retaining calculation version, confidence, placements, focus, and safety boundaries.

get_compact_chart_evidence input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "focus": {
      "enum": [
        "general",
        "career",
        "marriage",
        "children",
        "education",
        "property",
        "health",
        "spirituality"
      ],
      "type": "string",
      "default": "general"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
get_compact_chart_evidence output schema
{
  "type": "object",
  "additionalProperties": true
}
get_compact_chart_evidence annotations
{
  "title": "Get compact chart evidence for AI",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_timing_context — Get combined dasha and transit context
Advertised by the server during the last successful anonymous check.
Advertised read-only

For one date, returns active Vimshottari periods plus Saturn, Jupiter and node transit houses from natal Moon and Lagna. Sade Sati and Dhaiya are labelled structural periods, not guaranteed outcomes.

get_timing_context input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset",
    "queryDate"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "queryDate": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "queryTime": {
      "type": "string",
      "default": "12:00"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
get_timing_context output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "queryDate",
    "dasha",
    "transits",
    "saturnPeriods"
  ],
  "properties": {
    "dasha": {
      "type": "object"
    },
    "transits": {
      "type": "array"
    },
    "queryDate": {
      "type": "string"
    },
    "saturnPeriods": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-timing-1"
    }
  }
}
get_timing_context annotations
{
  "title": "Get combined dasha and transit context",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
build_slow_transit_calendar — Build exact slow-transit periods
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns exact Saturn, Jupiter, Rahu and Ketu sidereal sign periods, Saturn Sade Sati/Dhaiya structural ranges, and Vimshottari intersections over a selected future interval.

build_slow_transit_calendar input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place",
    "latitude",
    "longitude",
    "timezoneOffset",
    "startDate"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "years": {
      "type": "number",
      "default": 10,
      "maximum": 40,
      "minimum": 0.1
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "startDate": {
      "type": "string",
      "description": "ISO date or instant"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
build_slow_transit_calendar output schema
{
  "type": "object",
  "required": [
    "periods",
    "dashaIntersections"
  ],
  "properties": {
    "periods": {
      "type": "array"
    },
    "dashaIntersections": {
      "type": "array"
    }
  }
}
build_slow_transit_calendar annotations
{
  "title": "Build exact slow-transit periods",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_marriage_windows — Find structural marriage-planning windows
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds overlaps between Jupiter transiting the natal seventh sign and Venus or seventh-lord Vimshottari periods. Returns planning windows, never a guaranteed marriage prediction.

find_marriage_windows input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "startDate"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "years": {
      "type": "number",
      "default": 5,
      "maximum": 20,
      "minimum": 0.25
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "startDate": {
      "type": "string"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
find_marriage_windows output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "subject",
    "range",
    "natal",
    "windows",
    "safety"
  ],
  "properties": {
    "natal": {
      "type": "object"
    },
    "range": {
      "type": "object"
    },
    "safety": {
      "type": "object"
    },
    "subject": {
      "type": "object"
    },
    "windows": {
      "type": "array"
    },
    "schemaVersion": {
      "const": "sahadeva-marriage-windows-1"
    }
  }
}
find_marriage_windows annotations
{
  "title": "Find structural marriage-planning windows",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_marriage_readiness — Get one-call marriage readiness context
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns separate North Indian Ashtakoota and South Indian ten-Porutham compatibility, Kuja evidence, compact summaries for both charts, and structural marriage-planning windows for each person in one call.

get_marriage_readiness input schema
{
  "type": "object",
  "required": [
    "bride",
    "groom",
    "startDate"
  ],
  "properties": {
    "bride": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string"
        },
        "place": {
          "type": "string"
        },
        "latitude": {
          "type": "number"
        },
        "timezone": {
          "type": "string"
        },
        "longitude": {
          "type": "number"
        },
        "timezoneOffset": {
          "type": "number"
        }
      }
    },
    "groom": {
      "type": "object",
      "anyOf": [
        {
          "required": [
            "place"
          ]
        },
        {
          "required": [
            "latitude",
            "longitude",
            "timezone"
          ]
        }
      ],
      "required": [
        "date",
        "time"
      ],
      "properties": {
        "date": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "time": {
          "type": "string"
        },
        "place": {
          "type": "string"
        },
        "latitude": {
          "type": "number"
        },
        "timezone": {
          "type": "string"
        },
        "longitude": {
          "type": "number"
        },
        "timezoneOffset": {
          "type": "number"
        }
      }
    },
    "years": {
      "type": "number",
      "default": 5,
      "maximum": 20,
      "minimum": 0.25
    },
    "muhurta": {
      "type": "object",
      "required": [
        "startDate",
        "endDate"
      ],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 20,
          "minimum": 1
        },
        "place": {
          "type": "string"
        },
        "endDate": {
          "type": "string"
        },
        "latitude": {
          "type": "number"
        },
        "timezone": {
          "type": "string"
        },
        "longitude": {
          "type": "number"
        },
        "startDate": {
          "type": "string"
        },
        "timezoneOffset": {
          "type": "number"
        }
      },
      "description": "Optional shared wedding location and bounded date range passed to find_muhurta"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "startDate": {
      "type": "string"
    }
  }
}
get_marriage_readiness output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "compatibility",
    "subjects",
    "marriageWindows",
    "safety"
  ],
  "properties": {
    "safety": {
      "type": "object"
    },
    "subjects": {
      "type": "object"
    },
    "compatibility": {
      "type": "object"
    },
    "schemaVersion": {
      "const": "sahadeva-marriage-readiness-1"
    },
    "marriageWindows": {
      "type": "object"
    }
  }
}
get_marriage_readiness annotations
{
  "title": "Get one-call marriage readiness context",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
render_chart — Render a shareable birth chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Renders a deterministic birth chart as inline SVG in South Indian (default), North Indian or East Indian style, for the rasi chart or any divisional chart, with the lagna marked, degrees in the rasi chart, and retrograde and combustion flags.

render_chart input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "size": {
      "type": "integer",
      "default": 1200,
      "maximum": 2400,
      "minimum": 480
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "style": {
      "enum": [
        "south",
        "north",
        "east"
      ],
      "type": "string",
      "default": "south",
      "description": "South Indian (fixed signs), North Indian (fixed houses) or East Indian (Bengal/Odisha) layout"
    },
    "theme": {
      "enum": [
        "light",
        "dark"
      ],
      "type": "string",
      "default": "light"
    },
    "varga": {
      "type": "string",
      "default": "D1",
      "description": "Divisional chart: D1 (rasi), D9 (navamsa), D10 and so on up to D144"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
render_chart output schema
{
  "type": "object",
  "required": [
    "format",
    "mimeType",
    "svg",
    "safety"
  ],
  "properties": {
    "svg": {
      "type": "string"
    },
    "style": {
      "enum": [
        "south",
        "north",
        "east"
      ],
      "type": "string"
    },
    "varga": {
      "type": "string"
    },
    "format": {
      "const": "svg"
    },
    "safety": {
      "type": "object"
    },
    "mimeType": {
      "const": "image/svg+xml"
    }
  }
}
render_chart annotations
{
  "title": "Render a shareable birth chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_report_pdf — Generate a hosted shareable PDF report
Advertised by the server during the last successful anonymous check.

Generates the full reading context as a server-side PDF and returns a hosted URL valid for 30 days.

generate_report_pdf input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string"
    },
    "asOfDate": {
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "timezone": {
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "chartStyle": {
      "enum": [
        "south",
        "north",
        "east"
      ],
      "type": "string",
      "default": "south",
      "description": "Layout of the birth chart printed on the first page"
    },
    "horizonYears": {
      "type": "number",
      "default": 5,
      "maximum": 20,
      "minimum": 1
    },
    "timezoneOffset": {
      "type": "number"
    }
  }
}
generate_report_pdf output schema
{
  "type": "object",
  "required": [
    "id",
    "url",
    "expiresAt",
    "contentType",
    "safety"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "safety": {
      "type": "object"
    },
    "expiresAt": {
      "type": "string"
    },
    "contentType": {
      "const": "application/pdf"
    }
  }
}
generate_report_pdf annotations
{
  "title": "Generate a hosted shareable PDF report",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
calculate_prashna — Ask a Prashna question
Advertised by the server during the last successful anonymous check.

Casts a server-time horary chart, checks chart fitness, and returns an auditable structural judgment plus outcome-confirmation hook. For 'when will I be promoted' or 'when will I get a job' (category career), pass seedNumber (the person's own pick from 1 to 249) to get KP Reader VI dated windows in timingWindows; without it, or when the chart is unfit or the promotion or job is not promised, judgmentDimensions.timing explains why no date is given. Job-change questions are not timed. Never supply dates that timingWindows does not contain.

calculate_prashna input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "question",
    "category"
  ],
  "properties": {
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "category": {
      "enum": [
        "career",
        "relationship",
        "money",
        "property",
        "travel",
        "lost-object",
        "health",
        "education",
        "litigation",
        "children",
        "missing-person",
        "general"
      ],
      "type": "string"
    },
    "language": {
      "enum": [
        "en",
        "te"
      ],
      "type": "string",
      "default": "en"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "question": {
      "type": "string",
      "maxLength": 500,
      "minLength": 3
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "tradition": {
      "enum": [
        "integrated",
        "classical",
        "tajaka",
        "systems-approach",
        "prashna-nadi"
      ],
      "type": "string",
      "default": "integrated",
      "description": "integrated compares traditions; prashna-nadi is KP/Nadi and requires seedNumber"
    },
    "seedNumber": {
      "type": "integer",
      "maximum": 249,
      "minimum": 1,
      "description": "KP horary number chosen by the person asking; enables KP/Nadi results and Reader VI promotion and job timing"
    },
    "referenceHouse": {
      "type": "integer",
      "default": 1,
      "maximum": 12,
      "minimum": 1,
      "description": "House of the person the question concerns (1 = the querent, 7 = spouse or other party, 10 = employer)"
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
calculate_prashna output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "consultationId",
    "chartFitness",
    "judgment",
    "feedback",
    "safety"
  ],
  "additionalProperties": true
}
calculate_prashna annotations
{
  "title": "Ask a Prashna question",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
record_prashna_outcome — Record a Prashna outcome
Advertised by the server during the last successful anonymous check.

Closes the Prashna feedback loop using the private confirmation token returned by calculate_prashna. The token is hashed at rest and is distinct from the consultation ID.

record_prashna_outcome input schema
{
  "type": "object",
  "required": [
    "confirmationToken",
    "outcome"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "maxLength": 1000
    },
    "outcome": {
      "enum": [
        "confirmed",
        "partly-confirmed",
        "not-confirmed",
        "unresolved"
      ],
      "type": "string"
    },
    "resolvedAt": {
      "type": "string",
      "format": "date-time"
    },
    "confirmationToken": {
      "type": "string",
      "maxLength": 256,
      "minLength": 16
    }
  }
}
record_prashna_outcome output schema
{
  "type": "object",
  "required": [
    "id",
    "consultationId",
    "status",
    "recordedAt"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "const": "recorded"
    },
    "recordedAt": {
      "type": "string"
    },
    "consultationId": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
record_prashna_outcome annotations
{
  "title": "Record a Prashna outcome",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_depth_analysis — Get strength, Varga and additional-Dasha depth
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns Vimsopaka and Ishta/Kashta evidence, topic-specific cross-Varga synthesis, special Lagnas, expanded Yoga candidates and additional-Dasha status.

get_depth_analysis input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "marriage",
        "wealth",
        "education",
        "children",
        "property",
        "spirituality"
      ],
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
get_depth_analysis output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "strengthLineage",
    "vargaSynthesis",
    "targetedLagnas",
    "yogas",
    "additionalDashas",
    "safety"
  ],
  "additionalProperties": true
}
get_depth_analysis annotations
{
  "title": "Get strength, Varga and additional-Dasha depth",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fuse_timing — Fuse promise, Dasha, transit, Ashtakavarga and Varga timing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Applies natal promise as a hard gate and returns uncalibrated, auditable timing windows with learnable factor weights.

fuse_timing input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "latitude",
        "longitude",
        "timezone"
      ]
    }
  ],
  "required": [
    "date",
    "time",
    "topic",
    "startIso",
    "endIso"
  ],
  "properties": {
    "date": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "time": {
      "type": "string"
    },
    "place": {
      "type": "string",
      "description": "Catalogue query or display label when explicit coordinates are supplied"
    },
    "topic": {
      "enum": [
        "career",
        "marriage",
        "wealth",
        "education",
        "children",
        "property",
        "spirituality"
      ],
      "type": "string"
    },
    "endIso": {
      "type": "string"
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "startIso": {
      "type": "string"
    },
    "timezone": {
      "type": "string",
      "description": "Required IANA timezone when explicit coordinates are supplied, for example Asia/Kolkata"
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "timezoneOffset": {
      "type": "number",
      "maximum": 14,
      "minimum": -14,
      "description": "Optional fallback offset; derived from timezone and the requested local date when omitted"
    }
  }
}
fuse_timing output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "topic",
    "promise",
    "windows"
  ],
  "additionalProperties": true
}
fuse_timing annotations
{
  "title": "Fuse promise, Dasha, transit, Ashtakavarga and Varga timing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
rectify_birth_time — Rank birth-time hypotheses
Advertised by the server during the last successful anonymous check.
Advertised read-only

Scores candidate birth times against life events and validates with a held-out event. Never claims an exact recovered minute.

rectify_birth_time input schema
{
  "type": "object",
  "required": [
    "baseInput",
    "earliestTime",
    "latestTime",
    "events"
  ],
  "properties": {
    "events": {
      "type": "array"
    },
    "baseInput": {
      "type": "object"
    },
    "latestTime": {
      "type": "string"
    },
    "stepMinutes": {
      "type": "integer",
      "default": 5
    },
    "earliestTime": {
      "type": "string"
    },
    "holdoutEventId": {
      "type": "string"
    }
  }
}
rectify_birth_time output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "rankedCandidates",
    "rankedClusters",
    "notice"
  ],
  "additionalProperties": true
}
rectify_birth_time annotations
{
  "title": "Rank birth-time hypotheses",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_reviewed_rules — Search independently approved rules
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns only publication-gated rules and rights-safe source metadata. Drafts and open contradictions are excluded.

search_reviewed_rules input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "query": {
      "type": "string"
    },
    "topic": {
      "type": "string"
    },
    "harmClass": {
      "type": "string"
    },
    "tradition": {
      "type": "string"
    }
  }
}
search_reviewed_rules output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "results",
    "publicationPolicy"
  ],
  "additionalProperties": true
}
search_reviewed_rules annotations
{
  "title": "Search independently approved rules",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_source_passages — Search source passages with rights controls
Advertised by the server during the last successful anonymous check.
Advertised read-only

Searches passage metadata and returns text only when display rights permit it. Results never become executable rules automatically.

search_source_passages input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "query": {
      "type": "string"
    },
    "tradition": {
      "type": "string"
    },
    "reviewStatus": {
      "type": "string"
    }
  }
}
search_source_passages output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "results",
    "rightsPolicy"
  ],
  "additionalProperties": true
}
search_source_passages annotations
{
  "title": "Search source passages with rights controls",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_traditions — Compare traditions without blending them
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compares explicitly supplied tradition ledgers while preserving separate methods, evidence, contradictions and readiness states.

compare_traditions input schema
{
  "type": "object",
  "required": [
    "ledgers"
  ],
  "properties": {
    "ledgers": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "minItems": 2
    }
  }
}
compare_traditions output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "traditions",
    "agreements",
    "contradictions",
    "synthesisPolicy"
  ],
  "additionalProperties": true
}
compare_traditions annotations
{
  "title": "Compare traditions without blending them",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
audit_prediction_claim — Audit one prediction claim before narration
Advertised by the server during the last successful anonymous check.
Advertised read-only

Applies calculation, approved-rule, opposition, calibration and harm gates and returns publish, caution or claim-level abstain, plus narration instructions. Sensitive topics remain answerable with bounded reflections and practical suggestions.

audit_prediction_claim input schema
{
  "type": "object",
  "required": [
    "claim"
  ],
  "properties": {
    "claim": {
      "type": "string"
    },
    "harmClass": {
      "enum": [
        "general-cultural",
        "sensitive-reflective",
        "high-impact-restricted",
        "prohibited-output"
      ],
      "type": "string"
    },
    "claimClass": {
      "type": "string"
    },
    "nearBoundary": {
      "type": "boolean"
    },
    "approvedRules": {
      "type": "array"
    },
    "opposingEvidence": {
      "type": "array"
    },
    "supportingEvidence": {
      "type": "array"
    },
    "calculationCertified": {
      "type": "boolean"
    },
    "unresolvedSourceKeys": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "empiricallyCalibrated": {
      "type": "boolean"
    }
  }
}
audit_prediction_claim output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "claim",
    "evidence",
    "confidence",
    "decision"
  ],
  "additionalProperties": true
}
audit_prediction_claim annotations
{
  "title": "Audit one prediction claim before narration",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
record_consultation_outcome — Record a versioned prediction claim and later outcome
Advertised by the server during the last successful anonymous check.

Stores one atomic claim and a consent-scoped outcome for descriptive validation without training on narration.

record_consultation_outcome input schema
{
  "type": "object",
  "required": [
    "claimId",
    "claim",
    "claimClass",
    "tradition",
    "chartVersion",
    "rulesetVersion",
    "outcome",
    "consentScope"
  ],
  "properties": {
    "claim": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "claimId": {
      "type": "string"
    },
    "outcome": {
      "enum": [
        "confirmed",
        "partly-confirmed",
        "not-confirmed",
        "unresolved"
      ],
      "type": "string"
    },
    "evidence": {
      "type": "object"
    },
    "tradition": {
      "type": "string"
    },
    "claimClass": {
      "type": "string"
    },
    "resolvedAt": {
      "type": "string"
    },
    "chartVersion": {
      "type": "string"
    },
    "consentScope": {
      "enum": [
        "service-follow-up",
        "descriptive-outcomes",
        "blind-validation"
      ],
      "type": "string"
    },
    "userSawClaim": {
      "type": "boolean"
    },
    "outcomeBlinded": {
      "type": "boolean"
    },
    "rulesetVersion": {
      "type": "string"
    },
    "resolutionWindowEnd": {
      "type": "string"
    },
    "resolutionWindowStart": {
      "type": "string"
    }
  }
}
record_consultation_outcome output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "claimId",
    "outcomeId",
    "status"
  ],
  "additionalProperties": true
}
record_consultation_outcome annotations
{
  "title": "Record a versioned prediction claim and later outcome",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
get_validation_report — Get versioned calculation, knowledge, review and outcome validation status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reports coverage and validation gates without converting descriptive counts into scientific or predictive validity.

get_validation_report input schema
{
  "type": "object",
  "properties": {
    "tradition": {
      "type": "string"
    },
    "engineVersion": {
      "type": "string"
    },
    "rulesetVersion": {
      "type": "string"
    }
  }
}
get_validation_report output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "calculation",
    "knowledge",
    "review",
    "outcomes",
    "overallStatus"
  ],
  "additionalProperties": true
}
get_validation_report annotations
{
  "title": "Get versioned calculation, knowledge, review and outcome validation status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
review_lal_kitab_rule — Record a Lal Kitab specialist rule review
Advertised by the server during the last successful anonymous check.
Advertised destructive

Reviewer-only mutation recording convention version, scan verification, sensitive class, remedy burden and decision.

review_lal_kitab_rule input schema
{
  "type": "object",
  "required": [
    "ruleId",
    "reviewerId",
    "conventionVersion",
    "scanVerified",
    "sensitiveClaimClass",
    "decision"
  ],
  "properties": {
    "notes": {
      "type": "string"
    },
    "ruleId": {
      "type": "string"
    },
    "decision": {
      "enum": [
        "approve",
        "request_changes",
        "reject"
      ],
      "type": "string"
    },
    "reviewerId": {
      "type": "string"
    },
    "remedyBurden": {
      "type": "object"
    },
    "scanVerified": {
      "type": "boolean"
    },
    "conventionVersion": {
      "type": "string"
    },
    "sensitiveClaimClass": {
      "type": "string"
    }
  }
}
review_lal_kitab_rule output schema
{
  "type": "object",
  "required": [
    "schemaVersion",
    "ruleId",
    "reviewerId",
    "decision",
    "publicationStatus"
  ],
  "additionalProperties": true
}
review_lal_kitab_rule annotations
{
  "title": "Record a Lal Kitab specialist rule review",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

8 advertised

quick_consultation

Advertised by the server during the last successful anonymous check.

Answer a focused Jyotish question with one compact deterministic tool call.

birth_details
No description (required)
question
No description (required)
focus
No description
full_life_reading

Advertised by the server during the last successful anonymous check.

Resolve a place and generate a complete evidence-linked South Indian life report.

birth_details
Name, date, local time and birth place (required)
focus
Optional life area
timing_outlook

Advertised by the server during the last successful anonymous check.

Explain Dasha and slow-transit windows without guaranteeing events.

birth_details
No description (required)
as_of_date
No description (required)
horizon_years
No description
prashna_consultation

Advertised by the server during the last successful anonymous check.

Run a bounded Prashna consultation and explain how to record the later outcome.

question
No description (required)
category
No description (required)
location
No description (required)
chart_fact_check

Advertised by the server during the last successful anonymous check.

Check sign indexing, Nakshatra consistency, location and methodology before interpretation.

chart_or_birth_details
No description (required)
synthesis_validation_audit

Advertised by the server during the last successful anonymous check.

Audit life-theme output against citation, calibration, leakage, and safety gates.

life_theme_output
No description (required)
lal_kitab_consultation

Advertised by the server during the last successful anonymous check.

Run a source-linked Lal Kitab structural consultation with calculation auditing and caution-led disclosure.

birth_details
No description (required)
question
No description
evidence_first_prediction

Advertised by the server during the last successful anonymous check.

Guide any AI through the complete calculation, reviewed-rule, claim-audit and validation sequence.

birth_details
No description (required)
question
No description (required)
traditions
No description

Resources

10 advertised

Sahadeva methodology and safety contract

Advertised by the server during the last successful anonymous check.

Sahadeva methodology and safety contract URI
sahadeva://methodology

MIME type: application/json

Recommended MCP workflows

Advertised by the server during the last successful anonymous check.

Recommended MCP workflows URI
sahadeva://mcp-workflows

MIME type: application/json

Rule citation and publication policy

Advertised by the server during the last successful anonymous check.

Rule citation and publication policy URI
sahadeva://rule-review-policy

MIME type: application/json

Blind validation protocol for life-theme ranking

Advertised by the server during the last successful anonymous check.

Blind validation protocol for life-theme ranking URI
sahadeva://synthesis-validation

MIME type: application/json

Specialist tools for explicit advanced workflows

Advertised by the server during the last successful anonymous check.

Specialist tools for explicit advanced workflows URI
sahadeva://expert-tools

MIME type: application/json

Lal Kitab coverage and controlled-disclosure policy

Advertised by the server during the last successful anonymous check.

Lal Kitab coverage and controlled-disclosure policy URI
sahadeva://lal-kitab

MIME type: application/json

Lal Kitab remedy-engine coverage and execution policy

Advertised by the server during the last successful anonymous check.

Lal Kitab remedy-engine coverage and execution policy URI
sahadeva://lal-kitab-remedies

MIME type: application/json

Complete evidence-first prediction method and tool routing contract

Advertised by the server during the last successful anonymous check.

Complete evidence-first prediction method and tool routing contract URI
sahadeva://prediction-quality

MIME type: application/json

MCP privacy, anti-exfiltration and untrusted-data contract

Advertised by the server during the last successful anonymous check.

MCP privacy, anti-exfiltration and untrusted-data contract URI
sahadeva://security

MIME type: application/json

Sahadeva interactive reading view

Advertised by the server during the last successful anonymous check.

Interactive Rasi/Navamsa chart in South, North or East Indian style with dasha timeline and transit drill-down, Panchanga day card, compatibility scorecard, timing, family timeline, muhurta windows and name analysis.

Sahadeva interactive reading view URI
ui://sahadeva/views/reading.html

MIME type: text/html;profile=mcp-app

Exact Sahadeva tool schema

Advertised by the server during the last successful anonymous check.

Read the input/output schema and annotations for a recommended specialist tool before calling it.

Exact Sahadeva tool schema URI template
sahadeva://tools/{name}

MIME type: application/json

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1626 ms
95th percentile latency
1626 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1626 ms · metadata changed · 101 tool(s), 10 resource(s), 1 resource template(s), 8 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http sahadeva-mcp https://sahadeva.magicteams.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add sahadeva-mcp --url https://sahadeva.magicteams.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable sahadeva-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "sahadeva-mcp": {
      "url": "https://sahadeva.magicteams.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "sahadeva-mcp": {
      "type": "streamableHttp",
      "url": "https://sahadeva.magicteams.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start sahadeva-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "sahadeva-mcp": {
      "type": "http",
      "url": "https://sahadeva.magicteams.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http sahadeva-mcp https://sahadeva.magicteams.ai/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://sahadeva.magicteams.ai/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "sahadeva-mcp": {
      "serverUrl": "https://sahadeva.magicteams.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Sahadeva MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.