Asterwise
Server Details
Vedic astrology MCP server connecting any AI to real ephemeris calculations — natal charts, Vimshottari Dasha, yogas with BPHS citations, matchmaking with Rajju/Vedha vetoes, panchanga, KP system, Lal Kitab, and numerology. OAuth 2.1. Free sandbox tier.
- Status
- Healthy
- Uptime
- 73.0% over 61 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 104 tools
Tools are generally well-separated by domain (numerology, Vedic astrology, Western astrology, tarot, crystals, dreams) and most have explicit DO NOT CONFUSE sections. However, there are several near-duplicate tools: asterwise_get_crystal_recommendations vs asterwise_get_crystal_recommendations_natal vs asterwise_get_gemstone_recommendations, and asterwise_get_remedies vs asterwise_get_gemstone_recommendations vs asterwise_get_lal_kitab_remedies vs asterwise_get_puja_suggestions vs asterwise_get_rudraksha. These clusters create real selection ambiguity that even good descriptions only partially mitigate.
Every tool follows the asterwise_verb_noun snake_case pattern (check_mobile_number, get_natal_chart, draw_tarot_cards). The prefix is uniform and the verb+noun structure is predictable throughout all 104 tools. No mixed conventions detected.
104 tools is far beyond what an agent can reasonably navigate in-context and forces reliance on external docs for disambiguation. While the domain is genuinely broad (numerology, Vedic, Western, tarot, crystals, dreams), many tools are thin wrappers or near-duplicates (e.g. get_tarot_cards vs get_tarot_major_arcana vs get_tarot_suit, multiple crystal recommendation endpoints). This feels like an over-exposed API surface rather than a curated tool set.
Coverage across all claimed domains is unusually thorough: full CRUD-style lifecycles for natal charts, dashas, panchanga, divisional charts, Western returns/progressions/transits, tarot spreads, crystal catalogues and recommendations, and dream symbols. Minor gaps exist (e.g. no update/delete operations for user data, which may not apply), but for a read-only analytical service the surface is essentially complete.
Available Tools
118 toolsasterwise_check_mobile_numberMobile Number CheckRead-onlyIdempotentInspect
Sums the digits of the national number (country code left out), reduces them to a single number, and returns harmonic scoring plus interpretive copy.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — anchor Life Path before judging the line. AFTER: None.
INPUT CONTRACT: Only digits count; the country calling code is never counted. Numbers written with '+' or '00' use the national number. Without a prefix, pass country (ISO 3166 alpha-2, e.g. IN, US, CN) so the number is read as dialled in that country; with no country, only India's 12-digit 91… form is shortened and every other number is summed exactly as written (e.g. 14155552671 without country sums all 11 digits = 42; with country=US it is 41). With country, the number is read as dialled there first, international dialling prefix included (e.g. AU 0011, US 011). A '+'/'00' number drops its country code only when it is a valid number: an invalid '+' number sums every digit after '+', an invalid '00' number is summed as written.
DO NOT CONFUSE WITH: asterwise_check_vehicle_number — plate digit rules, not SIM numbering. asterwise_get_business_name_analysis — letter Expression scan, not phone roots.
Full output and error contract: https://docs.asterwise.com/mcp/tools/check-mobile-number/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working. | |
| name | No | Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working. | |
| country | No | Country of the number as ISO 3166 alpha-2, e.g. 'IN', 'US', 'CN'. Used only when the number has no '+'/'00' prefix: it is then read as dialled in that country and the country code is left out of the sum. | |
| mobile_number | Yes | Mobile number to analyse; digits only, country code optional. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_check_sade_satiSade SatiRead-onlyIdempotentInspect
Evaluates Saturn's seven-and-a-half-year Sade Sati cycle against the natal Moon sign for the current day. Returns intensity, upcoming cycles, and historical rows.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — confirm Moon sign context. AFTER: asterwise_get_gochar — broader transit canvas if needed.
INPUT CONTRACT: No explicit query date — API pins to current day. BirthData global contract applies.
DO NOT CONFUSE WITH: asterwise_get_gochar — nine-planet daily scan including sade_sati_active flag but less Sade Sati detail than this tool. asterwise_get_transits — ingress/station feed, not Moon-focused Saturn phase model.
Full output and error contract: https://docs.asterwise.com/mcp/tools/check-sade-sati/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_check_vehicle_numberVehicle Number CheckRead-onlyIdempotentInspect
Strips non-digits from a vehicle registration token, reduces the numeric run to a single number, and returns the same harmony schema as mobile analysis.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — owner baseline. AFTER: None.
INPUT CONTRACT: Letters and separators are ignored; reduction uses numeric digits only. Owner name and birth date are optional and not used.
DO NOT CONFUSE WITH: asterwise_check_mobile_number — phone digit rules (national number, country code left out). asterwise_get_business_name_analysis — evaluates business Expression, not registration digits.
Full output and error contract: https://docs.asterwise.com/mcp/tools/check-vehicle-number/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working. | |
| name | No | Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working. | |
| vehicle_number | Yes | Vehicle registration number, e.g. 'DL01AB1234'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_draw_tarot_cardsDraw Tarot CardsARead-onlyInspect
Draws N unique random cards from the 78-card deck using cryptographic randomness (Python secrets.SystemRandom). Every call is independent — there is no session state.
WORKFLOW: BEFORE: None — standalone. AFTER: None — interpret drawn cards using their active_meaning and active_keywords fields.
INPUT CONTRACT: count (int 1–78, default 1) — Number of unique cards to draw. Example: 1 (daily pull), 3 (simple reading), 10 (Celtic Cross), 78 (full deck shuffle). Values outside 1–78 are rejected locally with MCP INVALID_PARAMS. allow_reversed (bool, default false) — When true, each drawn card independently has a 50% chance of reversal (cryptographically random, not seeded).
DO NOT CONFUSE WITH: asterwise_get_tarot_card_of_the_day — deterministic daily card, same for all callers. asterwise_get_tarot_three_card_spread — positional read with named positions and meanings. asterwise_get_tarot_celtic_cross — 10-card positional spread.
Full output and error contract: https://docs.asterwise.com/mcp/tools/draw-tarot-cards/
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of cards to draw. | |
| allow_reversed | No | Whether cards may be drawn reversed (upside down). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description is consistent with them. It adds significant context beyond annotations: cryptographic randomness via Python secrets.SystemRandom, per-call independence with no session state, local rejection of out-of-range counts with MCP INVALID_PARAMS, and a 50% per-card reversal chance that is explicitly 'not seeded.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core behavior in the first sentence, then organized into labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) that make it scannable. There is no filler; examples, validation notes, and the docs link all earn their place, and the length is proportionate to the three near-sibling tools it must disambiguate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Between the annotations (safe read operation), the output schema, and the docs link for the full output/error contract, nothing an agent needs to invoke this tool correctly is missing. The reminder to interpret drawn cards via active_meaning and active_keywords fields also closes the loop on how results should be consumed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already documents all three parameters; the description adds strong value with concrete examples (1 daily pull, 3 simple reading, 10 Celtic Cross, 78 full deck), the 1–78 boundary with local validation behavior, and probability mechanics for allow_reversed (50% per card, independent, not seeded). Minor gap: response_format is absent from the INPUT CONTRACT section, though its schema description is thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'Draws N unique random cards from the 78-card deck' — and adds scope-defining traits (unique, cryptographic randomness, no session state). The 'DO NOT CONFUSE WITH' block names the three closest tarot siblings and their distinguishing behavior, so an agent can select this tool without opening their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is standalone with no prerequisites or follow-up ('BEFORE: None', 'AFTER: None'). The 'DO NOT CONFUSE WITH' section names asterwise_get_tarot_card_of_the_day, asterwise_get_tarot_three_card_spread, and asterwise_get_tarot_celtic_cross with the precise differences (deterministic vs positional vs random), leaving no ambiguity about when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_geocodeGeocode a placeARead-onlyIdempotentInspect
Turns a place name into latitude, longitude and IANA timezone for the other tools, which all take lat, lon and timezone.
WORKFLOW: BEFORE: None. AFTER: any tool that takes lat, lon and timezone — asterwise_get_natal_chart, asterwise_get_panchanga, asterwise_get_muhurta, asterwise_get_festival_calendar and others.
INPUT CONTRACT: query: place name, at least 2 characters (required). limit: 1-10 (default 5). country: optional ISO 3166 alpha-2 code.
DO NOT CONFUSE WITH: None — this is the only place-lookup tool.
Full output and error contract: https://docs.asterwise.com/mcp/tools/geocode/
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum matches to return (1-10). | |
| query | Yes | Place name, e.g. 'Pune' or 'Fatehabad, Haryana'. | |
| country | No | Optional ISO 3166 alpha-2 country code to narrow the search, e.g. 'in'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add context — and it does, via input constraints and a pointer to the full output/error contract URL. It does not describe result shape or what happens when zero matches are found, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose, then labeled blocks, and the constraints that matter are stated up front. Minor waste in placeholder lines ('BEFORE: None', 'DO NOT CONFUSE WITH: None'), though they do cheaply confirm the absence of a prerequisite or sibling overlap.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it already covers the input contract, the dependency relationship to downstream tools, and where to find the error contract. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents query, limit, country and response_format. The description restates the same constraints (2-char minimum, 1-10 limit, ISO 3166 alpha-2) without adding format examples or syntax beyond the schema, and omits response_format entirely. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and transformation: 'Turns a place name into latitude, longitude and IANA timezone.' It also explicitly positions itself against all 100+ siblings ('this is the only place-lookup tool'), so an agent can rule out confusion without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW block gives explicit before/after routing: BEFORE is 'None' and AFTER names concrete consumers (asterwise_get_natal_chart, asterwise_get_panchanga, asterwise_get_muhurta, asterwise_get_festival_calendar). This tells the agent exactly when to call it and what to do with the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_angel_numberAngel NumberRead-onlyIdempotentInspect
Lookup the meaning of a specific angel number by its sequence. Supported: 000, 111–999 (single repeating digit), 911, 1010, 1111, 1122, 1212, 1234, 2222–9999 (double repeating digit).
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: number: string — the angel number sequence to look up. Examples: '111', '444', '1111', '911'.
DO NOT CONFUSE WITH: asterwise_get_angel_number_today — today's collective daily angel number. asterwise_get_angel_number_personal — personal angel number from birth date. asterwise_get_number_meaning — Pythagorean numerology meaning for 1–9 and master numbers 11, 22, 33; different tradition.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-angel-number/
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Angel number sequence as seen, e.g. '111' or '1234'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_angel_number_personalPersonal Angel NumberARead-onlyIdempotentInspect
Computes a personal angel number from a birth date using the Pythagorean Life Path as the base. Life Path 1-9 maps to the triple sequence (LP 4 → 444). Master numbers 11, 22, 33 map to 1111, 2222, 3333 respectively.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — confirm Life Path before calling. AFTER: None.
INPUT CONTRACT: date: Birth date in YYYY-MM-DD format. Example: '1994-03-31' name (optional): Person's name for personalisation.
DO NOT CONFUSE WITH: asterwise_get_angel_number_today — collective daily number from today's date, not birth date. asterwise_get_numerology_profile — full Pythagorean profile; this tool extracts only the Life Path → angel sequence mapping.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-angel-number-personal/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | No | Person's name, used to personalise the angel number reading. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive. The description adds concrete behavioral detail: the LP-to-sequence mapping rules, master number handling, and scope ('extracts only the Life Path → angel sequence mapping'), plus a docs link for the full output/error contract. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with a clear first sentence, then organized into labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE, docs link). Each section earns its place; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description doesn't need to explain return values. It covers purpose, mapping, workflow, param semantics, exclusions, and points to a full contract. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions, so baseline is 3. The description adds an explicit example ('1994-03-31'), marks name as optional, and clarifies that date means 'birth date' (not today's date), which disambiguates from the sibling tool. That extra practical context justifies a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation — 'Computes a personal angel number from a birth date using the Pythagorean Life Path as the base' — and gives the exact mapping logic. The 'DO NOT CONFUSE WITH' section explicitly separates it from asterwise_get_angel_number_today and asterwise_get_numerology_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: recommends calling asterwise_get_numerology_profile first to confirm Life Path, and lists two confusable siblings with conditions (daily vs birth date; full profile vs only Life Path mapping). This leaves no ambiguity about alternative selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_angel_number_todayAngel Number TodayRead-onlyIdempotentInspect
Returns the angel number for today (UTC, or the caller's timezone) or for a given date. All digits of the date are summed and reduced to a single digit (1-9), then the triple sequence of that digit is returned (e.g. digit 9 → angel number 999).
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_angel_number_personal — for a personalised angel number from birth date.
INPUT CONTRACT: date (optional YYYY-MM-DD) or timezone (optional IANA, e.g. Asia/Kolkata); without either, today is the current UTC date. date overrides timezone.
DO NOT CONFUSE WITH: asterwise_get_angel_number — lookup for a specific number sequence by value. asterwise_get_angel_number_personal — personalised number from birth date Life Path.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-angel-number-today/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to compute the angel number for, YYYY-MM-DD. Overrides timezone. Omit for today. | |
| timezone | No | IANA time zone whose current date counts as today, e.g. 'Asia/Kolkata'. Defaults to UTC; ignored when date is given. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_ashtakavargaAshtakavargaARead-onlyIdempotentInspect
Computes full Ashtakavarga bindu matrices, trikona and ekadhipatya reductions, and sarva totals from BirthData for transit support analysis.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — confirm chart before AVK study. AFTER: asterwise_get_gochar — uses AVK scores in transit rows.
INPUT CONTRACT: BirthData only.
DO NOT CONFUSE WITH: asterwise_get_chart_strength — primary payload is Shadbala/Vimshopaka, though it embeds AVK too. asterwise_get_gochar — applies AVK scores to transits rather than exposing raw matrices.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-ashtakavarga/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive behavior, so the description's job is lighter. It adds value by stating the exact computed outputs, clarifying that raw matrices are exposed here rather than applied to transits, and linking to the full output/error contract. Minor operational details like rate limits or auth are absent but not critical for a read-only compute tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with labeled sections—WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH—and the core function is front-loaded in the first sentence. It is longer than minimal, but the length is justified by the complexity of the tool and the need to disambiguate among a large sibling list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex Vedic tool with a nested birth object and an output schema, the description provides the essential workflow, input restriction, sibling disambiguation, and a link to the full contract. Return-value details are not duplicated because an output schema exists, so nothing necessary for correct selection and invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% parameter coverage with detailed descriptions for date, lat, lon, time, ayanamsa, timezone, person_name, and response_format, so the baseline is 3. The description adds only the high-level contract 'BirthData only,' which is useful but does not deepen per-parameter semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a precise verb phrase—'Computes full Ashtakavarga bindu matrices, trikona and ekadhipatya reductions, and sarva totals'—clearly identifying both the resource and the computation. The 'DO NOT CONFUSE WITH' sections explicitly distinguish it from asterwise_get_chart_strength and asterwise_get_gochar, so an agent can disambiguate without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section names a recommended predecessor (asterwise_get_natal_chart), a natural successor (asterwise_get_gochar), and why the successor uses this tool's output. It also identifies the tools most likely to be confused with this one and explains the selection difference, making when-to-use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_ashtottari_dashaAshtottari DashaRead-onlyIdempotentInspect
Computes the Ashtottari Dasha tree (108-year cycle) with configurable depth, levels 1–5. The timeline continues into the next cycle until it reaches at least age 120 (usually 9–11 mahadashas); periods are under data.periods.root with DD/MM/YYYY dates.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — chart context before choosing between Ashtottari and Vimshottari. AFTER: asterwise_get_dasha — optional Vimshottari comparison.
INPUT CONTRACT: levels: same as asterwise_get_dasha (1–5, default 2), enforced locally before the API call. Periods use data.periods.root[], not data.periods[]. Dates in periods are DD/MM/YYYY.
DO NOT CONFUSE WITH: asterwise_get_dasha — standard 120-year Vimshottari with data.periods[], not Ashtottari or data.periods.root[]. asterwise_get_yogini_dasha — 36-year Yogini cycle with yogini names on each row.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-ashtottari-dasha/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| levels | No | Depth of the Ashtottari tree, 1-5: 1 = Mahadasha only, 2 adds Antardasha (default), 3 Pratyantar, 4 Sookshma, 5 Prana. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_ayanamshaAyanamshaARead-onlyIdempotentInspect
Returns ayanamsha values for all four supported systems (Lahiri, Raman, KP, Tropical) for a given date.
WORKFLOW: BEFORE: None — standalone reference. AFTER: None.
INPUT CONTRACT: date (optional): Date in YYYY-MM-DD format. Defaults to today.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — applies Lahiri ayanamsha automatically to natal positions. asterwise_get_western_natal — uses tropical zodiac (ayanamsha = 0).
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-ayanamsha/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to compute the ayanamsha for, YYYY-MM-DD. Defaults to today. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide strong safety cues: readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds useful behavioral context beyond those: it is a standalone reference with no BEFORE/AFTER workflow dependencies, and it defaults the date to today. It also links to the full output and error contract, which covers any remaining behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured and front-loaded: the core behavior appears in the first sentence, followed by compact WORKFLOW, INPUT CONTRACT, and confusion-avoidance sections. Every section earns its place and the whole thing is easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only tool with full schema coverage, an output schema, and rich annotations, the description is complete. It covers date format, default behavior, supported systems, sibling alternatives, and points to the full output/error contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents both date and response_format fully. The description reiterates the date default but does not add meaningfully beyond the schema. Baseline 3 is appropriate because the schema carries the parameter semantics burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb with a resource: 'Returns ayanamsha values for all four supported systems (Lahiri, Raman, KP, Tropical) for a given date.' It is clearly distinct from sibling tools, and it even names the two most likely confusable alternatives and what they do differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a 'DO NOT CONFUSE WITH' section, naming asterwise_get_natal_chart and asterwise_get_westen_natal and explaining when each should be used instead. This gives concrete routing guidance beyond simply defining the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_balance_numberBalance NumberRead-onlyIdempotentInspect
Calculates the Balance number from the first letter of each name part, using Pythagorean values. A three-part name yields three initials summed and reduced. The Balance number describes how a person handles emotional crises and unresolved inner conflict.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: name — Full legal name as used at birth. The first letter of each space-separated part contributes one value. Example: 'Arjun Mehta' → A(1) + M(4) = 5 Example: 'James Earl Carter' → J(1) + E(5) + C(3) = 9
DO NOT CONFUSE WITH: asterwise_get_expression_number — uses all letters, not just initials. asterwise_get_karmic_lessons — identifies absent digits across all letters.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-balance-number/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_biorhythmBiorhythmARead-onlyInspect
Computes physical (23-day), emotional (28-day), and intellectual (33-day) biorhythm cycles for a birth date.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_nakshatra_prediction — for the Vedic personalized daily prediction.
INPUT CONTRACT: birth_date (required): Date of birth in YYYY-MM-DD format. target_date (optional): Date to compute for. Defaults to today. days (optional int 1-90): Number of consecutive days. Default 1.
DO NOT CONFUSE WITH: asterwise_get_nakshatra_prediction — Vedic Tarabala/Chandrabala daily prediction. asterwise_get_panchanga — Vedic daily panchanga elements, not biorhythm cycles.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-biorhythm/
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of consecutive days to include, starting from the target date. | |
| birth_date | Yes | Date of birth, YYYY-MM-DD. | |
| target_date | No | Date to chart the cycles for, YYYY-MM-DD. Defaults to today. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds some behavioral context beyond the annotations by stating it is 'standalone' and has a specific workflow after it, which is not covered by the readOnly or idempotent hints. However, it does not explicitly mention side effects or permissions, though the annotations already cover these (readOnlyHint true, destructiveHint false). Overall, it adds moderate context without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured into clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) and is not overly long. However, the INPUT CONTRACT section repeats information already present in the schema, introducing slight redundancy. The front-loaded first sentence is effective, and the overall structure is easy to follow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity (4 parameters, 1 enum, output schema exists), the description covers the core purpose, usage, and differentiators. It points to a URL for the full output and error contract, which addresses potential omissions. It does not describe the output structure in detail, but the link compensates. Overall, it is sufficiently complete for an agent to decide and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of the parameter descriptions, giving a baseline of 3. The description adds the range constraint for 'days' (1-90) and clarifies the default behavior for 'target_date' ('Defaults to today'), which is not fully specified in the schema. This additional context improves understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool computes physical, emotional, and intellectual biorhythm cycles for a birth date. It also explicitly distinguishes itself from related tools via the 'DO NOT CONFUSE WITH' section, naming asterwise_get_nakshatra_prediction and asterwise_get_panchanga. This provides both a specific verb and resource, and clear differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow guidance: 'BEFORE: None' and 'AFTER: asterwise_get_nakshatra_prediction', indicating where this tool fits in a sequence. It also tells the agent when not to use this tool (i.e., for Vedic daily predictions or panchanga elements), making the selection criteria very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_business_name_analysisBusiness Name AnalysisARead-onlyIdempotentInspect
Reduces a business name to Expression and root digits and returns thematic suitability lists plus a harmony score. Uses the name only; no founder birth date is involved.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_name_correction — if the entity is a person, not a brand.
INPUT CONTRACT: business_name (required): special characters and digits are acceptable; reduction strips non-letters per upstream rules. date: not used; omit it (accepted only so older calls keep working).
DO NOT CONFUSE WITH: asterwise_get_name_correction — personal spelling alternatives, not corporate Expression scoring. asterwise_check_mobile_number — numeric line analysis, not brand letters.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-business-name-analysis/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Not used: the analysis depends only on the business name. Omit it; it is accepted only so older calls keep working. | |
| business_name | Yes | Business or brand name to analyse. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the computation uses the name only and no birth date, the date param is inert, and reduction strips non-letters per upstream rules. It stops short of discussing determinism guarantees or output shape, but the output schema covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line summary followed by labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH, doc link). Every sentence carries routing or contract information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be restated. Given the tool is a standalone, single-input computation, the description covers purpose, disambiguation, input handling, and workflow transitions, leaving no gap an agent would need filled before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, which sets a baseline of 3, but the description adds meaning the schema lacks — that special characters and digits are acceptable in business_name and that non-letters are stripped during reduction. The date parameter's inert status is clarified in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Reduces a business name to Expression and root digits') and names the actual outputs (thematic suitability lists, harmony score). The DO NOT CONFUSE WITH block explicitly separates it from asterwise_get_name_correction and asterwise_check_mobile_number, so an agent can route without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW block gives explicit before/after conditions ('BEFORE: None — standalone', 'AFTER: get_name_correction — if the entity is a person, not a brand') and the DO NOT CONFUSE WITH block names the two most confusable siblings with the discriminating condition for each.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_chaldean_numerologyChaldean NumerologyRead-onlyIdempotentInspect
Reduces a name and birth date through the Chaldean letter-value system and returns name, birth, and combined compound analyses with themes and keywords.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_numerology_profile — compare against Pythagorean cores if needed.
INPUT CONTRACT: name and date forwarded as-is; no local validation.
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — Pythagorean Life Path / Expression stack, not Chaldean compounds. asterwise_get_lo_shu_grid — digit placement magic square, not Chaldean name reduction.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-chaldean-numerology/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_char_dashaChar DashaRead-onlyIdempotentInspect
Computes Char Dasha from birth data and returns sign lords as period rulers with ISO-dated Maha and Antar sequences plus karaka mappings.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — contextualises the chart before interpreting sign-based lords. AFTER: asterwise_get_dasha — optional Vimshottari cross-check for the same native.
INPUT CONTRACT: cycles (optional int 1–3, default 1): every further cycle repeats the first cycle's signs, order and years (K.N. Rao). Period start_date and end_date in data.periods[] are YYYY-MM-DD (ISO), unlike asterwise_get_dasha which uses DD/MM/YYYY in its tree. All other parameters follow the BirthData global contract.
DO NOT CONFUSE WITH: asterwise_get_dasha — Vimshottari planet lords with DD/MM/YYYY in periods[], not sign-based Char Dasha. asterwise_get_yogini_dasha — eight Yoginis and data.periods.root[], not classical signs.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-char-dasha/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| cycles | No | Char Dasha cycles to return, 1-3 (default 1). Every further cycle repeats the first cycle's signs, order and years (K.N. Rao). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_chart_strengthChart StrengthRead-onlyIdempotentInspect
Aggregates the chart's strength measures from BirthData: Shadbala, Bhavbala and Vimshopaka (with per-varga contributions). Also returns the sixteen vargas, Ashtakavarga, karaka maps and graha yuddha pairs.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — contextualises houses before reading bala tables. AFTER: asterwise_get_yogas — optional configuration pass after strength review.
INPUT CONTRACT: BirthData only; no extra toggles.
DO NOT CONFUSE WITH: asterwise_get_yogas — boolean yoga catalogue, not numeric bala. asterwise_get_ashtakavarga — standalone AVK when strength bundle is not needed.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-chart-strength/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_choghadiyaChoghadiyaARead-onlyIdempotentInspect
Splits a solar day into sixteen Choghadiya segments from sunrise/sunset at a location and labels each slot's quality, ruler, and local clock bounds.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_rahu_kaal — optional inauspicious band overlay for the same date.
INPUT CONTRACT: LocationInput enforces YYYY-MM-DD date and lat/lon ranges locally. All parameters are defined in the tool schema.
DO NOT CONFUSE WITH: asterwise_get_hora — twenty-four planetary horas, not sixteen Choghadiya. asterwise_get_muhurta — scored windows across a date range for named activities.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-choghadiya/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, providing the core safety profile. The description adds no side-effect information but does describe the output (quality, ruler, local clock bounds) and the input basis (sunrise/sunset at a location), which gives some behavioral context beyond the annotations. Since annotations cover the main safety aspects and the description adds modest context, a score of 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is a single, dense sentence that conveys the core function without fluff. The additional sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) are each short and purposeful, adding necessary guidance without redundancy. The structure is well-organized and every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, input constraints (via INPUT CONTRACT and schema), output expectations (quality, ruler, clock bounds), workflow (before/after), and alternatives to avoid. It also provides a link to the full output/error contract. For a tool with a nested location parameter, this is comprehensive and leaves little ambiguity for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all fields having descriptions (e.g., lat/lon ranges, date pattern, timezone default, response_format enum). The description text adds context by explaining that the location is used for 'sunrise/sunset' and that output includes 'local clock bounds,' which clarifies the role of timezone and lat/lon. The INPUT CONTRACT section also states that LocationInput enforces date format and lat/lon ranges, reinforcing schema details. This extra context justifies a 4 rather than the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool does: 'Splits a solar day into sixteen Choghadiya segments from sunrise/sunset at a location and labels each slot's quality, ruler, and local clock bounds.' It clearly identifies the resource (solar day segments) and the action (splits and labels). The 'DO NOT CONFUSE WITH' section explicitly differentiates it from asterwise_get_hora and asterwise_get_muhurta, making it distinct among the many sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit workflow guidance: 'BEFORE: None — this tool is standalone. AFTER: asterwise_get_rahu_kaal — optional inauspicious band overlay for the same date.' It also includes 'DO NOT CONFUSE WITH' warnings that clarify when not to use this tool compared to related ones (hora, muhurta). This gives the agent clear conditions for selecting this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_compatibilityAshtakoota CompatibilityRead-onlyIdempotentInspect
Scores North Indian Ashtakoota (36-point Guna Milan) for two charts. Returns the koota breakdown, dosha flags, classical vetoes, a Mangal cross-check and narrative guidance.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart per person — understand charts before interpreting scores. AFTER: asterwise_get_papasamyam — optional malefic balance overlay.
INPUT CONTRACT: Two BirthData objects; omit time when unknown (sunrise chart, birth_time_provided=false); '00:00' is read as real midnight. All scoring is computed upstream from those payloads.
DO NOT CONFUSE WITH: asterwise_get_dashakoot — ten-point South Indian extension, not 36-point Ashtakoota. asterwise_get_porutham — Tamil ten-porutham pass/fail grid, different schema.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-compatibility/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for a single person. | |
| person2 | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_crystalCrystal LookupRead-onlyIdempotentInspect
Lookup a specific crystal by slug or name (case-insensitive). Returns full detail including dual Vedic/Western planetary assignments, all healing properties, and any safety cautions.
WORKFLOW: BEFORE: None — standalone or after asterwise_get_gemstone_recommendations. AFTER: None.
INPUT CONTRACT: name: Crystal slug or display name. Examples: 'amethyst', 'blue-sapphire', 'Cat's Eye Chrysoberyl'
DO NOT CONFUSE WITH: asterwise_get_crystals — full 54-crystal catalogue. asterwise_get_crystal_by_planet — all crystals for a Vedic planet. asterwise_get_gemstone_recommendations — natal chart-based gem recommendations (house lordship rules), different from this database.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-crystal/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Crystal slug or display name, e.g. 'amethyst', 'blue-sapphire', 'Cat's Eye Chrysoberyl'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_crystal_by_planetCrystals by PlanetRead-onlyIdempotentInspect
Returns all crystals associated with a specific Vedic planet. Results are sorted with primary Navaratna gems first, then Uparatna substitutes. Only Navaratna and Uparatna Vedic assignments are returned — crystals with no Vedic planetary correspondence are excluded.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — identify the planet needing remediation. AFTER: asterwise_get_gemstone_recommendations — for chart-specific gem safety assessment.
INPUT CONTRACT: planet: One of Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu.
DO NOT CONFUSE WITH: asterwise_get_gemstone_recommendations — natal chart house-lordship gem recommendation with contraindications; use for actual gem prescription, not just listing. asterwise_get_crystals — all 54 crystals including Western-only ones.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-crystal-by-planet/
| Name | Required | Description | Default |
|---|---|---|---|
| planet | Yes | Planet to find crystals for, e.g. 'Venus' or 'Saturn'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_crystal_recommendationsCrystal RecommendationsARead-onlyIdempotentInspect
Recommends crystals based on zodiac sign, chakra, or intention keyword. At least one filter is required. Returns crystals that match the most criteria first.
WORKFLOW: BEFORE: None — standalone for consumer apps. AFTER: asterwise_get_crystal — get full detail on any recommended crystal.
INPUT CONTRACT: At least one of: zodiac_sign, chakra, intention must be provided. zodiac_sign (optional): English zodiac sign, e.g. 'Taurus', 'Scorpio'. chakra (optional): One of Root, Sacral, Solar Plexus, Heart, Throat, Third Eye, Crown. intention (optional): Keyword string, e.g. 'protection', 'abundance', 'love'. limit (optional int, default 5, max 20): Maximum results to return.
DO NOT CONFUSE WITH: asterwise_get_crystal_by_planet — Vedic planet filter only. asterwise_get_gemstone_recommendations — natal chart house-lordship gem prescription with contraindications.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-crystal-recommendations/
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return. | |
| chakra | No | Chakra to focus on, e.g. 'heart' or 'third eye'. | |
| intention | No | Purpose for the recommendation, e.g. 'protection', 'focus', 'love'. | |
| zodiac_sign | No | Zodiac sign, e.g. 'Leo'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly and idempotent hints, so the description does not need to repeat those. It adds behavioral context by stating the sorting logic and offering a response_format parameter, which clarifies output behavior beyond the schema. The output/error contract link provides additional transparency, though no direct side-effect details are needed given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (workflow, input contract, do-not-confuse, output contract). Though somewhat lengthy, every sentence contributes useful information—no fluff. The main recommendation statement is concise, and the additional sections are organized logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides sufficient context for correct invocation: required filters, output format options, and a link to the full output/error contract. Although the actual output schema is not embedded, the description's mention of markdown/json and the contract URL mitigate the gap. It also clarifies relationships with sibling tools, making the tool's role well-defined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description enhances this by listing allowed chakra values (Root, Sacral, Solar Plexus, etc.) which are not in the schema enum, and providing concrete examples for intention (protection, abundance, love) and zodiac_sign. It also clarifies the limit default/max, aligning with schema but adding context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'Recommends' and the resource 'crystals', with specific criteria (zodiac sign, chakra, intention). The 'DO NOT CONFUSE WITH' section explicitly differentiates from sibling tools like asterwise_get_crystal_by_planet and asterwise_get_gemstone_recommendations, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the requirement 'At least one filter is required' and describes the ordering behavior ('matches the most criteria first'). The workflow mentions 'AFTER: asterwise_get_crystal' for subsequent detail retrieval, and the 'DO NOT CONFUSE WITH' lines provide clear when-to-use guidance against alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_crystal_recommendations_natalNatal Crystal RecommendationsRead-onlyIdempotentInspect
Recommends crystals from a Vedic natal chart using house lordship rules for gem selection. This is the only API that derives crystal recommendations from a computed natal chart — not from zodiac sign or chakra preference.
WORKFLOW: BEFORE: None — this tool internally computes the natal chart. No separate natal chart call required. AFTER: asterwise_get_crystal — get full detail (hardness, origins, affirmation, full caution text) on any recommended crystal by slug. AFTER: asterwise_get_remedies — broader classical remedial programme alongside gem recommendations.
INPUT CONTRACT: Standard BirthData (date, time, lat, lon, timezone, ayanamsa). Defaults to Lahiri ayanamsa. time (required): Ascendant (Lagna) is time-sensitive. Inaccurate birth time changes the Lagna → changes all house lords → changes recommendations entirely.
DO NOT CONFUSE WITH: asterwise_get_gemstone_recommendations — also a chart-based gem endpoint with the same contraindication rule, but a role-based prescription (lagna lord, Yogakaraka, 5th/9th lord, Atmakaraka) instead of crystal scoring; returns gem names not crystal database entries; does not include match_score or match_reasons. asterwise_get_crystal_recommendations — recommends crystals by zodiac sign, chakra, or intention keyword (no natal chart computation; Western metaphysical matching, not classical Jyotish). asterwise_get_crystal_by_planet — lists all crystals for a Vedic planet without house context — use this for reference, not prescription.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-crystal-recommendations-natal/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_crystalsCrystals CatalogueRead-onlyIdempotentInspect
Returns all 54 crystals in the database sorted alphabetically. Each entry includes chakra associations, elemental correspondences, Vedic and Western planetary assignments, physical/emotional/spiritual healing properties, geographic origins, affirmations, and safety cautions.
WORKFLOW: BEFORE: None — standalone catalogue. AFTER: asterwise_get_crystal_by_planet — filter by Vedic planet for remedial use.
INPUT CONTRACT: No required parameters.
DO NOT CONFUSE WITH: asterwise_get_crystal — single crystal detail by name. asterwise_get_crystal_by_planet — filter by Vedic planetary correspondence. asterwise_get_crystal_recommendations — recommendations by zodiac/chakra/intention.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-crystals/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_dashaVimshottari DashaARead-onlyIdempotentInspect
Computes Vimshottari Dasha from birth data and returns hierarchical period trees plus current Maha/Antar interpretation blocks.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — establishes chart and Moon context before interpreting Dasha lords. AFTER: asterwise_get_dasha_transits — correlates active Dasha lords with transits for the same birth data.
INPUT CONTRACT: levels (int, default 2, max 5): tree depth — 1 = Mahadasha only; 2 adds Antardasha; 3 Pratyantar; 4 Sookshma; 5 Prana (much larger payload). Response dates in periods[] use DD/MM/YYYY, not ISO. BirthData fields follow the global contract (date YYYY-MM-DD, time HH:MM). Unknown birth time: omit time (a sunrise chart is cast and birth_time_provided=false); never pass time='00:00' for unknown, which is read as midnight.
DO NOT CONFUSE WITH: asterwise_get_char_dasha — classical sign-based periods with ISO dates on periods[], not planet-based Vimshottari. asterwise_get_yogini_dasha — 36-year eight-Yogini cycle with data.periods.root[], not Vimshottari. asterwise_get_ashtottari_dasha — 108-year alternative tree with data.periods.root[] and same levels semantics as this tool.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-dasha/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| levels | No | Depth of the Vimshottari tree, 1-5: 1 = Mahadasha only, 2 adds Antardasha (default), 3 Pratyantar, 4 Sookshma, 5 Prana (much larger payload). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real behavioral context beyond that: the payload grows sharply at higher levels, response dates are DD/MM/YYYY not ISO, and unknown birth time triggers a sunrise chart with birth_time_provided=false. It does not explain pagination or error surfaces beyond pointing to docs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH, docs link) that make skimming efficient. Slightly verbose with some redundancy against the schema, but every section carries routing or contract information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description still adds the date-format caveat and payload-size warning. Combined with workflow ordering, sibling disambiguation, and the docs link for full error contracts, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so baseline is 3. The description still adds value over the schema: it restates the levels ladder compactly and discloses the response date format and the unknown-time convention that govern how results should be read, which the schema alone does not surface. Marginal gain over a rich schema keeps it at 4 rather than 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Computes Vimshottari Dasha from birth data') and explicitly names the scope of the returned artifacts (hierarchical period trees plus current Maha/Antar interpretation). The DO NOT CONFUSE WITH block distinguishes it from the three closest sibling dasha tools by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit BEFORE/AFTER workflow ordering (get_natal_chart before, get_dasha_transits after) and a dedicated DO NOT CONFUSE WITH section naming each alternative and the exact discriminator (ISO dates, sign-based, 36-year cycle). An agent can route correctly without opening any sibling schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_dashakootDashakootRead-onlyIdempotentInspect
Computes the ten-koota Dashakoot grid for two charts and converts it to a ten-point score with percentage. Also returns boolean dosha flags and supplementary diagnostics.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart for each native — context before regional scoring. AFTER: asterwise_get_papasamyam — optional malefic differential.
INPUT CONTRACT: Two BirthData objects per global contract.
DO NOT CONFUSE WITH: asterwise_get_compatibility — North Indian 36-point Ashtakoota with different breakdown keys. asterwise_get_porutham — Tamil ten-porutham passed counts, not Dashakoot floats.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-dashakoot/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for a single person. | |
| person2 | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_dasha_transitsDasha TransitsRead-onlyIdempotentInspect
Combines active Vimshottari lords with transits on one date and returns scored correlations plus transit longitudes and houses from Moon and Lagna.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — same birth data should be understood before interpreting houses and lords. AFTER: asterwise_get_gochar — optional broader transit snapshot without dasha scoring.
INPUT CONTRACT: target_date (string, optional — YYYY-MM-DD): date to analyse; defaults to today. target_time (string, optional — HH:MM, default 12:00) and target_timezone (IANA, optional — default Asia/Kolkata) set the instant on that date. All parameters are otherwise defined in the tool schema. BirthData follows the global contract. Birth time is required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass time='00:00' for unknown.
DO NOT CONFUSE WITH: asterwise_get_gochar — full nine-planet Gochar with AVK and vedha fields, without dasha–transit correlation scores. asterwise_get_transits — ingress and station lists over a chosen range, not today's dasha snapshot. asterwise_get_dasha — full Vimshottari tree without transit overlay.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-dasha-transits/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| target_date | No | Date in YYYY-MM-DD format. | |
| target_time | No | HH:MM on target_date. Defaults to 12:00. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA zone for target_date and target_time. Defaults to Asia/Kolkata. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_divisional_chartDivisional ChartARead-onlyIdempotentInspect
Computes divisional (varga) charts from BirthData; pass chart_type for one varga, or omit chart_type for all sixteen. Each planet in each varga comes with its dignity there and whether it is vargottama; with a known birth time, each chart also has its own lagna, every planet's whole-sign house from that lagna, and a houses table.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — anchor D1 before reading higher vargas. AFTER: None.
INPUT CONTRACT: chart_type enum is enforced locally. BirthData follows the global contract. Unknown birth time: omit time; lagna, houses and the houses table are then left out (birth_time_provided=false).
DO NOT CONFUSE WITH: asterwise_get_natal_chart — radix chart with houses and drishti, not the varga set. asterwise_get_chart_strength — varga-based strength scores, not placements.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-divisional-chart/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| chart_type | No | Divisional chart to return, D1 to D60. Omit to return all 16 charts. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral context beyond that: enum enforcement is local, and with an unknown birth time the lagna, houses, and houses table are omitted with birth_time_provided=false. It does not cover failure modes or rate limits, which is delegated to the docs URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded core sentence, then clearly labeled WORKFLOW / INPUT CONTRACT / DO NOT CONFUSE WITH blocks. Every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only computation tool with a full output schema, the description covers what is computed, the optional-parameter behavior, output contents, degradation without birth time, prerequisites, and sibling disambiguation. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so birth fields, ayanamsa, timezone, and the omission-for-unknown-time semantics are already documented in the schema. The description's 'omit chart_type for all sixteen' and the birth_time_provided note largely restate what the schema says, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Computes divisional (varga) charts from BirthData') and immediately names the two siblings it is not: get_natal_chart and get_chart_strength. An agent can distinguish it from all ~90 siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit WORKFLOW block recommends asterwise_get_natal_chart as the D1 anchor beforehand, states AFTER: None, and the DO NOT CONFUSE WITH section routes on the specific conditions (radix chart with houses/drishti vs. varga set; varga-based strength scores vs. placements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_doshasDoshasARead-onlyIdempotentInspect
Scores twelve fixed dosha buckets from birth data and returns presence flags, typed detail objects, optional summaries, and remedy lines per dosha.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — chart familiarity before dosha interpretation. AFTER: asterwise_get_remedies — classical remedial suggestions after dosha review.
INPUT CONTRACT: BirthData follows the global contract. Unknown birth time at midnight is accepted silently.
DO NOT CONFUSE WITH: asterwise_get_chart_strength — Shadbala/Vimshopaka power metrics, not dosha booleans. asterwise_get_compatibility — pair scoring including nadi_dosha flags, not the twelve natal dosha buckets.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-doshas/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details not covered by annotations, such as 'Unknown birth time at midnight is accepted silently,' and clarifies output types like 'presence flags, typed detail objects, optional summaries, and remedy lines.' These enrich the readOnlyHint and idempotentHint already present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH), each serving a distinct purpose. It is concise yet comprehensive, avoiding redundancy while covering essential operational aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes the input contract, workflow context, differentiation from siblings, and a link to the full output/error contract. Given the tool's moderate complexity, this provides sufficient context for correct usage without needing to restate every schema detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema already provides detailed descriptions for parameters, the description adds valuable semantics by noting that omitting birth time uses a sunrise chart and sets birth_time_provided=false, clarifying the behavior for the 'time' field. This goes beyond the schema's basic default description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Scores twelve fixed dosha buckets from birth data and returns presence flags, typed detail objects, optional summaries, and remedy lines per dosha.' It also explicitly differentiates from similar tools like asterwise_get_chart_strength and asterwise_get_compatibility, making its unique purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance with 'WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart' and 'AFTER: asterwise_get_remedies.' It also includes a 'DO NOT CONFUSE WITH' section that names alternatives and explains why they should not be chosen instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_dream_symbolDream SymbolARead-onlyIdempotentInspect
Lookup a specific dream symbol by slug or name (case-insensitive). Returns full dual-tradition interpretation including Jungian archetype, Vedic dream meaning with auspiciousness, context variants, and related symbols.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: name: Symbol slug or display name. Examples: 'snake', 'eagle', 'childhood-home', 'lotus', 'black-dog'
DO NOT CONFUSE WITH: asterwise_get_dream_symbols — full database listing with optional category filter.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-dream-symbol/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Dream symbol slug or display name, e.g. 'snake', 'eagle', 'childhood-home', 'lotus'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent, non-destructive), the description discloses case-insensitive lookup, standalone execution, and provides a link to the full output and error contract. These are behavioral details not covered by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH, full contract link). It is concise, uses short bullet-like sentences, and avoids unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return content (Jungian archetype, Vedic meaning, context variants, related symbols), the input format with examples, the output format options, and points to a full contract link. Combined with the schema and annotations, it gives the agent full context needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for both parameters. The description's INPUT CONTRACT section only repeats the name parameter details already present in the schema (e.g., examples). No additional semantic meaning is added beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Lookup a specific dream symbol'), the target resource ('by slug or name (case-insensitive)'), and the output contents ('full dual-tradition interpretation...'). It also names the sibling tool it is not to be confused with, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear 'DO NOT CONFUSE WITH' guidance to distinguish from asterwise_get_dream_symbols (full listing), and includes a WORKFLOW section indicating it is standalone with no prerequisites or follow-ups. This gives explicit when-to-use and when-not-to-use direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_dream_symbolsDream SymbolsRead-onlyIdempotentInspect
Returns dream symbols from the database with dual-tradition interpretation: Jungian/Western psychological analysis and traditional Vedic dream-symbol meaning. 500 symbols across 8 categories. Optionally filter by category.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_dream_symbol — get full detail for a specific symbol.
INPUT CONTRACT: category (optional): One of animals, nature, people, places, objects, actions, body, abstract. Omit for all 500 symbols.
DO NOT CONFUSE WITH: asterwise_get_dream_symbol — single symbol detail by name.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-dream-symbols/
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | One of the 8 categories; omit for all 500 symbols. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_expression_numberExpression NumberRead-onlyIdempotentInspect
Calculates the Expression (Destiny) number from the full name using Pythagorean letter values. Reduces each name part separately before summing (Decoz per-part method), keeping master numbers 11, 22, 33 at every step.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_soul_urge_number — complete the core trinity (Expression, Soul Urge, Personality).
INPUT CONTRACT: name — Full legal name as used at birth. Include all name parts separated by spaces. Example: 'Arjun Mehta', 'Sofia Rossi', 'James Carter' Format: string, any case (uppercase/lowercase both accepted) Constraint: at least one alphabetic character required
DO NOT CONFUSE WITH: asterwise_get_soul_urge_number — vowels only, not all letters. asterwise_get_personality_number — consonants only, not all letters. asterwise_get_numerology_profile — returns Expression plus all other core numbers, pinnacles, challenges, and lucky numbers in one call. asterwise_get_chaldean_numerology — different letter-value system (Chaldean 1–8).
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-expression-number/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_festival_calendarFestival CalendarARead-onlyIdempotentInspect
Hindu festivals, vrats, sankrantis, eclipses and periods for a year at a location. Each lunar festival is fixed by its lunar month (amanta, with Adhik months found from new moons and sankrantis), its tithi, and the part of the day the tithi must hold (sunrise, forenoon, Madhyahna, Aparahna, Pradosh, Nishita, moonrise), with the classical tie-breaks when a tithi spans two days, Bhadra rules for Holika Dahan and Raksha Bandhan, and the Smarta Ekadashi rule. Checked against Drik Panchang (New Delhi).
WORKFLOW: BEFORE: asterwise_geocode — when you only have a place name. AFTER: asterwise_get_panchanga — the day's limbs and timings for a festival date.
INPUT CONTRACT: year (1900-2100), lat, lon, timezone (IANA, default Asia/Kolkata). categories: optional list of festival, vrat, sankranti, eclipse, period; the default is ["festival"] (about 50 named festivals). Add "vrat" for every Ekadashi, Pradosh, Sankashti, Purnima and Amavasya, "period" for Adhik Maas, Pitru Paksha and Chaturmas, "eclipse" for eclipses.
DO NOT CONFUSE WITH: asterwise_get_panchanga_calendar — daily limbs for a month, not festivals. asterwise_get_muhurta — auspicious windows for an activity, not festival dates.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-festival-calendar/
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees, north positive. | |
| lon | Yes | Longitude in decimal degrees, east positive. | |
| year | Yes | Calendar year, e.g. 2026. | |
| timezone | No | IANA timezone of the location. | Asia/Kolkata |
| categories | No | Which entries to return: festival (default, about 50 named festivals), vrat (Ekadashi, Pradosh, Sankashti, Purnima, Amavasya), sankranti, eclipse, period (Adhik Maas, Pitru Paksha, Chaturmas, Navratri, Holashtak, Kharmas). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond that: how lunar festivals are fixed, tie-break and Bhadra/Smarta Ekadashi rules, and that results are checked against Drik Panchang (New Delhi), which tells the agent about the methodology and reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well front-loaded and organized into scannable sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH). The opening paragraph's dense jyotisha jargon (amanta, Madhyahna, Aparahna, Bhadra) is more than an agent needs for tool selection, but it is not wasteful padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values need no explanation. The definition supplies the year range, coordinate span, timezone default, category semantics, workflow prerequisites, and sibling routing — everything needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents year/lat/lon/timezone/categories/response_format. The description largely restates the categories enum and its default; the 'add vrat for every Ekadashi...' guidance is only marginally additive. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+scope ('Hindu festivals, vrats, sankrantis, eclipses and periods for a year at a location') and explicitly distinguishes itself from three sibling tools. An agent can route to it without inspecting any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit BEFORE/AFTER workflow (geocode before, panchanga after) and a DO NOT CONFUSE WITH block naming the two overlapping calendar/panchanga siblings with the condition that separates them. Nothing about when-to-use is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_gemstone_recommendationsGemstone RecommendationsRead-onlyIdempotentInspect
Computes Ratna-style gemstone picks and cautions from the natal chart. Returns the primary and role-based stones, secondary options, contraindications and a safety note.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — confirm chart before wearing advice. AFTER: asterwise_get_remedies — broader remedial programme if needed.
INPUT CONTRACT: BirthData follows the global contract.
DO NOT CONFUSE WITH: asterwise_get_remedies — mantras, fasting, charity rows, not a gem matrix. asterwise_get_lal_kitab_remedies — Lal Kitab actions, not classical Ratna picks.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-gemstone-recommendations/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_ghat_chakraGhat ChakraARead-onlyIdempotentInspect
Returns the four Ghatak (inauspicious) timing parameters for a native based on their Janma Rasi (natal Moon sign).
WORKFLOW: BEFORE: None — birth data computes everything needed. AFTER: asterwise_get_nakshatra_prediction — for today's personalized daily auspiciousness score.
INPUT CONTRACT: birth — BirthData (date, time, lat, lon, timezone). Moon sign is computed from birth data.
DO NOT CONFUSE WITH: asterwise_get_nakshatra_prediction — personalised daily Tarabala score, not static Ghatak parameters. asterwise_get_panchanga — daily panchanga elements, not Ghat Chakra lookup.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-ghat-chakra/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real value beyond that: it declares that all inputs derive from birth data with no sunrise fallback and states the computational dependency on the natal Moon sign. It stops short of richer behavioral detail (cost, latency, precision limits) but covers what matters for correct invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-line purpose followed by labeled blocks (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH). Every sentence carries routing or input information; nothing is padding, despite the length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no prose, and the description supplies the missing pieces: workflow placement, the input contract, disambiguation from siblings, and a docs link for the full output/error contract. Nothing needed to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents birth, response_format and every nested field (including the ayanamsa enum and the warning against guessing birth time). The description only adds that Moon sign is computed from birth data, which is derived behavior rather than new parameter meaning. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the four Ghatak (inauspicious) timing parameters, scoped to Janma Rasi. It explicitly names and contrasts the sibling tools it could be confused with, so an agent can select it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW block gives explicit BEFORE/AFTER sequencing, and the DO NOT CONFUSE WITH block names two alternatives (get_nakshatra_prediction, get_panchanga) with the exact distinguishing condition for each. Nothing about when to use this vs. those is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_gocharGocharRead-onlyIdempotentInspect
Computes Gochar against the natal Moon and Lagna and returns per-planet transit longitudes, houses, AVK scores, vedha flags, and a roll-up summary.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — anchors what "natal" means for the same birth record. AFTER: asterwise_get_dasha_transits — adds dasha-lord correlation for today.
INPUT CONTRACT: target_date (string, optional — YYYY-MM-DD): date to compute transits for; defaults to today if omitted. BirthData follows the global contract. Birth time is required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass time='00:00' for unknown.
DO NOT CONFUSE WITH: asterwise_get_transits — ingress and station tables for a chosen date window, not a single-day Gochar snapshot. asterwise_get_dasha_transits — scores how transits meet active dasha lords, not the full nine-planet Gochar row set.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-gochar/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| target_date | No | Date to compute transits for, YYYY-MM-DD (at 12:00 India time). Defaults to today in India (Asia/Kolkata). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_horaHoraARead-onlyIdempotentInspect
Builds the twenty-four planetary Horas between successive sunrises for a location date and tags each hour with ruler, quality text, and whether it is current.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_choghadiya — alternative same-day slot system.
INPUT CONTRACT: LocationInput date/coordinate rules apply locally (YYYY-MM-DD, bounded lat/lon).
DO NOT CONFUSE WITH: asterwise_get_choghadiya — sixteen Choghadiya segments, not twenty-four Horas. asterwise_get_natal_chart — natal analysis, not hourly muhurta tables.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-hora/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true and idempotentHint=true, covering the key behavioral aspects. The description adds context about the output (tags each hour with ruler, quality, and 'current' status) and references a full output/error contract link. This goes slightly beyond the annotations, though it doesn't explicitly mention side effects or permissions (which are covered by the readOnlyHint).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH, full contract link). It is concise yet comprehensive, using bullet-like separations to convey essential information without unnecessary verbosity, especially given the large number of sibling tools it must differentiate from.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a relatively simple input structure (one nested location object) and an output schema is present. The description provides enough context to understand the tool's purpose and output, and it includes a link to the full output/error contract. Given the output schema exists, the description adequately covers what an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all properties, including date format, lat/lon ranges, timezone default, and response_format enum. The description only restates the location rules ('date/coordinate rules apply locally') without adding new semantic details beyond the schema, so it does not exceed the baseline for schema-covered parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific function: 'Builds the twenty-four planetary Horas between successive sunrises for a location and tags each hour with ruler, quality text, and whether it is current.' It also explicitly differentiates from sibling tools like asterwise_get_choghadiya and asterwise_get_natal_chart, ensuring no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives. It states 'WORKFLOW: BEFORE: None — this tool is standalone' and 'DO NOT CONFUSE WITH' sections that clarify the differences from get_choghadiya and get_natal_chart, giving clear conditions for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_horoscopeMoon Sign HoroscopeARead-onlyIdempotentInspect
Fetches an AI-synthesised Moon-sign horoscope for a chosen horizon and returns structured guidance fields plus metadata about the model and period.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_natal_chart — if the user needs a personalised chart beyond sign-general copy.
INPUT CONTRACT: period is constrained to the tool schema enum (daily, weekly, monthly, yearly). moon_sign accepts Sanskrit (Tula, Vrischika, Karka, Simha, Kanya, Dhanu, Makara, Kumbha, Meena, Mesha, Vrishabha, Mithuna) or English (Libra, Scorpio, Cancer, Leo, Virgo, Sagittarius, Capricorn, Aquarius, Pisces, Aries, Taurus, Gemini); resolution is upstream. response_format selects JSON vs markdown rendering only.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — full personalised sidereal chart from birth data, not Moon-sign editorial copy. asterwise_get_gochar — nine-planet transit snapshot vs natal chart for today, not AI horoscope prose.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-horoscope/
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Horoscope period: daily, weekly, monthly or yearly. | |
| moon_sign | Yes | Vedic moon sign (rashi), e.g. 'Vrishabha' or 'Taurus'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior; the description adds that this is an AI-synthesised editorial horoscope, returns structured guidance fields plus model/period metadata, and that response_format only controls rendering between markdown and JSON. It also references a full output/error contract URL, providing meaningful behavior beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than minimal, but every section earns its place: purpose, workflow, input contract, disambiguation, and documentation link. The structure is clear and front-loaded with the core purpose before supporting details, making it efficient despite its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description appropriately focuses on selection, input constraints, disambiguation, and the contract URL for full output/error details. It covers before/after workflow and alternatives, so an agent has everything necessary to invoke the tool correctly in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is already strong, but the description adds genuine value by expanding moon_sign to include Sanskrit and English rashi names, clarifying that period is constrained to the schema enum, and specifying that response_format only selects rendering mode. This helps an agent understand valid inputs beyond the basic schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear, specific action: fetches an AI-synthesised Moon-sign horoscope for a chosen horizon, and distinguishes the resource and deliverable from sibling tools. The 'DO NOT CONFUSE WITH' section explicitly contrasts it with asterwise_get_natal_chart and asterwise_get_gochar, so an agent can select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance via WORKFLOW and DO NOT CONFUSE sections, naming the exact sibling tools and their purposes. It also notes that a personalized chart should use asterwise_get_natal_chart, giving clear exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_karmic_lessonsKarmic LessonsRead-onlyIdempotentInspect
Identifies karmic lessons by scanning all letter values in the full name and finding which digits 1–9 are absent. Each missing digit represents an area where experience is thin and development is needed in this lifetime.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_numerology_profile — see karmic lessons alongside all core numbers.
INPUT CONTRACT: name — Full legal name as used at birth. Example: 'Arjun Mehta' — scan all 9 letters for their Pythagorean digit values. Letters present: A=1, R=9, J=1, U=3, N=5, M=4, E=5, H=8, T=2, A=1 Digits present: {1,2,3,4,5,8,9} → Missing: {6,7}
DO NOT CONFUSE WITH: asterwise_get_balance_number — uses only first letters (initials), not all letters. asterwise_get_expression_number — reduces all letters to a single number; does not scan for absent digits.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-karmic-lessons/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_kp_chartKP ChartRead-onlyIdempotentInspect
Builds a KP natal chart with sub-lords on grahas and twelve cusps from BirthData using the KP ayanamsa in the response.
WORKFLOW: BEFORE: RECOMMENDED — cross-check birth record before trusting sub-lords. AFTER: asterwise_get_kp_significators — house-level significator chains.
INPUT CONTRACT: ayanamsa is accepted but ignored (always KP). Birth time is required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass time='00:00' for unknown.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — classical bundle without KP sub-lords. asterwise_get_kp_ruling_planets — rulers at the moment of judgment (now or a given time), not natal cusps.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-kp-chart/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_kp_ruling_planetsKP Ruling PlanetsRead-onlyIdempotentInspect
Computes KP ruling planets at a latitude and longitude for the current instant or a given local date and time, with no birth data. Returns the day lord, Moon and Ascendant lord chains, and a deduplicated ruling_planets list.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_kp_chart — if natal confirmation is needed afterwards.
INPUT CONTRACT: lat and lon required. Optional target_date (YYYY-MM-DD), target_time (HH:MM), target_timezone (IANA; defaults to the zone at lat/lon). With neither date nor time the server uses the current instant (KP judges ruling planets at the moment of judgment); time only = that time today; date only = 12:00 local. data.target_utc and data.target_timezone show what was used. target_date must be within 1800-01-01 to 2099-12-31. A time skipped by a daylight-saving change is read with the offset before the change (moved forward by the gap); a time that occurred twice is read as the first occurrence; data.local_time_status is 'nonexistent' / 'ambiguous' / 'ok'.
DO NOT CONFUSE WITH: asterwise_get_kp_chart — needs BirthData and returns full natal KP cusps. asterwise_get_prashna_chart — horary keyword workflow, not ruling-planet snapshot.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-kp-ruling-planets/
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees, north positive (e.g. 13.08). | |
| lon | Yes | Longitude in decimal degrees, east positive (e.g. 80.27). | |
| target_date | No | Local date of the moment to judge, YYYY-MM-DD. Without target_time, 12:00 local is used. Omit both date and time for the current instant. | |
| target_time | No | Local time of the moment to judge, HH:MM (24-hour). Without target_date, that time today. Omit both date and time for the current instant. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA time zone for target_date and target_time, e.g. 'Asia/Kolkata'. Defaults to the zone at lat/lon. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_kp_significatorsKP SignificatorsARead-onlyIdempotentInspect
Computes KP significator chains for all houses or one optional house from BirthData and returns house tables plus planet-tier reverse indexes.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_kp_chart — establish cusps before significators. AFTER: None.
INPUT CONTRACT: house_number optional int 1..12; omit for all twelve.
DO NOT CONFUSE WITH: asterwise_get_kp_chart — cusps and sub-lords, not tiered significator unions. asterwise_get_natal_chart — classical drishti matrices differ from KP significator tiers.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-kp-significators/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| house_number | No | House number 1-12. Omit to cover all twelve houses. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: an ordering dependency on asterwise_get_kp_chart, the fact that the tool reads BirthData with no sunrise fallback, and the shape of the result (house tables plus planet-tier reverse indexes). It does not discuss cost, rate limits, or failure modes, which is acceptable given the annotations and output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The one-line summary is front-loaded and the labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) make the routing information scannable rather than buried in prose. It is slightly padded by the redundant INPUT CONTRACT line and the external docs URL, but nothing is materially wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, a rich nested birth object, an output schema, and safety annotations, the description covers the remaining gaps an agent needs: when to run it relative to the KP chart tool, and which sibling tools it is not. The only omission is domain context on what a 'significator tier' means, which is reasonable to defer to the linked documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (birth fields, ayanamsa, timezone, house_number, response_format) is documented in the schema itself, including the important 'never pass 00:00 for unknown' warning. The description's INPUT CONTRACT ('house_number optional int 1..12; omit for all twelve') only restates what the schema already says, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource ('Computes KP significator chains') and names the scope ('all houses or one optional house from BirthData'), plus what it returns ('house tables plus planet-tier reverse indexes'). The DO NOT CONFUSE WITH section explicitly separates it from asterwise_get_kp_chart and asterwise_get_natal_chart, so an agent can identify it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW block gives an explicit precondition ('BEFORE: RECOMMENDED — asterwise_get_kp_chart — establish cusps before significators') and states there is no follow-up tool. The DO NOT CONFUSE WITH section names two alternatives and explains the discriminating dimension (cusps/sub-lords vs. tiered significator unions; drishti matrices vs. KP tiers).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_lal_kitab_chartLal Kitab ChartARead-onlyIdempotentInspect
Produces a Lal Kitab chart from BirthData following the 1952 Lal Kitab: houses counted from the Vedic lagna, the lagna house read as house 1 (Aries). Returns planets with pakka ghar, uchcha/neecha, fixed or doubtful effect and malefic reasons, the twelve houses, and the nine Lal Kitab debts (rin).
WORKFLOW: BEFORE: None — standalone for Lal Kitab queries. AFTER: asterwise_get_lal_kitab_remedies — remedies for the planets that need them.
INPUT CONTRACT: BirthData global contract. ayanamsa: lahiri (default), raman or kp is used as sent; tropical is refused (INVALID_PARAMS) because Lal Kitab starts from the sidereal Indian chart. Unknown birth time: omit time (a sunrise chart is cast and birth_time_provided=false); houses are then approximate.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — classical radix, not Lal Kitab rules. asterwise_get_lal_kitab_remedies — remedies only, for the planets that need them.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-lal-kitab-chart/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a read-only, idempotent, non-destructive operation, so the bar is lower; the description goes well beyond them by disclosing that tropical ayanamsa is refused with INVALID_PARAMS, that omitting time yields a sunrise chart with birth_time_provided=false and approximate houses, and that the output enumerates specific derived structures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence followed by clearly labeled WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections; the structure makes scanning fast. It is somewhat long, and the docs URL/last line is minor overhead, but each block carries actionable content rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the description summarizes the returned structures rather than restating them; combined with the ayanamsa constraint, unknown-time fallback, error behavior, and sibling routing, nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics the schema lacks: it clarifies that ayanamsa options are used 'as sent' except tropical, which the schema lists as a valid enum value but the tool rejects, and it explains the unknown-birth-time behavior of the time parameter. That is meaningful guidance beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Produces a Lal Kitab chart from BirthData') and grounds it in a named system ('following the 1952 Lal Kitab: houses counted from the Vedic lagna'). It also enumerates what the chart contains (pakka ghar, uchcha/neecha, twelve houses, nine rin) and explicitly separates itself from asterwise_get_natal_chart, so an agent can pick it correctly without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit BEFORE/AFTER workflow chaining (standalone, then asterwise_get_lal_kitab_remedies for planets needing remedies) and a 'DO NOT CONFUSE WITH' block naming the two nearest siblings with the condition that distinguishes them. Nothing about when-to-use is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_lal_kitab_remediesLal Kitab RemediesRead-onlyIdempotentInspect
Lists Lal Kitab remedies (from the 1952 Lal Kitab) for the planets that need them, plus remedies for any indicated debts (rin).
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_lal_kitab_chart — see the chart and malefic reasons first. AFTER: None.
INPUT CONTRACT: BirthData only. ayanamsa: lahiri (default), raman or kp is used as sent; tropical is refused (INVALID_PARAMS) because Lal Kitab starts from the sidereal Indian chart. Unknown birth time: omit time (a sunrise chart is cast and birth_time_provided=false); houses, and so the remedies, are then approximate.
DO NOT CONFUSE WITH: asterwise_get_remedies — mantra/gem prescriptions, not Lal Kitab remedies. asterwise_get_gemstone_recommendations — classical Ratna focus, not household remedies.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-lal-kitab-remedies/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_lo_shu_gridLo Shu GridARead-onlyIdempotentInspect
Derives a Lo Shu three-by-three frequency grid from birth-date digits and annotates planes, missing or repeated digits, and per-digit traits.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: date string only; validated upstream.
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — letter-based Western numbers, not digit-frequency Lo Shu. asterwise_get_name_correction — spelling harmonics, not birth-date grids.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-lo-shu-grid/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), lowering the bar. The description adds context beyond annotations by declaring the tool standalone (no workflow dependencies) and noting the input is validated upstream. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then uses clearly labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) that each earn their place. Slightly long but efficiently organized with zero filler; the docs link consolidates the full contract rather than inlining it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out. The description covers the input contract, workflow dependencies, sibling disambiguation, and points to a docs URL for the full output/error contract. For a read-only two-parameter tool this is nearly complete, with only the error behavior deferred to the external docs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — both date (YYYY-MM-DD format) and response_format (markdown/json enum with default) are documented in the schema. The description's INPUT CONTRACT note ('date string only') reinforces but does not add semantic detail beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (derives), resource (Lo Shu three-by-three frequency grid), input source (birth-date digits), and the analytical outputs (planes, missing/repeated digits, per-digit traits). It also explicitly names two sibling tools it should not be confused with, which sets it apart from the dozens of numerological siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'DO NOT CONFUSE WITH' section explicitly routes the agent to asterwise_get_numerology_profile for letter-based Western numbers and asterwise_get_name_correction for spelling harmonics. The INPUT CONTRACT states the sole accepted input (date string) and that validation is handled upstream, giving clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_lucky_numbersLucky NumbersRead-onlyIdempotentInspect
Fetches condensed lucky-number guidance for a name and birth date including primary and secondary picks, power number, interpretation, and a date_specific flag.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_numerology_profile — if deeper context is required.
INPUT CONTRACT: name and date forwarded upstream without local checks.
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — full multi-section profile, not lucky-number-only payload. asterwise_get_number_meaning — dictionary entry for one integer, not personalised lucky sets.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-lucky-numbers/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_maturity_numberMaturity NumberRead-onlyIdempotentInspect
Calculates the Maturity number as the sum of Life Path and Expression numbers, reduced to a single digit or master number. Represents the underlying wish or true desire that becomes conscious around age 35 and fully emerges by midlife.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — confirm Life Path and Expression before interpreting their sum. AFTER: None.
INPUT CONTRACT: name — Full legal name as used at birth. Example: 'Arjun Mehta' date — Birth date in YYYY-MM-DD format. Example: '1985-11-12'
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — returns maturity_number as part of the full profile. asterwise_get_personal_cycles — temporal cycles that change annually, not a fixed number.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-maturity-number/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_muhurtaMuhurtaARead-onlyIdempotentInspect
Finds auspicious time windows for an activity between two dates (up to a year) at a location, with exact ISO start and end times. Activities: marriage, griha_pravesh, business, travel, naming_ceremony, vehicle_purchase, property_purchase, mundan, annaprashan, upanayana, vidyarambha. Applies each activity's nakshatra, tithi and weekday rules, seasonal bans (Chaturmas, Adhik Maas, Pitru Paksha, Kharmas, Holashtak, Guru/Shukra asta, Panchaka), and avoids Rahu Kaal, Yamaganda, Gulika, Durmuhurta, Varjyam and Bhadra; scores 0-100 with reasons, and excluded_minutes explains an empty result.
WORKFLOW: BEFORE: asterwise_geocode — when you only have a place name. AFTER: asterwise_get_panchanga — full timings for a chosen window's day.
INPUT CONTRACT: request.activity (enum above), request.from_date and request.to_date (YYYY-MM-DD, at most 366 days apart), request.lat, request.lon, request.timezone (IANA). Optional: top_n (1-50, default 5), max_windows_per_day (default 1, so results spread across dates), participants (up to two, each with nakshatra and optional moon_rashi, or birth_date, birth_time, birth_lat, birth_lon, birth_timezone).
DO NOT CONFUSE WITH: asterwise_get_choghadiya — the sixteen slots of one day, not a ranked search. asterwise_get_panchanga — one day's limbs and timings.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-muhurta/
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | Muhurta search parameters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. Beyond that, the description discloses the actual computation behavior: which nakshatra, tithi, weekday, seasonal-ban, and inauspicious-period rules are applied, that results are scored 0-100 with reasons, and that excluded_minutes explains an empty result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being detailed, the description is well structured with a front-loaded purpose sentence followed by WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE sections. For a tool with many nested parameters and close siblings, every section adds useful routing or contract information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so the description need not document return values. It still covers scope, activity rules, required and optional inputs, workflow dependencies, sibling distinctions, scoring behavior, and empty-result behavior, making it complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds organizational clarity by separating required fields from optional ones and summarizing the participant alternatives, but it also omits some optional schema fields such as ayanamsa and response_format, and much of its input contract repeats schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a precise verb, resource, scope, and output format: it finds auspicious time windows for a named activity between two dates at a location, returning ISO start/end times. It explicitly lists supported activities and distinguishes itself from the closest siblings with a DO NOT CONFUSE section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section states when to call asterwise_geocode before this tool and asterwise_get_panchanga after it. The DO NOT CONFUSE section names the two most likely alternative tools and explains their different purposes, leaving no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_nakshatra_detailsNakshatra DetailsRead-onlyIdempotentInspect
Looks up static metadata for one of twenty-seven nakshatras by name and returns interpretive, professional, activity, and body-map reference data.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: None.
INPUT CONTRACT: nakshatra_name is sent as given; the API ignores case, spaces, hyphens and common romanisation differences ('uttarashadha', 'Aswini', 'Moola' and 'Krithika' all match). An unknown name returns 404 with the 27 valid names and, for a near miss, a suggestion.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — computes birth nakshatra from time/place, not encyclopaedic copy. asterwise_get_dasha — uses Moon nakshatra for timing, not this lookup table.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-nakshatra-details/
| Name | Required | Description | Default |
|---|---|---|---|
| nakshatra_name | Yes | Nakshatra name, e.g. 'Rohini' or 'Uttara Phalguni'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_nakshatra_predictionNakshatra PredictionRead-onlyInspect
Personal daily prediction from Tarabala and Chandrabala for the day at the birth place (sunrise to next sunrise).
WORKFLOW: BEFORE: None — birth data computes everything needed. AFTER: asterwise_get_panchanga — the day's full panchanga; asterwise_get_muhurta — Tarabala-aware windows for an activity.
INPUT CONTRACT: birth: BirthData (date, time, lat, lon, timezone). Unknown birth time: omit time; never pass '00:00'. target_date (optional, YYYY-MM-DD): defaults to today at the birth place.
DO NOT CONFUSE WITH: asterwise_get_nakshatra_details — static nakshatra reference, not a personal prediction. asterwise_get_panchanga — daily panchanga (tithi, yoga, karana), not Tarabala.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-nakshatra-prediction/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| target_date | No | Date of the prediction, YYYY-MM-DD. Defaults to today in the birth time zone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_name_correctionName CorrectionRead-onlyIdempotentInspect
Scores the current spelling of a personal name against the birth-date Life Path and suggests alternate spellings with harmony metrics. Names the best alternative when one scores higher.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — baseline numbers before renaming advice. AFTER: None.
INPUT CONTRACT: name and date strings only; upstream validates.
DO NOT CONFUSE WITH: asterwise_get_business_name_analysis — entity Expression scan, not personal spelling alternatives. asterwise_get_chaldean_numerology — Chaldean compounds, not harmony-scored spelling list.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-name-correction/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_natal_chartNatal ChartARead-onlyIdempotentInspect
Computes the full sidereal natal chart from BirthData and returns planet rows, houses, aspects, arudhas, upapada, bhava cusps, and avakhada metadata.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: RECOMMENDED — asterwise_get_yogas — layer classical combinations after the base chart exists.
INPUT CONTRACT: BirthData enforces date YYYY-MM-DD, time HH:MM, lat -90..90, lon -180..180, ayanamsa enum locally (Pydantic). Unknown birth time: omit time (a sunrise chart is cast and birth_time_provided=false); never pass time='00:00' for unknown, which is read as midnight. Lagna-sensitive results (houses, lagna, arudhas) are then approximate.
DO NOT CONFUSE WITH: asterwise_get_divisional_chart — sixteen vargas only, not the primary radix bundle returned here.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-natal-chart/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| include_interpretation | No | Include a written interpretation alongside the chart data. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, it discloses the unknown-birth-time behavior (sunrise chart cast, birth_time_provided=false) and the downstream consequence that lagna-sensitive results become approximate. That is genuine behavioral context an agent needs in order to interpret output, not a restatement of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded and well-sectioned (purpose, workflow, input contract, disambiguation), with no filler sentences. It is slightly verbose because the input contract partly restates schema-level validation rules, but each section still earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only chart tool with a rich nested schema and an output schema, the description covers the remaining needs: workflow position, sibling disambiguation, edge-case input handling, and a documentation link for the full output/error contract. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents formats, bounds, and the ayanamsa enum, making 3 the baseline. The description adds meaning by warning that time='00:00' is read as midnight and by linking the omitted-time case to approximation of lagna-sensitive values, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Computes) and resource (full sidereal natal chart) plus an explicit enumeration of the returned artifacts (planet rows, houses, aspects, arudhas, upapada, bhava cusps, avakhada). It also names the sibling it should not be confused with, so an agent can separate it from the divisional-chart tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit BEFORE/AFTER workflow (standalone, then optionally layer yogas) plus an explicit DO NOT CONFUSE WITH routing to asterwise_get_divisional_chart. This covers when to use it, what precedes/follows, and the alternative, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_number_meaningNumber MeaningRead-onlyIdempotentInspect
Returns dictionary-style numerology copy for a single integer, including interpretation, keywords, and stubbed extended fields.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: number must pass local guard: one of 1-9, 11, 22 or 33; any other value raises MCP INVALID_PARAMS before the HTTP call.
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — computes personal numbers from name and date, not a static dictionary row. asterwise_get_lucky_numbers — personalised lucky list, not reference meanings.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-number-meaning/
| Name | Required | Description | Default |
|---|---|---|---|
| number | Yes | Number to interpret: 1-9, or a master number 11, 22 or 33. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_numerology_compatibilityNumerology CompatibilityRead-onlyIdempotentInspect
Compares two people on their Pythagorean Life Path numbers, worked out from their birth dates. Returns a score, tier label, narrative, strengths, challenges, and advice.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile per person — sanity-check Life Paths before comparing. AFTER: None.
INPUT CONTRACT: Four strings (two names, two dates) are passed through without local guards. The API requires both names, but they do not change the score: only the birth dates do.
DO NOT CONFUSE WITH: asterwise_get_compatibility — sidereal koota scoring, not numerology integers. asterwise_get_numerology_profile — single-person profile, not dyad scoring.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-numerology-compatibility/
| Name | Required | Description | Default |
|---|---|---|---|
| person1_date | Yes | First person's date of birth, YYYY-MM-DD. | |
| person1_name | Yes | First person's full name. The API requires it, but it does not change the score: compatibility compares the two Life Path numbers from the birth dates. | |
| person2_date | Yes | Second person's date of birth, YYYY-MM-DD. | |
| person2_name | Yes | Second person's full name. The API requires it, but it does not change the score: compatibility compares the two Life Path numbers from the birth dates. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_numerology_profileNumerology ProfileRead-onlyIdempotentInspect
Builds a Pythagorean numerology profile from a legal name and birth date and returns core numbers, cycles, lucky digits, and summary copy.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_personal_year — fills Personal Year when needed.
INPUT CONTRACT: name and date strings are forwarded without extra local validation; malformed payloads fail upstream.
DO NOT CONFUSE WITH: asterwise_get_chaldean_numerology — Chaldean letter values and compound structure, not Pythagorean cores. asterwise_get_lucky_numbers — lightweight lucky list without the full profile payload.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-numerology-profile/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_panchangaPanchangaRead-onlyIdempotentInspect
Panchanga for one date at a location: the limbs at sunrise plus every tithi, nakshatra, yoga and karana of the panchanga day (sunrise to next sunrise). Each comes with ISO start and end times and kshaya/vriddhi flags. Also returns sunrise, sunset, moonrise and moonset; Sun and Moon rashi; lunar month (amanta and purnimanta, with Adhik months); Vikram, Shaka and Gujarati samvat; ritu and ayana; and the day's timings (Rahu Kaal, Gulika, Yamaganda, Abhijit, Brahma Muhurta, Durmuhurta, Varjyam, Amrit Kaal, Bhadra with residence, Panchaka, Pradosh, Nishita).
WORKFLOW: BEFORE: asterwise_geocode — when you only have a place name. AFTER: asterwise_get_muhurta — to find auspicious windows across a date range; asterwise_get_festival_calendar — for the festivals and vrats of the year.
INPUT CONTRACT: location.date is YYYY-MM-DD; location.lat, location.lon and location.timezone (IANA) give the place. Dates 1800-2099.
DO NOT CONFUSE WITH: asterwise_get_yogas — natal chart yogas, not the Panchanga Sun–Moon yoga. asterwise_get_panchanga_calendar — one row per day for a whole month. asterwise_get_tamil_panchanga — Tamil month and Rahu Kalam/Yamagandam/Kuligai only.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-panchanga/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_panchanga_calendarPanchanga CalendarRead-onlyIdempotentInspect
Panchanga for every day of a month at a location, one entry per day. Each day has its sunrise tithi, vara, nakshatra, yoga, karana and Rahu Kaal, plus sunrise, sunset, moonrise, moonset, paksha, lunar month (amanta and purnimanta, with Adhik months), Bhadra windows, and every tithi, nakshatra, yoga and karana active that day with ISO start and end times.
WORKFLOW: BEFORE: asterwise_geocode — when you only have a place name. AFTER: asterwise_get_panchanga — full timings for one chosen day.
INPUT CONTRACT: calendar.year 1900-2100, calendar.month 1-12, calendar.lat, calendar.lon, calendar.timezone (IANA; default Asia/Kolkata — set it for places outside India).
DO NOT CONFUSE WITH: asterwise_get_panchanga — one day with all timings. asterwise_get_festival_calendar — festivals and vrats rather than daily limbs.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-panchanga-calendar/
| Name | Required | Description | Default |
|---|---|---|---|
| calendar | Yes | Monthly Panchanga calendar parameters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_papasamyamPapasamyamARead-onlyIdempotentInspect
Measures malefic stress from Lagna, Moon, and Venus references for each partner, compares totals, and labels compatibility level against a threshold.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_compatibility — establish baseline match quality. AFTER: None.
INPUT CONTRACT: Two BirthData objects per global contract.
DO NOT CONFUSE WITH: asterwise_get_doshas — twelve natal dosha buckets for one chart, not pairwise malefic balance. asterwise_get_compatibility — Guna Milan totals and vetoes, not Papa Samyam scoring.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-papasamyam/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for a single person. | |
| person2 | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds meaningful behavioral detail beyond that: it compares two charts, uses three reference points, and produces a threshold-based compatibility label, plus it points to a full output/error contract URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then organized into short labeled sections for workflow, input contract, disambiguation, and documentation. Every section earns its place and there is no redundant prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex Vedic compatibility tool, the description covers the core calculation, recommended sequencing, exclusions from two similar tools, the two-person input contract, and a link to the full output and error contract. The rich input schema and output schema reduce the need for inline return value documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested BirthData fields are already fully documented with formats, defaults, and examples. The description only restates 'Two BirthData objects per global contract,' which does not add significant meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific computation—'Measures malefic stress from Lagna, Moon, and Venus references for each partner, compares totals, and labels compatibility level against a threshold'—with a clear verb, resource, and outcome. It also names the sibling tools it must not be confused with, making differentiation immediate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section explicitly recommends asterwise_get_compatibility as a BEFORE step, and the 'DO NOT CONFUSE WITH' section names asterwise_get_doshas and asterwise_get_compatibility with precise scoping reasons. This gives the agent clear when-to-use and when-not-to-use guidance relative to the closest siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_personal_cyclesPersonal CyclesRead-onlyIdempotentInspect
Returns the Personal Year, Personal Month, and Personal Day numbers for a given birth date and optional target date. All three cycle numbers are derived from the birth month, birth day, and the target calendar date.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_numerology_profile — see personal cycles alongside core numbers.
INPUT CONTRACT: date — Birth date in YYYY-MM-DD format. Example: '1985-11-12' year (optional int) — Target year. Defaults to current calendar year. Example: 2026 month (optional int 1–12) — Target month. Defaults to current month. Example: 5 day (optional int 1–31) — Target day. Personal Day is only returned when day is provided. Defaults to null (Personal Day omitted). Example: 1
DO NOT CONFUSE WITH: asterwise_get_personal_year — returns Personal Year only, no month or day breakdown. asterwise_get_numerology_profile — core name numbers; personal_year field is null there.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-personal-cycles/
| Name | Required | Description | Default |
|---|---|---|---|
| day | No | Target day of the month 1-31. Personal Day is returned only when day is given; omit it to get Personal Year and Personal Month only. | |
| date | Yes | Date in YYYY-MM-DD format. | |
| year | No | Four-digit target year, e.g. 2026. Defaults to the current year (UTC). | |
| month | No | Target month 1-12. Defaults to the current month (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_personality_numberPersonality NumberRead-onlyIdempotentInspect
Calculates the Personality number from consonants in the full name. All non-vowels (BCDFGHJKLMNPQRSTVWXYZ) contribute — Y is always a consonant. Reduces each name part separately, preserving master numbers 11, 22, 33.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_numerology_profile — see all five core numbers together.
INPUT CONTRACT: name — Full legal name as used at birth. Example: 'Arjun Mehta', 'Sofia Rossi' Y is always a consonant — not treated as a vowel.
DO NOT CONFUSE WITH: asterwise_get_expression_number — all letters (Expression = Soul Urge + Personality). asterwise_get_soul_urge_number — vowels only.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-personality-number/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_personal_yearPersonal YearRead-onlyIdempotentInspect
Looks up the Personal Year theme for the current calendar year from a birth date (its month and day).
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_numerology_profile — see other core numbers first. AFTER: None.
INPUT CONTRACT: Only the birth date is sent; name is optional and not used. The active calendar year is chosen upstream automatically.
DO NOT CONFUSE WITH: asterwise_get_numerology_profile — personal_year field there is null; this endpoint supplies the annual theme. asterwise_get_varshaphal — Vedic solar return, not Pythagorean Personal Year.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-personal-year/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format. | |
| name | No | Not used: the personal year depends only on the birth date. Omit it; it is accepted only so older calls keep working. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_pitra_doshaPitra DoshaARead-onlyInspect
Detects and analyses Pitru Dosha (Pitru Shapa — Ancestral Curse) using all five classical Pitru Dosha combinations.
WORKFLOW: BEFORE: None — birth data computes everything needed. AFTER: asterwise_get_puja_suggestions — recommend remedial pujas for Sun/Mars.
INPUT CONTRACT: birth — BirthData (date, time, lat, lon, timezone).
DO NOT CONFUSE WITH: asterwise_get_doshas — returns pitru_dosha as one of twelve doshas with less detail. Use this tool when dedicated Pitru Dosha analysis is needed.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-pitra-dosha/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real value beyond that: it discloses the analysis basis (all five classical combinations), the absence of a prerequisite step, and the downstream remediation path. It stops short of describing output shape or the odd idempotentHint=false, but an output schema exists to cover returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose, then labeled blocks (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) with no filler sentences. The docs link is a single trailing reference rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description needn't explain returns; it still covers purpose, prerequisites, follow-up routing, sibling disambiguation, and the birth-time requirement. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every field including the 'no sunrise fallback' warning and the ayanamsa enum. The INPUT CONTRACT line only restates the top-level birth object (date, time, lat, lon) and omits ayanamsa, timezone, person_name, and response_format, adding nothing the schema doesn't already say. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Detects and analyses Pitru Dosha') and immediately scopes it ('using all five classical Pitru Dosha combinations'). The DO NOT CONFUSE WITH clause explicitly separates it from asterwise_get_doshas, so an agent can pick correctly without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit WHEN/WHEN-NOT: no prerequisite step ('BEFORE: None'), a named follow-up tool (asterwise_get_puja_suggestions), and a direct alternative with the condition that selects this tool over it ('use this tool when dedicated Pitru Dosha analysis is needed').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_planet_naturePlanet NatureARead-onlyIdempotentInspect
Returns classical graha (planet) properties for all nine planets or a single planet per classical Vedic tradition.
WORKFLOW: BEFORE: None — standalone reference. AFTER: asterwise_get_puja_suggestions — propitiation for a specific graha.
INPUT CONTRACT: planet (optional): One of Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu. Omit to get all nine planets.
DO NOT CONFUSE WITH: asterwise_get_puja_suggestions — ritual propitiation per planet, not properties. asterwise_get_rudraksha — bead recommendations per planet, not natal properties.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-planet-nature/
| Name | Required | Description | Default |
|---|---|---|---|
| planet | No | Planet name in English, e.g. 'Jupiter', 'Saturn', 'Rahu'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: it is a standalone reference tool, follows classical Vedic tradition, and can return either all planets or one planet; it also links to the full output and error contract. It adds value beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into short, labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE) with the core purpose front-loaded in the first sentence. Every section earns its place by aiding tool selection or invocation, and the formatting makes scanning easy despite the large sibling list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only reference tool with two optional parameters and an output schema, the description is complete: it states purpose, input contract, workflow context, sibling disambiguation, and points to the full output/error contract via URL. Nothing an agent needs to select or invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds meaning for the 'planet' parameter by enumerating all nine allowed values and explicitly stating that omitting it returns all planets. The 'response_format' parameter is already well-explained by the schema enum, so the description does not need to repeat it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and resource ('classical graha (planet) properties'), and clearly scopes the operation to 'all nine planets or a single planet'. The 'DO NOT CONFUSE WITH' section explicitly distinguishes it from puja suggestions and rudraksha recommendations, making sibling differentiation strong.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section states there is no prerequisite ('BEFORE: None') and names the natural follow-up tool ('AFTER: asterwise_get_puja_suggestions'). The 'DO NOT CONFUSE WITH' block explicitly names alternatives and why they are different, giving clear when-to-use versus when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_poruthamPoruthamRead-onlyIdempotentInspect
Runs the Kerala ten-porutham checklist for two charts and counts passes out of ten. Also returns Rajju and Vedha condition booleans and per-porutham evidence objects.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart per native. AFTER: asterwise_get_thirumana_porutham — extended twelve-koota read if needed.
INPUT CONTRACT: Two BirthData objects per global contract.
DO NOT CONFUSE WITH: asterwise_get_thirumana_porutham — twelve poruthams including Nadi and Varna, not ten. asterwise_get_dashakoot — South Indian float scoring, not Tamil pass grid.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-porutham/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for a single person. | |
| person2 | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_prashna_chartPrashna ChartRead-onlyIdempotentInspect
Casts a Prashna chart for the query instant from the supplied date, time, place and a single-topic keyword. Returns houses, Moon diagnostics, a verdict, and cusps.
WORKFLOW: BEFORE: None — standalone for horary. AFTER: None.
INPUT CONTRACT: question must be exactly one of: self, wealth, siblings, property, children, health, marriage, death, travel, career, gains, loss. Full sentences are not validated locally and are rejected upstream → MCP INTERNAL_ERROR at the tool layer. PrashnaInput enforces date/time/lat/lon/ayanamsa patterns locally.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — requires birth data, not query-moment prashna. asterwise_get_kp_chart — natal KP from birth time, not horary keyword mapping.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-prashna-chart/
| Name | Required | Description | Default |
|---|---|---|---|
| prashna | Yes | Prashna (horary) query parameters. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_puja_suggestionsPuja SuggestionsARead-onlyIdempotentInspect
Returns puja (ritual worship) recommendations for planetary propitiation per graha.
WORKFLOW: BEFORE: asterwise_get_natal_chart — identify afflicted planets before recommending pujas. AFTER: asterwise_get_rudraksha — complementary bead-based remedy.
INPUT CONTRACT: planet (optional): One of Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu. Omit to get all nine planets.
DO NOT CONFUSE WITH: asterwise_get_remedies — personalised remedies from natal chart analysis. asterwise_get_rudraksha — bead recommendations, not puja rituals.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-puja-suggestions/
| Name | Required | Description | Default |
|---|---|---|---|
| planet | No | Planet name in English, e.g. 'Jupiter', 'Saturn', 'Rahu'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, and the description adds useful behavioral context such as omitting planet returns all nine ggrahas and positioning pujas as complementary to rudraksha. The link to the full output/error contract handles the remaining behavioral disclosure without cluttering the text.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a crisp purpose sentence and uses labeled short sections such as WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE, so an agent can scan quickly. Every section carries distinct information and there is no filler or repetition of schema/annotation values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with an output schema and safety annotations, the description covers workflow context, parameter semantics, sibling disambiguation, and points to the full contract. An agent choosing between this and any of the many siblings has enough context to route correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description still adds a complete enumeration of the nine allowed planet values plus the omit-for-all behavior, which the schema only hints at with examples. The response_format parameter is already fully described in the schema, so no further prose is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: 'returns puja (ritual worship) recommendations for planetary propitiation per ggraha'. The 'DO NOT CONFUSE' section explicitly separates it from asterwise_get_remedies and asterwise_get_rudraksha, making the purpose unambiguous even among many siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
WORKFLOW provides explicit before/after tool relationships: natal chart first, rudraksha after, and the DO NOT CONFUSE section names the closest alternatives. The INPUT CONTRACT also tells the agent when to omit planet versus supply a specific ggraha.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_rahu_kaalRahu KaalARead-onlyIdempotentInspect
Computes Rahu Kaal, Gulika Kaal, and Yamaganda Kaal intervals from diurnal length at a location and marks whether Rahu Kaal is active now in local time.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_choghadiya — broader auspicious/inauspicious grid for the day.
INPUT CONTRACT: LocationInput validates date pattern and coordinates locally.
DO NOT CONFUSE WITH: asterwise_get_choghadiya — full day/night slot tables, not only the three kaal bands. asterwise_get_panchanga — Panchanga limbs, not kaal timers.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-rahu-kaal/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds that it computes and marks based on diurnal length and local time, which is transparent and consistent. No side effects or hidden actions are implied, and with annotations present, this level of disclosure is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The main description is one concise sentence that front-loads the core purpose. The additional WORKFLOW and INPUT CONTRACT sections are structured and mostly non-redundant, though the input contract partially repeats schema information. Overall, it is well-organized and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an astrological tool with multiple intervals and disambiguation needs, the description covers the essential information: what it computes, how it uses location and time, and how it differs from closely related tools. It is complete enough for an agent to decide when and how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for all parameters (100% coverage), so baseline is 3. The description adds context by mentioning 'diurnal length' (implying lat/lon usage) and 'local time' (implying timezone importance), which helps an agent understand parameter relevance beyond the schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the exact function: computing Rahu Kaal, Gulika Kaal, and Yamaganda Kaal intervals from diurnal length and marking active status. It explicitly names the three intervals and the 'active now' feature, distinguishing it from the sibling choghadiya tool which covers full day/night slot tables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'DO NOT CONFUSE WITH' section explicitly contrasts this tool with asterwise_get_choghadiya and asterwise_get_panchanga, providing clear conditions for when this tool should be used (for the three kaal bands specifically) versus alternatives. This gives direct guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_reference_chartsReference ChartsARead-onlyIdempotentInspect
Published test charts with reference values from an independent source, so anyone can check the maths. They cover the 25 edge cases of the verification harness (clock changes, southern hemisphere, polar night and day, the date line, 45-minute zones, historical offsets, leap day, range limits), a sample of random charts, a Moon-on-a-nakshatra-boundary case and an unknown-birth-time case.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_natal_chart — send an input and compare.
INPUT CONTRACT: No inputs beyond response_format.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — computes a chart; this lists charts to check it against.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-reference-charts/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine context beyond that: the charts come from an independent source, are fixed rather than computed, and the harness edge cases they exercise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose and uses labelled WORKFLOW / INPUT CONTRACT / DO NOT CONFUSE WITH sections that are easy to scan. The long parenthetical list of edge cases is slightly verbose, though it does inform what the returned data contains.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, zero-required-input listing tool with a full output schema and rich annotations, the description covers everything an agent needs: purpose, placement in the workflow, the sibling to compare against, and a link to the full output/error contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (response_format) with 100% schema description coverage, so the schema already documents it fully. The 'INPUT CONTRACT: No inputs beyond response_format' line is consistent but adds no meaning beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — published test charts with reference values — and enumerates exactly what they cover. The 'DO NOT CONFUSE WITH' section explicitly separates it from asterwise_get_natal_chart, so an agent can distinguish it without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit workflow: standalone with no prerequisites, then a follow-up step of sending an input to asterwise_get_natal_chart to compare. Names the alternative and the condition ('this lists charts to check it against'), leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_remediesRemediesRead-onlyIdempotentInspect
Derives classical remedial prescriptions from planetary weakness, dusthana lordship or placement, and combustion. Returns mantra, lifestyle, charity, and dignity tables.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — chart context before choosing remedies. AFTER: asterwise_get_gemstone_recommendations — optional focused gem briefing.
INPUT CONTRACT: BirthData follows the global contract.
DO NOT CONFUSE WITH: asterwise_get_lal_kitab_remedies — household Lal Kitab totkas, not mantra/gem classical rows. asterwise_get_gemstone_recommendations — gemstone roles and contraindications only, not full lifestyle remedies.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-remedies/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_rudrakshaRudrakshaARead-onlyIdempotentInspect
Returns Rudraksha bead recommendations per planet.
WORKFLOW: BEFORE: asterwise_get_natal_chart — identify planets needing support. AFTER: None.
INPUT CONTRACT: planet (optional): One of Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu. Omit to get all nine planets.
DO NOT CONFUSE WITH: asterwise_get_gemstone_recommendations — Ratna-style gemstones from natal chart. asterwise_get_puja_suggestions — ritual worship, not bead recommendations.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-rudraksha/
| Name | Required | Description | Default |
|---|---|---|---|
| planet | No | Planet name in English, e.g. 'Jupiter', 'Saturn', 'Rahu'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description need not repeat those. It adds context by specifying the workflow dependency, the behavior when planet is omitted ('Omit to get all nine planets'), and points to a full output/error contract. This exceeds the annotation baseline without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured and front-loaded with a one-sentence purpose. The WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections are scannable and each adds distinct value. There is no filler or redundant restating of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only idempotent annotations, optional parameters, and available output schema, the description is complete enough for an agent to invoke the tool correctly. It covers prerequisites, parameter values, sibling disambiguation, and points to the full output/error contract. No critical contextual gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description goes further by enumerating the exact allowed planet values (Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn, Rahu, Ketu) and explaining the omission behavior, which the schema does not fully specify. This adds meaningful guidance beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns Rudraksha bead recommendations per planet.' It clearly scopes the tool to per-planet bead recommendations and explicitly contrasts it with gemstone and puja tools in the 'DO NOT CONFUSE WITH' section, making sibling differentiation strong.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section explicitly names the prerequisite tool (asterwise_get_natal_chart) and explains why it should be called first: to identify planets needing support. It also names two similar-sounding tools and clarifies why they are not appropriate, giving the agent explicit selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_soul_urge_numberSoul Urge NumberRead-onlyIdempotentInspect
Calculates the Soul Urge (Heart's Desire) number from vowels in the full name. Only A, E, I, O, U are treated as vowels — Y is always a consonant in this system. Reduces each name part separately before summing, preserving master numbers 11, 22, 33.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_personality_number — complete the name number trinity.
INPUT CONTRACT: name — Full legal name as used at birth. Example: 'Arjun Mehta', 'Sofia Rossi' Y is always treated as a consonant — not a vowel.
DO NOT CONFUSE WITH: asterwise_get_expression_number — all letters, not vowels only. asterwise_get_personality_number — consonants only, not vowels.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-soul-urge-number/
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's full name as commonly written; its letters are converted to numerology values. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_special_ascendantsSpecial AscendantsARead-onlyIdempotentInspect
Calls atmakaraka and ishta-devata endpoints sequentially and merges their payloads into top-level atmakaraka and ishta_devata objects for one BirthData.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — understand chart basics before devotional pointers. AFTER: None.
INPUT CONTRACT: Wrapper returns { atmakaraka: , ishta_devata: } — not a flat data.* root; consumers must read nested .data fields inside each branch per upstream shape.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — general chart; does not compute ishta devata workflow. asterwise_get_char_dasha — timing system using karakas, not deity discovery.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-special-ascendants/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds genuinely useful context beyond that: it discloses the sequential two-endpoint composition and warns that the return is a wrapper with nested branches, not a flat data.* root. It stops short of describing failure modes if one upstream call fails, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior, then cleanly sectioned into WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH. Slightly verbose with the doc link and the dict-typing shorthand, but every section earns its place for a composite tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not explain return values, yet it still clarifies the wrapper shape consumers must navigate. Combined with workflow ordering and sibling disambiguation, an agent has everything needed to select and call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including a careful note that time is required with no sunrise fallback. The description adds nothing parameter-specific beyond 'one BirthData', so the schema is doing all the work and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific composite behavior: it calls the atmakaraka and ishta-devata endpoints sequentially and merges them into top-level objects for one BirthData. This is a precise verb+resource statement that an agent can distinguish from every sibling, including the near-neighbors it explicitly names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit WHEN context (BEFORE: RECOMMENDED asterwise_get_natal_chart; AFTER: None) and a DO NOT CONFUSE WITH section that names two alternatives and states why each is different (general chart, karaka-based timing). This is about as complete as routing guidance gets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tamil_panchangaTamil PanchangaRead-onlyIdempotentInspect
Tamil Panchanga for a date and location: Rahu Kalam, Yamagandam, Kuligai (Gulika), Nalla Neram and the Tamil solar month. Nalla Neram is the daytime windows free of those periods; the month comes from the Sun's sidereal sign at sunrise.
WORKFLOW: BEFORE: asterwise_geocode — when you only have a place name. AFTER: asterwise_get_panchanga — the day's limbs and other timings.
INPUT CONTRACT: date (YYYY-MM-DD), lat, lon, timezone (IANA, default Asia/Kolkata).
DO NOT CONFUSE WITH: asterwise_get_rahu_kaal — the same three periods without the Tamil month or Nalla Neram. asterwise_get_panchanga — the full panchanga day.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tamil-panchanga/
| Name | Required | Description | Default |
|---|---|---|---|
| lat | Yes | Latitude in decimal degrees, north positive. | |
| lon | Yes | Longitude in decimal degrees, east positive. | |
| date | Yes | Date for the Tamil panchanga, YYYY-MM-DD. | |
| timezone | No | IANA timezone of the location. | Asia/Kolkata |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_tarabalaTarabala and ChandrabalaARead-onlyIdempotentInspect
Tarabala and Chandrabala for any date, with the Moon's star and sign change times. For 1 to 31 civil days, every Moon nakshatra and Moon sign with exact start and end (local and UTC), the tara counted from the birth nakshatra with its name and verdict, and the Moon's house from the natal Moon with the chandrabala verdict (Muhurta Chintamani).
WORKFLOW: BEFORE: asterwise_get_natal_chart — the birth Moon's star. AFTER: asterwise_get_vedic_daily_factors — every other factor of the day.
INPUT CONTRACT: birth — BirthData. target_date (optional YYYY-MM-DD) — first day; defaults to today in the birth timezone. days (1-31, default 1). target_timezone (optional IANA) — defines the civil days; defaults to the birth timezone.
DO NOT CONFUSE WITH: asterwise_get_nakshatra_prediction — a one-day prediction, not timed spans. asterwise_get_gochar — all planets from the Moon, not the Moon's own tara.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarabala/
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of civil days, 1 to 31. | |
| birth | Yes | Birth data for a single person. | |
| target_date | No | First day, YYYY-MM-DD. Defaults to today in the birth timezone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA timezone that defines the days. Defaults to the birth timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: exact start/end times in local and UTC, day-count bounds, timezone-driven civil-day definition, default source timezone, and the interpretive system used (Muhurta Chintamani). It omits error handling, but defers to a documentation link.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then labeled blocks (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) that are scannable. Slightly dense and verbose given the schema already carries parameter detail, but every section has a clear function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, sequencing, parameter contract, and sibling disambiguation, and an output schema exists so return values need not be explained. Only gap is behavior on failure/limits, which is punted to an external URL.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The INPUT CONTRACT mostly restates schema facts (defaults, ranges, IANA format) rather than adding new semantics; the only mild value-add is clarifying that target_timezone defines the civil days.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: computes Tarabala and Chandrabala for any date, plus the Moon's star/sign change times for 1-31 civil days. It enumerates the outputs (nakshatra spans, tara from birth star, Moon house with chandrabala verdict) and cites the source text, so it is unmistakable against siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit workflow (BEFORE: get_natal_chart for the birth Moon star; AFTER: get_vedic_daily_factors) plus a DO NOT CONFUSE WITH block naming two alternatives and the distinguishing criterion for each. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_cardTarot Card LookupARead-onlyIdempotentInspect
Returns full structured data for a single card identified by its slug ID. Useful for card detail pages, single-card lookups, and displaying a specific card after the user selects one by name.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: card_id — Slug identifier for the card. Must be exact. Major Arcana examples: 'the-fool', 'the-magician', 'the-high-priestess', 'the-empress', 'the-emperor', 'the-hierophant', 'the-lovers', 'the-chariot', 'strength', 'the-hermit', 'wheel-of-fortune', 'justice', 'the-hanged-man', 'death', 'temperance', 'the-devil', 'the-tower', 'the-star', 'the-moon', 'the-sun', 'judgement', 'the-world' Minor Arcana pattern: '{rank}-of-{suit}' Examples: 'ace-of-wands', 'two-of-cups', 'ten-of-swords', 'page-of-pentacles', 'knight-of-wands', 'queen-of-cups', 'king-of-swords'
DO NOT CONFUSE WITH: asterwise_get_tarot_cards — returns all 78 cards in one call. asterwise_draw_tarot_cards — random draw, not a specific card.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-card/
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | Tarot card identifier in kebab-case, e.g. 'the-fool' or 'ace-of-wands'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description does not need to restate those. It adds valuable context such as the exact-slug requirement, the output/error contract link, and the distinction from bulk/random card tools. This is appropriate given the strong annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections: summary, workflow, input contract, disambiguation, and docs link. The major arcana list is long but genuinely useful for exact-slug lookup. The workflow section is arguably unnecessary because it just says 'None', but overall the description remains well-organized and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two parameters, one required, full schema coverage, an output schema, and annotations covering safety/idempotency, the description covers the remaining needs: valid values, disambiguation from siblings, and a reference to the full output/error contract. Nothing important is missing for an agent to correctly invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the baseline is already strong. The description adds value beyond the schema by providing an extended list of valid Major Arcana slugs, a clear Minor Arcana pattern, and explicit 'must be exact' guidance. This helps an agent construct valid card_id values without trial and error.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns full structured data for a single card identified by slug ID, which is a specific verb-resource pairing. It also explicitly distinguishes itself from siblings like asterwise_get_tarot_cards and asterwise_draw_tarot_cards, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete use cases (card detail pages, single-card lookups, post-selection display) and explicitly names alternatives not to confuse it with, including when to use those alternatives. This is explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_card_of_the_dayTarot Card of the DayRead-onlyIdempotentInspect
Returns a deterministic daily tarot card seeded by SHA-256 hash of the date string. The same card is returned for all callers on the same date — this is intentional. The daily card is not a reading for an individual but a collective daily energy.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_tarot_three_card_spread — for deeper daily reading context.
INPUT CONTRACT: date (optional string YYYY-MM-DD) — Date to get the card for. Defaults to today's date in UTC, or in timezone. Overrides timezone. Example: '2026-05-01' allow_reversed (optional bool) — Default: false. When true: reversed state is also deterministic (seeded by date+'_rev'). When false: card is always upright regardless of date. timezone (optional, IANA or ±HH:MM, e.g. 'Asia/Kolkata') — zone whose current date is today. Default: UTC.
DO NOT CONFUSE WITH: asterwise_draw_tarot_cards — random draw, different every call. asterwise_get_tarot_three_card_spread — positional reading with question context.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-card-of-the-day/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to get the card for, YYYY-MM-DD. Defaults to today's date in UTC, or in timezone. Overrides timezone. | |
| timezone | No | IANA time zone (or ±HH:MM) whose current date counts as today, e.g. 'Asia/Kolkata'. Defaults to UTC; ignored when date is given. | |
| allow_reversed | No | Whether cards may be drawn reversed (upside down). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_tarot_cardsTarot Cards CatalogueARead-onlyIdempotentInspect
Returns the complete 78-card Rider-Waite-Smith deck with full metadata. Each card includes id (slug), name, arcana_type (major/minor), suit, number, element, astrology_correspondence, upright and reversed meanings, keywords for both orientations, yes/no polarity, and visual description.
WORKFLOW: BEFORE: None — standalone catalogue endpoint. AFTER: asterwise_draw_tarot_cards or asterwise_get_tarot_three_card_spread — use card data from this endpoint to build enriched display layers.
INPUT CONTRACT: response_format (optional): markdown (default) | json, as on every Asterwise tool. No other parameters.
DO NOT CONFUSE WITH: asterwise_get_tarot_major_arcana — returns only the 22 Major Arcana subset. asterwise_get_tarot_suit — returns only the 14 cards of a single suit. asterwise_draw_tarot_cards — returns a random draw, not the catalogue.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-cards/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context beyond that: it is a standalone endpoint, returns the complete deck rather than a subset, and is meant to feed 'enriched display layers' in downstream tarot draw/spread tools. It also links to a full output and error contract, so the agent has a clear behavioral picture.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well structured with clear headings and the core purpose is front-loaded in the first sentence. The WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections each serve a distinct purpose, though the 'BEFORE: None' line is slightly filler and the total length is a bit longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple: one optional enum parameter, an output schema, and no required inputs. The description covers what it returns, the metadata fields, workflow context, sibling disambiguation, and a link to the full contract. Nothing an agent needs to select and invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, response_format, is fully documented with enum values, a default, and an explanatory description. The description's INPUT CONTRACT merely summarizes the schema and confirms there are no other parameters, adding no new semantic detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Returns the complete 78-card Rider-Waite-Smith deck with full metadata,' and enumerates the fields included. It also explicitly contrasts itself with three sibling tools in the 'DO NOT CONFUSE WITH' section, making it easy to distinguish from major_arcana, suit, and draw.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section states there are no prerequisites and recommends using this tool before asterwise_draw_tarot_cards or asterwise_get_tarot_three_card_spread to build enriched display layers. The 'DO NOT CONFUSE WITH' section gives explicit conditions for when to use alternatives: major_arcana for 22 cards, suit for 14 cards, draw for random selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_celtic_crossTarot Celtic CrossARead-onlyInspect
Ten-card Celtic Cross spread — traditional ten-position tarot layout. Draws 10 unique cards using cryptographic randomness and assigns each to one of the 10 classical Celtic Cross positions.
WORKFLOW: BEFORE: None — standalone reading, or follow asterwise_get_tarot_three_card_spread when a more detailed examination of the same question is needed. AFTER: None.
INPUT CONTRACT: allow_reversed (bool, default false) — Each card independently has 50% reversal chance. question (optional string, max 500 chars) — The question or situation being examined. Example: 'Should I accept the job offer in London?'
DO NOT CONFUSE WITH: asterwise_get_tarot_three_card_spread — 3 positions only; use for simpler questions. asterwise_draw_tarot_cards — free draw with no positional meaning. asterwise_get_tarot_yes_no — binary answer, not positional analysis.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-celtic-cross/
| Name | Required | Description | Default |
|---|---|---|---|
| question | No | The question being asked; it shapes the reading's interpretation. | |
| allow_reversed | No | Whether cards may be drawn reversed (upside down). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses key behavioral traits: unique non-repeating cards, cryptographic randomness, and the independent 50% reversal chance when allowed. This explains the non-idempotent nature and adds context the annotations alone do not provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and organized with clear labels (WORKFLOW, BEFORE, AFTER, INPUT CONTRACT). Every section adds decision-relevant information and avoids filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tarot tool with an output schema and contract link, the description covers the spread layout, card uniqueness, randomness, reversal behavior, input constraints, and relation to sibling tools. No critical calling information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters, but the description adds meaningful detail: 'allow_reversed' has an explicit 50% reversal rule, 'question' has a 500-character limit and an example, and the output/error contract is linked. 'response_format' is less described in prose but is fully covered by the schema enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific tool ('Ten-card Celtic Cross spread') and states exactly what it does: draws 10 unique cards using cryptographic randomness and assigns them to the 10 classical positions. It also names sibling tools it should not be confused with, so an agent can select it correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section explicitly says when to use this tool standalone and when to follow the three-card spread, and the 'DO NOT CONFUSE WITH' section lists three alternatives with their distinguishing use cases. This gives an agent explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_major_arcanaTarot Major ArcanaARead-onlyIdempotentInspect
Returns all 22 Major Arcana cards (The Fool through The World) as a structured array. Major Arcana represent universal archetypes and major life themes.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_draw_tarot_cards — draw from this subset by filtering by arcana_type.
INPUT CONTRACT: response_format (optional): markdown (default) | json.
DO NOT CONFUSE WITH: asterwise_get_tarot_cards — full 78-card deck including Minor Arcana. asterwise_get_tarot_suit — 14 Minor Arcana cards by suit.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-major-arcana/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context: the result is a structured array of exactly 22 cards, response_format switches between markdown and json, and a full output/error contract is linked. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description leads with the core purpose, then uses compact labeled sections for workflow, input contract, disambiguation, and documentation. This is easy for an agent to scan. It is slightly longer than the single-parameter tool strictly requires, but every section contributes useful selection or invocation information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional parameter, full parameter schema, rich annotations, and an output schema available, the description covers what the tool returns, how output format is controlled, how it fits in a workflow, and how it differs from siblings. No meaningful gap remains for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, response_format, has an enum, a default, and a descriptive explanation in the schema. The description's INPUT CONTRACT section largely restates this information and adds no new parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns all 22 Major Arcana cards (The Fool through The World) as a structured array.' It precisely defines scope and distinguishes itself from related tarot tools in the 'DO NOT CONFUSE WITH' section, naming asterwise_get_tarot_cards and asterwise_get_tarot_suit with their differing scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section states that the tool is standalone ('BEFORE: None') and suggests a downstream use via asterwise_draw_tarot_cards. The DO NOT CONFUSE section identifies alternatives and their scopes, but it does not state an explicit conditional such as 'Use this when you need all Major Arcana cards and nothing else.' Context is clear, but the decision rule is not fully spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_suitTarot SuitARead-onlyIdempotentInspect
Returns all 14 cards in a given Minor Arcana suit as a structured array.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: suit — One of exactly: 'wands', 'cups', 'swords', 'pentacles'. Case-insensitive. Any other value is rejected locally with MCP INVALID_PARAMS.
DO NOT CONFUSE WITH: asterwise_get_tarot_major_arcana — 22 Major Arcana, not suit-based. asterwise_get_tarot_cards — full 78-card catalogue.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-suit/
| Name | Required | Description | Default |
|---|---|---|---|
| suit | Yes | Minor arcana suit: wands, cups, swords or pentacles. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral detail beyond those: case-insensitive suit matching, local rejection of invalid values with MCP INVALID_PARAMS, and the structured array return shape. It does not mention auth or rate limits, but the existing annotations lower the burden and the description provides valuable validation context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded purpose, followed by workflow, input contract, sibling disambiguation, and documentation link. Every section earns its place and there is no filler or tautological repetition of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with an output schema, full schema coverage, and thorough annotations, the description is complete. It covers validation behavior, output shape, sibling differentiation, and points to a full docs URL for output and error contracts, leaving no critical gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value for the suit parameter by enumerating the exact allowed values ('wands', 'cups', 'swords', 'pentacles'), specifying case-insensitivity, and clarifying the local rejection behavior — all beyond what the schema field description provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Returns all 14 cards in a given Minor Arcana suit as a structured array.' It clearly scopes the tool to Minor Arcana suits and disambiguates it from the Major Arcana and full-catalogue siblings, so an agent can identify the tool's purpose precisely.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'DO NOT CONFUSE WITH' section explicitly names asterwise_get_tarot_major_arcana and asterwise_get_tarot_cards and gives the distinguishing criteria (22 Major Arcana vs suit-based; 78-card catalogue). The WORKFLOW section states the tool is standalone, leaving no ambiguity about prerequisites or follow-up calls.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_three_card_spreadTarot Three Card SpreadARead-onlyInspect
Past / Present / Future spread. Draws 3 unique cards using cryptographic randomness and assigns each to a named positional slot with an interpretive context.
WORKFLOW: BEFORE: None — standalone reading. AFTER: asterwise_get_tarot_celtic_cross — for deeper 10-position analysis of same question.
INPUT CONTRACT: allow_reversed (bool, default false) — Each card independently has 50% reversal chance. question (optional string, max 500 chars) — The question being asked. Setting a question is strongly recommended for coherent readings. Example: 'What should I focus on in my career this month?' The question is echoed in the response but does not affect card selection.
DO NOT CONFUSE WITH: asterwise_draw_tarot_cards — free draw with no positional meaning. asterwise_get_tarot_celtic_cross — 10-card spread with comprehensive positional coverage. asterwise_get_tarot_yes_no — single-card binary answer, no positional structure.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-three-card-spread/
| Name | Required | Description | Default |
|---|---|---|---|
| question | No | The question being asked; it shapes the reading's interpretation. | |
| allow_reversed | No | Whether cards may be drawn reversed (upside down). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description notes that cards are drawn with cryptographic randomness and that the question does not affect card selection, adding transparency beyond the readOnlyHint annotation. It doesn't mention any potential side effects, but the annotations already cover safety, and the extra details are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with separate sections for workflow, input, and disambiguation. While slightly verbose due to repeating disambiguation details, the information is organized and easy to scan, with no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all necessary aspects for a user to call the tool correctly: what it does, how to use it, and output options. Since an output schema exists, the lack of return-value details is acceptable. The mention of response_format and the question's non-influence on selection round out the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on each parameter's meaning (question shapes interpretation, allow_reversed controls reversed cards, response_format controls output type) and even provides an example and a note about the question being echoed. This goes beyond the schema's basic definitions, enhancing understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool draws 3 unique cards for a Past/Present/Future spread, assigning each to a named positional slot. It explicitly distinguishes from sibling tools like draw_tarot_cards (free draw) and celtic_cross (deeper analysis), making its specific purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a 'DO NOT CONFUSE WITH' section that contrasts this tool with two directly related siblings, and the 'AFTER' note suggests using the celtic cross for deeper analysis of the same question. This gives clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_tarot_yes_noTarot Yes NoARead-onlyInspect
Draws one card and returns a yes, no, or maybe answer with confidence level. The answer is derived from the card's built-in yes_no polarity and its orientation.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_tarot_three_card_spread — for more context when the yes/no answer is 'maybe' or the situation needs elaboration.
INPUT CONTRACT: allow_reversed (bool, default true) — Recommended to keep true for nuanced answers. Set false only if you want strictly yes/no with no maybe results from reversal. question (optional string, max 500 chars) — The yes/no question being asked. Example: 'Should I accept this job offer?' Example: 'Will the project launch on time?'
DO NOT CONFUSE WITH: asterwise_get_tarot_three_card_spread — positional reading, not binary answer. asterwise_draw_tarot_cards — free draw without answer logic.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-tarot-yes-no/
| Name | Required | Description | Default |
|---|---|---|---|
| question | No | The yes/no question being asked. | |
| allow_reversed | No | Whether cards may be drawn reversed (upside down). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide readOnlyHint=true, idempotentHint=false, and destructiveHint=false, and the description does not contradict these or claim any side effects. The description does not add extra context about safety, auth, or rate limits, but given the annotations already cover the core behavioral aspects, the description is sufficient and transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) but contains some redundancy, as the INPUT CONTRACT repeats parameter details already present in the schema. However, it remains concise overall and does not include extraneous information, making it easy for an agent to parse the essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's purpose, usage, and distinctiveness from siblings, and the schema provides parameter details and output format options. Although the description does not specify the exact structure of the 'markdown' vs 'json' response, the schema's response_format enum and the mention of 'confidence level' give sufficient context for an agent to understand the expected output. Overall, the tool is well-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description elaborates on both key parameters: allow_reversed is explained in the INPUT CONTRACT with the note that setting it to false ensures strictly yes/no answers without 'maybe' from reversal, and question includes an example ('Should I accept this job offer?'). Combined with 100% schema coverage for all three parameters (including response_format), the semantic meaning of each parameter is fully conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Draws one card and returns a yes, no, or maybe answer with confidence level' and explicitly distinguishes it from siblings in the 'DO NOT CONFUSE WITH' section, noting that the three-card spread is a positional reading (not binary) and draw_tarot_cards is a free draw without answer logic. This fully clarifies the tool's purpose and its unique role among the listed tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section clearly indicates this tool is standalone ('BEFORE: None') and recommends following up with asterwise_get_tarot_three_card_spread when the answer is 'maybe' or more context is needed. The 'DO NOT CONFUSE WITH' section additionally tells the agent when not to use this tool, providing clear usage guidance relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_thirumana_poruthamThirumana PoruthamARead-onlyIdempotentInspect
Evaluates twelve Tamil Thirumana poruthams for two charts, tracks veto severity for Rajju, and returns an expanded breakdown map with tradition metadata.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_porutham — quick ten-koota pass before twelve-koota depth. AFTER: None.
INPUT CONTRACT: Two BirthData objects per global contract.
DO NOT CONFUSE WITH: asterwise_get_porutham — ten poruthams only, no Nadi/Varna keys. asterwise_get_compatibility — North Indian 36-point schema, not Tamil porutham map.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-thirumana-porutham/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for a single person. | |
| person2 | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral detail by mentioning Rajju veto severity tracking and the expanded breakdown map with tradition metadata, though exact result keys and error cases are only pointed to via the contract URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well organized with WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH, and contract sections. It is slightly verbose and repeats some schema content, but every section serves a clear purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the annotations cover safety, the description is complete: it provides workflow, disambiguation from relevant siblings, input requirements, output format, and a link to the full error contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all parameters with descriptions, so the baseline is 3. The description only restates the input contract and does not add significant meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Evaluates'), names the exact resource (twelve Tamil Thirumana poruthams for two charts), and immediately distinguishes it from the ten-porutham and North Indian compatibility tools in the DO NOT CONFUSE section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit workflow guidance (run asterwise_get_porutham first as a quick pass), states the input contract (two BirthData objects), and names the alternatives to avoid. It also indicates output format and points to the full output/error contract.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_transitsTransitsRead-onlyIdempotentInspect
Lists sign ingresses and retrograde/direct stations for all planets between two dates against the natal context and returns chronological astronomical events.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — clarifies the natal reference for the same birth data. AFTER: asterwise_get_gochar — optional current snapshot after scanning the range.
INPUT CONTRACT: from_date and to_date are strings in the format expected by the upstream API (typically YYYY-MM-DD). Range cap (24 months), date order, and validity are enforced upstream, not locally. birth.ayanamsa picks the zodiac: 'lahiri' (default), 'raman', 'kp' are sidereal; 'tropical' gives Western sign changes (Sun into Aries at the March equinox, Moon sign changes every ~2.5 days). Station moments do not depend on it, only their longitude.
DO NOT CONFUSE WITH: asterwise_get_gochar — single-day transit snapshot with houses from Moon/Lagna, not ingress/station lists. asterwise_get_dasha_transits — dasha lord vs transit scoring for today only.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-transits/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| to_date | Yes | End of the window to list ingress and station events, YYYY-MM-DD. | |
| from_date | Yes | Start of the window to list ingress and station events, YYYY-MM-DD. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_varshaphalVarshaphalRead-onlyIdempotentInspect
Computes the annual Tajika-style solar return for a four-digit civil year and returns Muntha, Pancha Adhikari metrics, Tajika aspects, and varshaphal positions.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — baseline radix before annual overlay. AFTER: None.
INPUT CONTRACT: year is a plain int sent as target_year upstream; callers must supply the true Gregorian return year, not age.
DO NOT CONFUSE WITH: asterwise_get_dasha — multi-decade Vimshottari, not one solar return. asterwise_get_transits — ingress/station timeline, not annual Tajika chart.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-varshaphal/
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year. | |
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_varshaphal_harsha_balaVarshaphal Harsha BalaRead-onlyIdempotentInspect
Computes Harsha Bala (positional happiness score) for all 7 classical planets in a Varshaphal solar return chart. Maximum 20 per planet (4 components × 5 points each).
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_varshaphal — identify the Year Lord (Varsha Pati) before interpreting Harsha Bala. The Year Lord's Harsha Bala is the most actionable number in this response. AFTER: asterwise_get_varshaphal_saham — use Harsha Bala to assess whether each Saham lord can deliver its theme with ease or difficulty.
INPUT CONTRACT: Same as asterwise_get_varshaphal — BirthData plus year. year (required int): The Gregorian civil year of the solar return, sent upstream as target_year. Not age. time (required): Solar return ascendant and house positions are time-sensitive.
DO NOT CONFUSE WITH: asterwise_get_varshaphal — returns Pancha Vargeeya Bala (mathematical strength out of 80) for the Pancha Adhikaris; Harsha Bala (positional happiness out of 20) is a completely different measurement returned by this tool. asterwise_get_varshaphal_saham — derives sensitive zodiac points; this tool scores planet positional comfort. asterwise_get_chart_strength — Shadbala for the natal chart, not Tajika Harsha Bala for the solar return.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-varshaphal-harsha-bala/
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year. | |
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_varshaphal_sahamVarshaphal SahamRead-onlyIdempotentInspect
Computes all 10 Tajika Saham (sensitive points) for a Varshaphal solar return chart. Sahams are the Tajika equivalent of Arabic Parts — mathematically derived zodiac points that focus the annual horoscope on specific life themes.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_varshaphal — understand the base solar return chart (Varsha Pati, Muntha, Varsha Ascendant) before interpreting Saham lords. The Saham is meaningless without knowing which house it occupies from the Varsha Ascendant. AFTER: asterwise_get_varshaphal_harsha_bala — assess the Saham lord's positional happiness score to determine ease or difficulty of manifestation.
INPUT CONTRACT: Same as asterwise_get_varshaphal — BirthData plus year. year (required int): The Gregorian calendar year of the solar return, sent upstream as target_year. Not age — the civil year (e.g. 2026). Feeding age instead of year silently produces the wrong return. time (required): Solar return Ascendant is time-sensitive. Accurate birth time is required for reliable Saham interpretation.
DO NOT CONFUSE WITH: asterwise_get_varshaphal — returns the full base solar return chart including Muntha, Varsha Pati, and planet positions; Saham points are not included there. asterwise_get_varshaphal_harsha_bala — scores planet positional happiness; this tool computes zodiac points, not planet positions. asterwise_get_gemstone_recommendations — birthchart gemstone recommendations, unrelated to Tajika Saham.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-varshaphal-saham/
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year. | |
| birth | Yes | Birth data for tools that need the exact birth time (no sunrise fallback). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_vedic_daily_factorsVedic Daily FactorsARead-onlyIdempotentInspect
Every classical factor for one person on one day, in one shape, with no weighting. Each factor carries its raw value and range, its frame (from the Moon, from the Lagna, a natal planet, none), the verdict its own rule gives or null, the rule's source, signification ids, the time it holds and whether it depends on the birth time.
WORKFLOW: BEFORE: asterwise_get_natal_chart. AFTER: asterwise_get_vedic_events — the same over a range, as a timeline.
INPUT CONTRACT: birth — BirthData. target_date (optional YYYY-MM-DD; defaults to today in the birth timezone). target_timezone (optional IANA; defaults to the birth timezone). The day's sky is read at local noon.
DO NOT CONFUSE WITH: asterwise_get_gochar — the transit section only, with interpretations. asterwise_get_horoscope — AI-written text, not factors.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-vedic-daily-factors/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| target_date | No | Day to read, YYYY-MM-DD. Defaults to today in the birth timezone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA timezone of the day. Defaults to the birth timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description adds non-obvious behavioral facts beyond that: no weighting is applied, each factor carries frame provenance (Moon/Lagna/natal/none), a verdict-or-null, rule source and signification ids, and whether it depends on birth time. It also states the day's sky is sampled at local noon, which materially affects interpretation of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, then labeled WORKFLOW / INPUT CONTRACT / DO NOT CONFUSE WITH blocks, then a docs link. Efficient and skimmable; the factor-attribute sentence is dense list-like prose, slightly telegraphic, but each clause adds distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values needn't be restated, and the description still summarizes payload shape; parameter defaults, required birth object, routing to prerequisite and follow-on tools, and a full contract URL are all present. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds defaults and interaction semantics the schema only states in isolation: target_date defaults to today in the birth timezone, target_timezone defaults to the birth timezone, and the noon sampling rule. Only response_format is left untouched by the prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource with precise scope: 'every classical factor for one person on one day, in one shape, with no weighting.' The 'DO NOT CONFUSE WITH' block explicitly separates it from asterwise_get_gochar (transit section only) and asterwise_get_horoscope (AI-written text), which is exactly what sibling differentiation requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
WORKFLOW gives both orderings (BEFORE: get_natal_chart; AFTER: get_vedic_events for the ranged timeline), and the exclusion list names the two closest alternatives with the condition that selects them. An agent can route without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_vedic_eventsVedic Events (date range)ARead-onlyIdempotentInspect
One timeline of everything that happens to a chart over 1 to 31 days, each event with its exact time. Sidereal sign ingresses with the new sign's house from the natal Moon, stations, Moon nakshatra changes with Tarabala, Moon sign changes with Chandrabala, exact degree conjunctions with natal planets, eclipses with their contacts, Purnima and Amavasya (exact full and new Moon, with the tithi's start and end), and Vimshottari dasha changes (to the day). Each event carries the verdict its own rule gives, or null.
WORKFLOW: BEFORE: asterwise_get_natal_chart. AFTER: asterwise_get_vedic_daily_factors — the full picture of one of the days.
INPUT CONTRACT: birth — BirthData. from_date (optional YYYY-MM-DD; defaults to today). days (1-31, default 7). target_timezone (optional IANA; defaults to the birth timezone).
DO NOT CONFUSE WITH: asterwise_get_transits — ingresses and stations for everyone, nothing personal. asterwise_get_dasha — the whole dasha tree.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-vedic-events/
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of civil days, 1 to 31 (7 for a week, 30 for a month). | |
| birth | Yes | Birth data for a single person. | |
| from_date | No | First day, YYYY-MM-DD. Defaults to today in the birth timezone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA timezone for the days and local times. Defaults to the birth timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds real behavioral context – the event taxonomy, per-event verdicts (or null), and the ordering/scope constraints – but doesn't discuss rate limits, output size, or pagination beyond the 31-day cap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the what/scope, then a tight event enumeration, then workflow, input contract, and disambiguation labels. Every sentence earns its place; nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex multi-event timeline tool with a nested birth object and output schema, the description is complete: scope, event taxonomy, workflow position, disambiguation, input contract, and a docs link for the full contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter is already documented with defaults, formats, and constraints. The description's INPUT CONTRACT restates defaults already in the schema (from_date defaults today, days 1-31 default 7, target_timezone defaults to birth tz) but adds no syntax or format detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (timeline of everything happening to a chart) with explicit scope (1-31 days, exact times), and enumerates the event types. Clearly distinguishes itself from siblings in the DO NOT CONFUSE WITH section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit workflow (BEFORE: get_natal_chart, AFTER: get_vedic_daily_factors) and names the two most confusable siblings (get_transits, get_dasha) with the reason each differs. This is the model for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_vedic_significationsVedic Significations (BPHS)ARead-onlyIdempotentInspect
What each house and planet signifies in Brihat Parashara Hora Shastra, as a fixed list with stable ids. Houses from chapter 11, verses 2-13; planets from chapter 3, verses 12-13 and the karaka verses of chapters 8 and 14.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_vedic_daily_factors — factors cite these ids.
INPUT CONTRACT: No inputs beyond response_format.
DO NOT CONFUSE WITH: asterwise_get_western_significations — Lilly's list for the Western track. asterwise_get_planet_nature — a planet's nature in one chart.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-vedic-significations/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the remaining burden is light. The description adds genuinely useful behavior: the list is fixed with stable ids, and downstream tools reference those ids, which is non-obvious and important for chaining. It does not discuss pagination or size of the payload, a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded one-sentence purpose followed by labeled blocks (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH). Every line carries information; nothing is padding despite the structured formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is not required. For a zero-required-input reference lookup, the description covers provenance, id stability, workflow placement, and sibling disambiguation — everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (response_format) and schema description coverage is 100%, so the schema already documents the enum and default fully. The description adds only 'No inputs beyond response_format', which is a restatement rather than new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns what each house and planet signifies in a named classical text (BPHS), as a fixed list with stable ids. It also cites the exact source chapters/verses, which pins down the content precisely and separates it from the sibling western significations list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit workflow framing (BEFORE: none, standalone; AFTER: asterwise_get_vedic_daily_factors, which cites these ids) tells the agent where this fits. The DO NOT CONFUSE WITH block names two alternatives and gives the distinguishing reason for each, so selection vs. siblings is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_aspectsWestern AspectsARead-onlyIdempotentInspect
Calculates all active aspects between a supplied set of planetary longitudes. Accepts a dictionary of body name to tropical ecliptic longitude and returns every aspect within standard natal orbs.
WORKFLOW: BEFORE: None — standalone; or use asterwise_get_western_natal to get positions first. AFTER: None.
INPUT CONTRACT: positions — dict mapping planet/body name (string) to tropical longitude (float 0–360). Must contain at least 2 entries. Example: {'Sun': 229.6, 'Moon': 221.8, 'Mars': 189.6, 'Jupiter': 309.6} Names can be any string — the tool does not enforce planet names.
DO NOT CONFUSE WITH: asterwise_get_western_natal — computes both positions and aspects from birth data. asterwise_get_western_synastry — inter-chart aspects between two people.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-aspects/
| Name | Required | Description | Default |
|---|---|---|---|
| positions | Yes | Planet positions to compare: a mapping of planet name to ecliptic longitude in degrees (0-360). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the annotations by specifying 'standard natal orbs' and the input format (tropical longitude). Since annotations already indicate read-only, idempotent, and non-destructive behavior, the description does not contradict them and provides a useful default behavior detail, though it could mention potential orb variations or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) and front-loads the core purpose in the first sentence. While it is slightly verbose due to the embedded workflow and contract text, the structure makes it easy to navigate and not overly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes workflow context, input contract details, links to full documentation, and differentiates from sibling tools. It does not provide an explicit output schema, but the response_format parameter and phrase 'returns every aspect' give sufficient indication of the result. The link to docs fills any remaining gaps, making it complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with descriptions, but the description text adds meaningful constraints not present in the schema: positions must contain at least 2 entries, gives an explicit example, and clarifies the coordinate type (tropical longitude). This goes beyond the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool calculates all active aspects from supplied planetary longitudes, with explicit input and output. It also explicitly distinguishes itself from similar tools (asterwise_get_western_natal and asterwise_get_western_synastry) in the 'DO NOT CONFUSE WITH' section, making its purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance via the WORKFLOW section, stating it can be used standalone or after obtaining positions from asterwise_get_western_natal. It also directly names the alternatives to avoid confusion, giving clear when-to-use and when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_compatibilityWestern CompatibilityARead-onlyIdempotentInspect
Overall compatibility score (0–100) between two natal charts. Scores element affinity, synastry aspects between personal planets (Sun, Moon, Venus, Mars), and Sun/Moon/rising sign comparisons.
WORKFLOW: BEFORE: asterwise_get_western_natal per person optional. AFTER: asterwise_get_western_synastry — drill into raw aspects if score needs detail.
INPUT CONTRACT: person1, person2 — WesternBirthData each.
DO NOT CONFUSE WITH: asterwise_get_western_synastry — raw aspects, no score. asterwise_get_western_zodiac_compatibility — sign-only, no birth data.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-compatibility/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| person2 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/destructive hints, so the bar is lower. The description adds useful context by mentioning the output score range, the workflow, and a link to the full output/error contract, which goes beyond the bare annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses clear sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) and each sentence serves a purpose. It is a bit verbose with all-caps labels but remains well-structured and easy to scan. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (nested objects, two persons, many sibling tools), the description provides enough context to select and invoke the tool correctly. It includes a link to the full output/error contract, clarifying what to expect, and it differentiates from the most similar alternatives. A full inline output schema would make it perfect, but the URL suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for every parameter, including nested objects, enums, and defaults. The description itself adds no extra semantic information about parameters; it merely repeats 'person1, person2 — WesternBirthData' which is already in the schema. Hence baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clearly that it computes a compatibility score (0–100) between two natal charts, and lists the specific components (element affinity, synastry aspects, sign comparisons). It explicitly distinguishes itself from two sibling tools (synastry and zodiac compatibility) which is crucial for disambiguation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit workflow guidance: optional prior call to western_natal, and a follow-up call to western_synastry when more raw aspect detail is needed. Also explicitly states when NOT to use this tool (for raw aspects or sign-only compatibility) by naming alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_compositeWestern CompositeARead-onlyIdempotentInspect
Midpoint composite chart for two people. Each composite planet is the midpoint of the two natal positions. Returns composite planets with dignities and internal aspects.
WORKFLOW: BEFORE: asterwise_get_western_synastry — examine inter-chart aspects before composite. AFTER: None.
INPUT CONTRACT: person1, person2 — WesternBirthData each. house_system ignored.
DO NOT CONFUSE WITH: asterwise_get_western_synastry — two charts, inter-chart aspects vs composite (one midpoint chart). asterwise_get_western_compatibility — numeric score vs structural composite chart.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-composite/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| person2 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds that house_system is ignored and that the response contains composite planets with dignities and aspects, going beyond the annotations. However, it does not detail error behavior, though it links to a full output and error contract.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE, and contract link sections. Every sentence provides useful information without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested parameter objects and output schema, the description is complete enough for an agent to invoke the tool correctly. It specifies prerequisites, differentiates from closely related tools, notes ignored parameters, and points to the full output and error contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with detailed descriptions for person1, person2, and response_format. The description adds valuable caveats such as 'house_system ignored' and clarifies that each person uses WesternBirthData, supplementing the schema meaningfully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as returning a midpoint composite chart for two people, with composite planets, dignities, and aspects. It explicitly differentiates this from synastry and numeric compatibility tools in the DO NOT CONFUSE section, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section gives explicit guidance to examine inter-chart aspects via asterwise_get_western_synastry before the composite. The INPUT CONTRACT and DO NOT CONFUSE sections clarify when this tool is appropriate versus synastry or compatibility tools, providing strong usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_daily_factorsWestern Daily FactorsARead-onlyIdempotentInspect
Every Western factor for one person on one day, in one shape, with no weighting. Each factor carries its raw value and range, its frame, the verdict Lilly's rules give, the rule's source, signification ids, the time it holds and whether it depends on the birth time.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: asterwise_get_western_events — the same over a range, as a timeline.
INPUT CONTRACT: birth — WesternBirthData (house_system used for natal_house). target_date (optional YYYY-MM-DD; defaults to today in the birth timezone). target_timezone (optional IANA).
DO NOT CONFUSE WITH: asterwise_get_western_transits_daily — the aspects only, with no rules. asterwise_get_western_horoscope — AI-written sun-sign text.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-daily-factors/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| target_date | No | Day to read, YYYY-MM-DD. Defaults to today in the birth timezone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA timezone of the day. Defaults to the birth timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real payload context — the per-factor shape (raw value, range, frame, rule verdict, rule source, signification ids, timing, birth-time dependence) and the 'no weighting' characteristic — but says little about output size or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then cleanly sectioned into workflow, input contract, and disambiguation. Slightly dense and the docs URL adds length, but every block carries substantive information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values need no explanation, yet the description still sketches the factor payload. Combined with workflow, input contract, sibling disambiguation, and an error-contract pointer, nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters; baseline is 3. The INPUT CONTRACT adds only marginal meaning (house_system drives natal_house; target_date/target_timezone defaults), largely restating schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a precise verb+resource statement ('Every Western factor for one person on one day, in one shape, with no weighting') and enumerates what each factor contains. It explicitly distinguishes itself from sibling tools by name, so an agent can route without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit workflow (BEFORE: get_western_natal; AFTER: get_western_events) plus a 'DO NOT CONFUSE WITH' block naming two siblings and the exact axis of difference (aspects-only vs rules; AI-written text). Strong when-to-use and exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_dayWestern Day ViewARead-onlyIdempotentInspect
One calendar day at a place, Western style: planetary hours, void-of-course Moon periods, Moon sign changes and the Moon phase. The day runs from local midnight to midnight; every planetary hour that falls in it is listed with the void-of-course periods that overlap it.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_daily_factors — the personal picture for the same day.
INPUT CONTRACT: location — LocationInput (date YYYY-MM-DD, lat, lon, timezone, response_format).
DO NOT CONFUSE WITH: asterwise_get_panchanga — the Vedic day with tithi, nakshatra and the Vedic windows.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-day/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds the local-midnight-to-midnight day boundary and the fact that each planetary hour is listed together with overlapping void-of-course periods, but it says nothing about pagination, size limits, or error behavior beyond the external docs link. Useful scope context, but not rich behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content is front-loaded: a one-sentence purpose, then labeled WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH blocks that are easy to scan. Slightly over-formatted, and the input contract line duplicates structured schema data rather than adding to it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations carry the safety profile; the description supplies scope, workflow positioning, and the key sibling disambiguation plus a docs link for the full contract. The only gap is that it does not clarify why an agent should use this aggregate day view instead of the overlapping planetary-hours or void-of-course siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested location object (date, lat, lon, timezone, response_format) is already documented in structured form. The description's "INPUT CONTRACT" line merely restates those same fields without adding format rules, defaults, or constraints beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifies the exact scope ("One calendar day at a place, Western style") and enumerates the concrete contents returned: planetary hours, void-of-course Moon periods, Moon sign changes, and Moon phase. It also names a specific sibling it must not be confused with (asterwise_get_panchanga), so an agent can identify the tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is standalone ("BEFORE: None") and names the natural follow-up tool (asterwise_get_western_daily_factors) for the personal picture on the same day. It lacks guidance on when to prefer this composite day view over the narrower siblings like get_western_planetary_hours or get_western_void_of_course_moon, which is a real usage gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_eclipsesEclipsesARead-onlyIdempotentInspect
Solar and lunar eclipses in a date range, past or future, up to 10 years. Each gives the type, time of greatest eclipse, start and end (UTC) and the eclipse degree in the tropical zodiac. With birth data, each eclipse also lists the natal planets and angles within 3° of the eclipse degree by conjunction or opposition.
WORKFLOW: BEFORE: None — standalone; add birth for personal contacts. AFTER: asterwise_get_western_transits_monthly — transits around an eclipse date.
INPUT CONTRACT: from_date, to_date (string YYYY-MM-DD, UTC, inclusive) — at most 10 years apart. birth (optional WesternBirthData) — adds natal_contacts; house_system sets the Ascendant/MC computation.
DO NOT CONFUSE WITH: asterwise_get_western_moon_phase — ordinary new and full moons, not eclipses. asterwise_get_western_moon_calendar — monthly phase table.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-eclipses/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | No | Optional birth data. When given, each eclipse lists the natal planets and angles within 3° of the eclipse degree. | |
| to_date | Yes | End of the date range, YYYY-MM-DD (inclusive). | |
| from_date | Yes | Start of the date range, YYYY-MM-DD (inclusive). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses the 10-year range cap, inclusive UTC dates, the 3° orb and conjunction/opposition rule used for natal contacts, and the effect of house_system on Ascendant/MC computation. These are concrete behavioral traits not present in the annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded core sentence followed by labeled WORKFLOW, INPUT CONTRACT and DO NOT CONFUSE WITH blocks. Every line carries actionable information; only the trailing docs URL is non-substantive but it is a pointer to a fuller contract.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Result fields, range limits, optional birth semantics, and sibling disambiguation are all covered, so an agent can call this correctly without opening the output schema or the external docs. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds constraints not encoded in the schema — notably that from_date/to_date must be at most 10 years apart and are inclusive UTC — and clarifies that birth adds natal_contacts and that house_system drives Ascendant/MC.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (solar and lunar eclipses) with a scope (date range, past or future, up to 10 years) and enumerates the returned fields (type, time of greatest eclipse, start/end, eclipse degree, natal contacts). It explicitly differentiates itself from the nearest siblings moon_phase and moon_calendar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Workflow is stated as BEFORE/AFTER with a named follow-up tool, and a DO NOT CONFUSE WITH block names two sibling tools and explains how they differ. The optional birth-data path is framed as a conditional add-on, so an agent knows exactly when to include it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_eventsWestern Events (date range)ARead-onlyIdempotentInspect
One timeline of everything that happens to a chart over 1 to 31 days, each event with its exact time. It holds the exact major aspects from the transiting planets to the natal planets and angles with Lilly's verdicts, tropical sign ingresses and stations, Moon sign changes, void-of-course periods, New and Full Moons and quarters, eclipses with their contacts, and the profection year turning on the birthday.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: asterwise_get_western_daily_factors — the full picture of one of the days.
INPUT CONTRACT: birth — WesternBirthData. from_date (optional YYYY-MM-DD; defaults to today). days (1-31, default 7). target_timezone (optional IANA).
DO NOT CONFUSE WITH: asterwise_get_western_transits_monthly — day snapshots, not a timeline of exact moments.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-events/
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of civil days, 1 to 31 (7 for a week, 30 for a month). | |
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| from_date | No | First day, YYYY-MM-DD. Defaults to today in the birth timezone. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
| target_timezone | No | IANA timezone for the days and local times. Defaults to the birth timezone. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare safety traits (readOnly, idempotent, non-destructive, closed world), so the description's job is to add operational context. It does so richly: it details the exact event taxonomy returned, notes each event carries an exact time, constrains the date range to 1–31 days, and links to a full output/error contract. Little behavioral information is missing for an agent deciding how to use it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then cleanly separated into WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections. Every sentence contributes either scope, usage routing, or parameter clarification, and the URL is terse. It is long but earns its length given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description only needs to cover selection, scoping, and workflow. It does all three completely: it distinguishes the tool from related siblings, states the date-range constraint, and provides before/after workflow steps. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter's meaning, format, and default. The description largely repeats that information ('from_date ... defaults to today', 'days 1-31 default 7') without adding syntax, constraints, or interaction rules beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource—a timeline of astrological events for a chart over 1–31 days—and enumerates the exact event types it returns (aspects, ingresses, stations, Moon changes, eclipses, profections). It distinguishes itself from siblings by explicitly naming what it is not ('timeline of exact moments' vs. day snapshots).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit workflow guidance with a BEFORE tool (asterwise_get_western_natal) and an AFTER tool (asterwise_get_western_daily_factors), plus a 'DO NOT CONFUSE WITH' section that names the closest alternative (asterwise_get_western_transits_monthly) and explains the difference. This removes guesswork.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_horaryWestern Horary ChartARead-onlyIdempotentInspect
The chart of a question's moment with the facts Lilly's horary method reads, each rule named. It gives the house rulers, the significators (lord of the 1st and the Moon for the querent, lord of the quesited house), their aspects with Lilly's orbs and whether an applying aspect perfects before a sign change, the Moon's last and next aspects and void-of-course state, combustion, and the considerations before judgement. The yes or no is left to the reader.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_significations — what the quesited house and its ruler stand for.
INPUT CONTRACT: date (YYYY-MM-DD) and time (HH:MM) the question was asked, local. latitude, longitude, timezone (IANA) of the place. quesited_house (optional 1-12): the house of the matter (7 partner, 10 job, 2 money …). house_system (placidus|koch|equal|whole_sign).
DO NOT CONFUSE WITH: asterwise_get_prashna_chart — the Vedic question chart. asterwise_get_western_natal — a birth chart.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-horary/
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date the question was asked, YYYY-MM-DD (local). | |
| time | Yes | Time the question was asked, HH:MM (24-hour, local). | |
| latitude | Yes | Latitude of the place in decimal degrees. | |
| timezone | Yes | IANA timezone of the place, e.g. Europe/London. | |
| longitude | Yes | Longitude of the place in decimal degrees. | |
| house_system | No | placidus (default), koch, equal or whole_sign. | placidus |
| quesited_house | No | House of the matter asked about (7 partner, 10 job, 2 money …). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower. The description adds real behavioral context beyond that: the computation set (aspects with Lilly's orbs, applying-perfects-before-sign-change, void-of-course, combustion, considerations before judgement) and, importantly, that the yes/no verdict is deliberately withheld. It does not cover failure modes beyond pointing at an external error-contract URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, then cleanly labeled WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE blocks. The opening sentence is dense but the enumeration of computed facts is long; a small amount could be trimmed since the output schema covers return values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 8-parameter chart tool, the description covers scope, contents, sequencing, disambiguation, and input semantics, and the output schema exists so return values need not be spelled out. Nothing required to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents every parameter including the quesited_house examples and house_system enum. The description's INPUT CONTRACT largely restates these fields without adding syntax or format meaning beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('chart of a question's moment') and scopes the method (Lilly's horary) plus the exact contents returned. The DO NOT CONFUSE section explicitly distinguishes it from asterwise_get_prashna_chart (Vedic question chart) and asterwise_get_western_natal (birth chart), so an agent can select it without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW block gives explicit BEFORE (standalone) and AFTER (asterwise_get_western_significations) routing, and the DO NOT CONFUSE block names alternatives. It stops short of stating the triggering scenario (e.g. 'use when the querent asks a yes/no question arising at a specific moment'), leaving the when-to-use condition largely implied by the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_horoscopeWestern HoroscopeARead-onlyIdempotentInspect
Fetches an AI-synthesised Western sun-sign horoscope for a chosen horizon and returns structured guidance fields plus metadata about the model and period.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_western_natal — if the user needs a personalised tropical chart beyond sign-general copy.
INPUT CONTRACT: period is constrained to the tool schema enum (daily, weekly, monthly, yearly). sun_sign accepts English zodiac names only (Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces). No Sanskrit aliases — this is Western astrology. response_format selects JSON vs markdown rendering only.
DO NOT CONFUSE WITH: asterwise_get_horoscope — Vedic Moon-sign horoscope using sidereal zodiac, not Western tropical sun-sign. asterwise_get_western_natal — full personalised tropical chart from birth data, not sign-general editorial copy.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-horoscope/
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Horoscope period: daily, weekly, monthly or yearly. | |
| sun_sign | Yes | Western sun sign, e.g. 'Aries'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only/idempotent annotations, the description reveals that content is AI-synthesised, that response_format only changes rendering, and that results include model/period metadata. It also points to a full output and error contract URL, so the tool's behavioral and error profile is well disclosed with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than minimal but earns its length: core function is front-loaded and the WORKFLOW/INPUT CONTRACT/DO NOT CONFUSE sections are scannable. Some redundancy exists ('chosen horizon' vs. the period parameter), but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, well-annotated tool with an output schema, the description covers workflow, input constraints, output highlights, sibling confusion, and directs to a full error/output contract. An agent has everything needed to decide and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is a 3. The description adds useful constraints beyond the schema: sun_sign must be English zodiac names only, no Sanskrit aliases, and response_format affects rendering only. This clarifies ambiguity without compensating for missing schema docs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the exact resource ('Western sun-sign horoscope'), the action ('Fetches'), and the output shape (structured guidance fields plus metadata). It also calls out the Western/tropical distinction, so it is clearly separable from the many sibling astrology tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The WORKFLOW section states the tool is standalone and names asterwise_get_western_natal as the AFTER option when a personalised chart is needed. DO NOT CONFUSE WITH explicitly contrasts asterwise_get_horoscope (Vedic Moon-sign) and asterwise_get_western_natal, giving an agent clear selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_lunar_returnWestern Lunar ReturnRead-onlyIdempotentInspect
Western lunar return chart: the next moment after a given date that the Moon returns to its natal tropical longitude (approximately every 27.3 days). Builds a complete Western natal chart for that moment at the birth location.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: None.
INPUT CONTRACT: birth — WesternBirthData. after_date (optional YYYY-MM-DD) — find next return after this date. Defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_solar_return — annual Sun return vs lunar_return (monthly Moon return).
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-lunar-return/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| after_date | No | Find the first lunar return after this date, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_moon_calendarWestern Moon CalendarRead-onlyIdempotentInspect
Returns lunar phase data for every day in a calendar month as a structured array. Each element is a complete daily phase object identical to asterwise_get_western_moon_phase.
WORKFLOW: BEFORE: None — standalone. AFTER: None.
INPUT CONTRACT: year (optional int, 1-3000) — Target year. Defaults to the current year (UTC). Example: 2026 month (optional int 1–12) — Target month. Defaults to the current month (UTC). Example: 5 (May) Values outside 1–12 are rejected locally with MCP INVALID_PARAMS.
DO NOT CONFUSE WITH: asterwise_get_western_moon_phase — single-day phase only.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-moon-calendar/
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Four-digit year, 1-3000. Defaults to the current year (UTC). | |
| month | No | Month number 1-12. Defaults to the current month (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_moon_phaseWestern Moon PhaseRead-onlyIdempotentInspect
Calculates the tropical lunar phase for any date using Swiss Ephemeris. Returns the phase name, phase angle, illumination percentage, Moon age in days, and the next major phase transition.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_moon_calendar — get the full month's phase data.
INPUT CONTRACT: date (optional string YYYY-MM-DD, years 1-3000) — Date to compute phase for. Defaults to today (UTC). An invalid or out-of-range date → 422 validation_error, surfaces as MCP INTERNAL_ERROR with the API message. Example: '2026-05-01'
DO NOT CONFUSE WITH: asterwise_get_western_moon_calendar — full monthly day-by-day phase table. asterwise_get_panchanga — Vedic tithi system (lunar day based on 12° arc increments).
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-moon-phase/
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date for the moon phase, YYYY-MM-DD (years 1-3000). Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_natalWestern Natal ChartRead-onlyIdempotentInspect
Calculate a complete Western natal chart using the tropical zodiac and Swiss Ephemeris. Returns 10 planet positions with Placidus (or chosen) house placements, sign-level dignities plus Lilly essential-dignity scores, all active aspects, and element/modality/hemisphere balance statistics.
WORKFLOW: BEFORE: None — this tool is standalone. AFTER: asterwise_get_western_transits_daily — layer current transits over this natal chart. AFTER: asterwise_get_western_synastry — compare this chart against a partner's chart. AFTER: asterwise_get_western_solar_return — annual return chart for the current year.
INPUT CONTRACT: birth.date — YYYY-MM-DD. Example: '1985-11-12' birth.time — HH:MM (24-hour local time). Example: '06:45' birth.lat — Decimal degrees, north positive. Example: 19.076 (Mumbai) birth.lon — Decimal degrees, east positive. Example: 72.8777 (Mumbai) birth.timezone — IANA timezone string. Example: 'Asia/Kolkata', 'America/New_York', 'Europe/Rome', 'UTC'. Default: UTC. IMPORTANT: Timezone defaults to UTC — always supply the correct local timezone for accurate house cusps. An incorrect timezone shifts the Ascendant. birth.house_system — 'placidus' (default, most common), 'koch', 'equal', 'whole_sign'. Placidus is standard for most Western traditions. Whole sign is traditional/Hellenistic. NOTE: house_system is accepted here but silently ignored by return, synastry, composite, and progression endpoints — those always use the birth location coordinates without house-system selection. ayanamsa — always tropical regardless of any value supplied; field is not present.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — Vedic sidereal chart using Lahiri ayanamsa; different zodiac, different house system, different planet set (9 grahas vs 10 tropical planets). asterwise_get_western_aspects — takes raw longitudes as input; use when you already have positions and don't need full chart computation.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-natal/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_planetary_hoursPlanetary HoursARead-onlyIdempotentInspect
The 24 planetary hours for a date and place, with the planet ruling each hour and local plus UTC start and end times. Day (sunrise to sunset) and night (sunset to next sunrise) are each split into 12 equal parts; the first hour after sunrise belongs to the weekday's planet and the rest follow the Chaldean order (Saturn, Jupiter, Mars, Sun, Venus, Mercury, Moon).
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_void_of_course_moon — avoid void-of-course windows.
INPUT CONTRACT: location — LocationInput (date YYYY-MM-DD, lat, lon, timezone, response_format).
DO NOT CONFUSE WITH: asterwise_get_hora — the Vedic version with Sanskrit framing and activity notes. asterwise_get_choghadiya — 8 Vedic day/night parts, not 12.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-planetary-hours/
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | For tools that need location but not birth time. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is clear. The description adds useful algorithmic context about how the 24 planetary hours are derived and links to a full output and error contract, though it does not discuss auth or rate limits because none are relevant for this public read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then organized into WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections. Every sentence carries distinct information, and the external documentation link is appropriately placed at the end for deeper contracts.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description covers what is computed, when to use it, what input structure is expected, and how it differs from sibling tools. An agent has everything needed to select and invoke it correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested location schema already documents date, lat, lon, timezone, and response_format. The description reinforces the input contract by listing the same fields and the YYYY-MM-DD date format, but adds no meaningful syntax or constraint beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('The 24 planetary hours for a date and place') and explains the calculation in enough detail to distinguish it from generic time tools. It explicitly names the sibling tools it must not be confused with, asterwise_get_hora and asterwise_get_choghadiya, and gives their differentiating features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a WORKFLOW section stating the tool is standalone and should be followed by asterwise_get_western_void_of_course_moon. The DO NOT CONFUSE WITH section names two alternatives and explains the exact difference, leaving no inference required about when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_planetary_returnWestern Planetary ReturnRead-onlyIdempotentInspect
Next return chart for any planet after a given date. Finds the exact moment the specified planet returns to its natal tropical longitude and builds a complete Western natal chart for that moment at the birth location.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: None.
INPUT CONTRACT: birth — WesternBirthData. planet — one of Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto. after_date (optional YYYY-MM-DD) — defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_solar_return — Sun-only shortcut. asterwise_get_western_lunar_return — Moon-only shortcut.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-planetary-return/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| planet | Yes | Planet whose return to compute, e.g. 'Jupiter' or 'Saturn'. | |
| after_date | No | Find the first return after this date, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_profectionsAnnual ProfectionsARead-onlyIdempotentInspect
Annual profections for a birth chart and a date: the activated whole-sign house, its sign and the lord of the year. Also gives where the year lord sits natally and the next twelve profection years. Rule: the Ascendant sign is the 1st house at age 0 and the activated sign moves one sign forward every birthday, so at age N the house is (N mod 12) + 1.
WORKFLOW: BEFORE: asterwise_get_western_natal — see the Ascendant and the year lord's placement. AFTER: asterwise_get_western_transits_monthly — transits to the year lord.
INPUT CONTRACT: birth — WesternBirthData (date, time, lat, lon, timezone, house_system). time is required. target_date (optional YYYY-MM-DD) — date to profect to; defaults to today (UTC).
DO NOT CONFUSE WITH: asterwise_get_dasha — Vedic Vimshottari periods, a different time-lord system. asterwise_get_western_solar_return — the chart of the birthday moment, not the year lord.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-profections/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| target_date | No | Date in YYYY-MM-DD format. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds the profection calculation rule, required birth time, default target_date as today (UTC), output scope up to twelve profection years, and a pointer to the full error contract. It stops short of operational details like rate limits or auth, so 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the purpose, then uses clear WORKFLOW, INPUT CONTRACT, and DO NOT CONFUSE WITH sections. Every sentence adds routing or usage value; the rule formula is compact and explains the output logic without bloat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the description need not detail return values, yet it still covers the key outputs and the input contract. Combined with workflow, sibling disambiguation, and an error-contract link, it is complete enough for an agent to invoke correctly without opening the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a meaningful semantic detail not in the schema: target_date defaults to today (UTC) rather than null. It also reiterates required birth time, but most parameter format details remain in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Annual profections for a birth chart and a date') and enumerates the outputs: activated whole-sign house, its sign, lord of the year, natal placement of the year lord, and next twelve profection years. It also names sibling tools it is not, clearly distinguishing it from dasha and solar return.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives BEFORE (asterwise_get_western_natal) and AFTER (asterwise_get_western_transits_monthly) workflow steps, and a DO NOT CONFUSE WITH section naming two alternatives with reasons. The input contract adds when the birth time is required and how target_date defaults.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_secondary_progressionsWestern Secondary ProgressionsRead-onlyIdempotentInspect
Secondary progressed chart using the day-for-a-year method. Each day after birth symbolises one year of life (1 ephemeris day = 1 tropical year = 365.2421904 days). Returns all 10 progressed planet positions, progressed Ascendant and MC, and the solar arc.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: asterwise_get_western_solar_arc — compare uniform arc vs individual motion.
INPUT CONTRACT: birth — WesternBirthData. target_date (optional YYYY-MM-DD) — the date to progress to. Defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_solar_arc — all planets move by one uniform arc. asterwise_get_western_transits_daily — real-time sky, not symbolic progression.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-secondary-progressions/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| target_date | No | Date to progress the chart to, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_significationsWestern Significations (Lilly)ARead-onlyIdempotentInspect
What each house and planet signifies in William Lilly's Christian Astrology (1647), as a fixed list with stable ids: the twelve houses (pp. 50-56) and the seven planets (pp. 57-83: kinds of people, professions, manners when well and ill dignified).
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_daily_factors — factors cite these ids.
INPUT CONTRACT: No inputs beyond response_format.
DO NOT CONFUSE WITH: asterwise_get_vedic_significations — the BPHS list for the Vedic track.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-significations/
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real context beyond that: the content is a fixed list with stable ids (relevant for downstream referencing), exact coverage by page range, and it is stateless with no inputs. It does not discuss rate limits or error behavior in-line, deferring to the docs URL, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the substantive scope first, then labeled blocks (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) that are fast to scan. The trailing docs URL is mildly redundant given an output schema exists, but the whole description is dense and nearly waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-argument, read-only reference lookup with an output schema, everything an agent needs is present: content scope, stable-id behavior, downstream relationship, and sibling disambiguation. No gaps that would cause a wrong tool selection or misuse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single response_format enum is fully documented in the schema, so the baseline is 3. The description's 'INPUT CONTRACT: No inputs beyond response_format' restates the schema rather than adding meaning such as when json is preferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('what each house and planet signifies') and pins the exact source and scope (William Lilly's Christian Astrology 1647, twelve houses pp. 50-56, seven planets pp. 57-83). It distinguishes itself from the closest sibling by naming asterwise_get_vedic_significations as the Vedic-track alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit workflow block states there is no BEFORE dependency (standalone) and identifies the downstream consumer, asterwise_get_western_daily_factors, whose factors cite these ids. A dedicated 'DO NOT CONFUSE WITH' line names the alternative tool, giving both when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_solar_arcWestern Solar ArcRead-onlyIdempotentInspect
Western Solar Arc Directions for a target date: the solar arc (progressed Sun minus natal Sun) is added to every natal planet and angle. It is approximately 1° per year; unlike secondary progressions, all planets advance at the same rate.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: None.
INPUT CONTRACT: birth — WesternBirthData. target_date (optional YYYY-MM-DD) — defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_secondary_progressions — each planet moves at its own rate. asterwise_get_western_transits_daily — real-time transits, not arc directions.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-solar-arc/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| target_date | No | Date to direct the chart to, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_solar_returnWestern Solar ReturnRead-onlyIdempotentInspect
Western solar return chart for a given year, cast for the exact moment the Sun returns to its natal tropical longitude. The chart is a complete Western natal chart for that moment at the birth location. Provide the year as an integer (e.g. 2026).
WORKFLOW: BEFORE: asterwise_get_western_natal — understand natal chart before reading return. AFTER: None.
INPUT CONTRACT: birth — WesternBirthData. house_system ignored (chart uses return computation defaults). year (int) — calendar year of the return (e.g. 2026), not age.
DO NOT CONFUSE WITH: asterwise_get_western_lunar_return — Moon return, ~monthly. asterwise_get_varshaphal — Vedic Tajika solar return — different system.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-solar-return/
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Four-digit calendar year, e.g. 2026. | |
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_synastryWestern SynastryARead-onlyIdempotentInspect
Aspect grid between two natal charts using the tropical zodiac. Returns all inter-chart aspects using standard inter-chart orbs. Useful for relationship compatibility analysis.
WORKFLOW: BEFORE: asterwise_get_western_natal per person — understand charts individually first. AFTER: asterwise_get_western_composite — midpoint chart for the relationship itself.
INPUT CONTRACT: person1, person2 — each WesternBirthData (date, time, lat, lon, timezone). house_system ignored for synastry payload.
DO NOT CONFUSE WITH: asterwise_get_western_composite — one merged midpoint chart vs synastry (two charts overlaid). asterwise_get_western_compatibility — numeric 0–100 score vs raw aspects.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-synastry/
| Name | Required | Description | Default |
|---|---|---|---|
| person1 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| person2 | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations cover read-only, idempotent, and non-destructive behavior. The description adds meaningful behavioral details beyond annotations, including that standard inter-chart orbs are used, house_system is ignored for synastry, and response_format controls output. It does not mention rate limits or error cases, but those are not required given the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, using short labeled sections for workflow, input contract, and disambiguation. The DO NOT CONFUSE section is especially efficient at preventing misuse. The full output contract link is a reasonable addition rather than unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for agent selection and invocation, including output format, ignored parameters, and relationship to sibling tools. Since the context indicates an output schema exists and a full output/error contract link is provided, the description does not need to enumerate all return fields or error codes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions for all parameters. The description adds important semantic details such as 'house_system ignored for synastry payload' and explains that person1 and person2 are WesternBirthData objects, which helps agents understand which nested fields are relevant.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it computes an aspect grid between two natal charts using the tropical zodiac and returns inter-chart aspects. The 'DO NOT CONFUSE WITH' section explicitly distinguishes it from composite charts and numeric compatibility scores, so an agent can select the correct tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives useful context for when to use the tool, such as 'Useful for relationship compatibility analysis', and provides a WORKFLOW section telling agents to fetch individual natal charts first and use composite charts afterward. It also clarifies that it returns raw aspects unlike the numeric compatibility tool, though it does not explicitly state 'use this instead of X when Y'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_transits_dailyWestern Daily TransitsRead-onlyIdempotentInspect
Current sky positions vs natal chart for a single day. Returns all 10 planets with tropical longitudes and active aspects to natal positions using transit orbs: major 3°, sextile 2°, minor 1°. Provide start_date for a specific day; defaults to today.
WORKFLOW: BEFORE: asterwise_get_western_natal — establish natal chart first. AFTER: asterwise_get_western_transits_weekly — for week view.
INPUT CONTRACT: birth — WesternBirthData (date, time, lat, lon, timezone, house_system). house_system picks the natal houses used for natal_house (default placidus). start_date (optional YYYY-MM-DD) — defaults to today. snapshot_time (optional HH:MM) and snapshot_timezone (IANA) read each day's sky at the user's own clock time instead of 12:00 UTC; data.snapshot_utc says which instant was used.
DO NOT CONFUSE WITH: asterwise_get_western_transits_weekly — 7 days vs 1 day. asterwise_get_western_transits_monthly — 30-day window vs single day.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-transits-daily/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| start_date | No | Day to compute transits for, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_transits_monthlyWestern Monthly TransitsRead-onlyIdempotentInspect
30-day transit window vs natal chart. Returns day-by-day transit snapshots plus peak aspects (active 10+ days in the window). Use start_date to set the month start; defaults to today.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: None.
INPUT CONTRACT: birth — WesternBirthData. house_system picks the natal houses used for natal_house on each transiting planet (default placidus). start_date (optional YYYY-MM-DD) — month start; defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_transits_daily — 1 day. asterwise_get_western_transits_weekly — 7 days.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-transits-monthly/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| start_date | No | First day of the 30-day window, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_transits_weeklyWestern Weekly TransitsRead-onlyIdempotentInspect
7-day transit window vs natal chart. Returns day-by-day transit snapshots plus peak aspects (active 4+ days in the window). Use start_date to set the week start; defaults to today.
WORKFLOW: BEFORE: asterwise_get_western_natal. AFTER: asterwise_get_western_transits_monthly — for full month.
INPUT CONTRACT: birth — WesternBirthData. house_system picks the natal houses used for natal_house on each transiting planet (default placidus). start_date (optional YYYY-MM-DD) — week start; defaults to today.
DO NOT CONFUSE WITH: asterwise_get_western_transits_daily — single day. asterwise_get_western_transits_monthly — 30 days vs 7.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-transits-weekly/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for Western astrology tools (tropical zodiac). | |
| start_date | No | First day of the 7-day window, YYYY-MM-DD. Defaults to today (UTC). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_western_void_of_course_moonVoid-of-Course MoonARead-onlyIdempotentInspect
Lists void-of-course Moon periods in a date range (UTC), each with start, end, duration, the Moon's sign, the next sign and the last exact aspect. Rule: traditional — the Moon is void from its last exact Ptolemaic aspect (conjunction, sextile, square, trine, opposition) to the Sun, Mercury, Venus, Mars, Jupiter or Saturn until it enters the next sign (Lilly, Christian Astrology 1647, p. 112). Outer planets are not counted.
WORKFLOW: BEFORE: None — standalone. AFTER: asterwise_get_western_planetary_hours — pick an hour inside a non-void window.
INPUT CONTRACT: from_date (string YYYY-MM-DD, UTC) — first day of the range. to_date (string YYYY-MM-DD, UTC, inclusive) — last day; at most 92 days after from_date.
DO NOT CONFUSE WITH: asterwise_get_western_moon_phase — phase (new/full), not void periods. asterwise_get_transits — sign ingresses for all planets, no aspects.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-void-of-course-moon/
| Name | Required | Description | Default |
|---|---|---|---|
| to_date | Yes | End of the date range, YYYY-MM-DD (inclusive). | |
| from_date | Yes | Start of the date range, YYYY-MM-DD (inclusive). | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, idempotent, non-destructive profile, so the safety burden is lifted. The description adds real behavioral context beyond that: the 92-day maximum range, UTC interpretation, and the exact astrological rule governing inclusions. It does not describe output shape, but an output schema exists to cover that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then cleanly sectioned into workflow, input contract, and disambiguation. Every block earns its place, though the trailing external docs link is a mild dependency and the Lilly citation is slightly ornamental.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given annotations covering safety, a full output schema, and a 100%-covered input schema, the description supplies everything else an agent needs: what the tool computes, the rule behind it, range limits, and sibling disambiguation. Nothing required for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by disclosing the 92-day upper bound on to_date and its inclusive semantics, constraints the schema does not state. It does not explain response_format, but that parameter is self-describing with an enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists void-of-course Moon periods in a date range') and immediately defines the term with the precise traditional rule, so an agent knows exactly what constitutes a void period. It also names the sibling tools it is not (moon phase, transits), removing ambiguity in a crowded namespace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit WORKFLOW block (standalone BEFORE; chain into get_western_planetary_hours to pick an hour inside a non-void window) and a DO NOT CONFUSE WITH section naming two siblings and why each differs. This is exactly the routing information an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_western_zodiac_compatibilityWestern Zodiac CompatibilityARead-onlyIdempotentInspect
Sign-to-sign compatibility without birth data. Based on element and modality affinity. Fast — no ephemeris calculation required.
WORKFLOW: BEFORE: None — no birth data needed. AFTER: asterwise_get_western_compatibility — when full charts are available.
INPUT CONTRACT: sign1, sign2 — English zodiac names (Aries … Pisces).
DO NOT CONFUSE WITH: asterwise_get_western_compatibility — requires full birth data, more accurate. asterwise_get_western_synastry — aspect geometry between two full charts.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-western-zodiac-compatibility/
| Name | Required | Description | Default |
|---|---|---|---|
| sign1 | Yes | First zodiac sign, e.g. 'Aries'. | |
| sign2 | Yes | Second zodiac sign, e.g. 'Libra'. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. The description adds useful context beyond that: no ephemeris calculation, fast execution, basis in element/modality affinity, and a link to the full output/error contract. It would only reach 5 by describing error cases inline rather than referencing a docs URL.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and uses clear labeled sections (WORKFLOW, INPUT CONTRACT, DO NOT CONFUSE WITH) that make scanning easy. Every section earns its place; no filler or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety/idempotency, the description supplies the missing behavioral and routing context: prerequisites, alternatives, underlying logic, and a pointer to the full contract. Nothing an agent needs to select and call this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the schema already documents sign1, sign2, and response_format with examples and defaults. The description's INPUT CONTRACT mostly restates parameter names without adding semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource ('sign-to-sign compatibility') and methodology ('element and modality affinity'), and immediately distinguishes it from similar-sounding siblings. It names exactly what this tool is not: asterwise_get_western_compatibility and asterwise_get_western_synastry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit WORKFLOW and DO NOT CONFUSE sections tell the agent when to use this tool vs alternatives: no birth data needed, use asterwise_get_western_compatibility when full charts are available, and use synastry for aspect geometry. This is textbook-level routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asterwise_get_yogasYogasRead-onlyIdempotentInspect
Evaluates the natal chart for named classical yogas. Each hit returns its category, formation text, the classical texts it is drawn from (classical_sources), a modern summary, and keywords.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — same birth tuple should be understood before interpreting yoga names. AFTER: asterwise_get_doshas — complementary affliction scan on the same chart.
INPUT CONTRACT: BirthData follows the global contract. Unknown birth time: omit time (a sunrise chart is cast and birth_time_provided=false); never pass time='00:00' for unknown, which is read as midnight. House-based yogas are then approximate.
DO NOT CONFUSE WITH: asterwise_get_natal_chart — supplies graha_drishti and base chart rows, not the yoga catalogue. asterwise_get_panchanga — Panchanga yoga (Sun+Moon sum) is unrelated to these natal yogas.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-yogas/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
asterwise_get_yogini_dashaYogini DashaARead-onlyIdempotentInspect
Computes the eight-Yogini, 36-year Yogini Dasha cycle with two-level period trees and DD/MM/YYYY boundaries from birth data.
WORKFLOW: BEFORE: RECOMMENDED — asterwise_get_natal_chart — establishes birth context for interpreting Yogini lords. AFTER: asterwise_get_dasha — optional Vimshottari comparison for the same native.
INPUT CONTRACT: Tree lives at data.periods.root[] — agents must not expect a top-level data.periods array. Calendar strings in periods use DD/MM/YYYY. BirthData follows the global contract.
DO NOT CONFUSE WITH: asterwise_get_dasha — Vimshottari planet periods with data.periods[] and optional levels 1–5, not Yogini names. asterwise_get_ashtottari_dasha — 108-year system with data.periods.root[] but planet-based rows, not Yoginis.
Full output and error contract: https://docs.asterwise.com/mcp/tools/get-yogini-dasha/
| Name | Required | Description | Default |
|---|---|---|---|
| birth | Yes | Birth data for a single person. | |
| response_format | No | Output format: 'markdown' (default) for a readable report, or 'json' for the raw structured payload. | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the call read-only, idempotent, and non-destructive, so the description only needs to clarify what the computation returns. It does so by noting the period-tree location (data.periods.root[]), output date format, and a link to the full output/error contract, with no contradicting side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into focused sections (main computation, workflow, input contract, and do-not-confuse) and all sentences carry useful information. It is slightly longer than necessary but remains scannable and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the key output shape (two-level tree, data.periods.root[], DD/MM/YYYY strings) and provides a link to the full contract, which is sufficient when combined with the detailed input schema and presence of an output schema. It does not need to enumerate every return field because the full contract is referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema itself provides complete descriptions for the birth object, coordinates, date/time, ayanamsa, timezone, and response_format, so the description adds little parameter-level guidance. The 'BirthData follows the global contract' note is generic but not misleading; output-related notes do not improve parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states that this tool computes the eight-Yogini, 36-year Yogini Dasha cycle and describes the two-level period-tree output and DD/MM/YYYY boundary format. It also explicitly distinguishes itself from the Vimshottari and Ashtottari dasha siblings, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete workflow guidance ('BEFORE: recommended asterwise_get_natal_chart', 'AFTER: optional asterwise_get_dasha') and explicitly warns against confusing this tool with asterwise_get_dasha (Vimshottari) and asterwise_get_ashtottari_dasha (108-year system). This tells an agent when to use this tool and which sibling to choose otherwise.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- Added
asterwise_get_reference_charts - Added
asterwise_get_tarabala - Added
asterwise_get_vedic_daily_factors - Added
asterwise_get_vedic_events - Added
asterwise_get_vedic_significations - Added
asterwise_get_western_daily_factors - Added
asterwise_get_western_day - Added
asterwise_get_western_events - Added
asterwise_get_western_horary - Added
asterwise_get_western_significations
4 tool updates
- Added
asterwise_get_western_eclipses - Added
asterwise_get_western_planetary_hours - Added
asterwise_get_western_profections - Added
asterwise_get_western_void_of_course_moon
1 tool update
- Changed
asterwise_get_dasha_transits3 fields changed- added
Input schema / properties / target_dateAdded value: +{ + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Date in YYYY-MM-DD format." +} - added
Input schema / properties / target_timeAdded value: +{ + "anyOf": [ + { + "pattern": "^\\d{2}:\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "HH:MM on target_date. Defaults to 12:00." +} - added
Input schema / properties / target_timezoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "IANA zone for target_date and target_time. Defaults to Asia/Kolkata." +}
22 tool updates
- Changed
asterwise_get_balance_number1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_chaldean_numerology1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_expression_number1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_gochar1 field changed- changed
Input schema / properties / target_date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date to compute transits for, YYYY-MM-DD (at 12:00 India time). Defaults to today in India (Asia/Kolkata)."
- Changed
asterwise_get_karmic_lessons1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_lucky_numbers1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_maturity_number1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_nakshatra_prediction1 field changed- changed
Input schema / properties / target_date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date of the prediction, YYYY-MM-DD. Defaults to today in the birth time zone."
- Changed
asterwise_get_name_correction1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_numerology_compatibility2 fields changed- changed
Input schema / properties / person1_name / descriptionPrevious value: -"First person's full name."New value: +"First person's full name. The API requires it, but it does not change the score: compatibility compares the two Life Path numbers from the birth dates." - changed
Input schema / properties / person2_name / descriptionPrevious value: -"Second person's full name."New value: +"Second person's full name. The API requires it, but it does not change the score: compatibility compares the two Life Path numbers from the birth dates."
- Changed
asterwise_get_numerology_profile1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_personal_cycles3 fields changed- changed
Input schema / properties / day / descriptionPrevious value: -"Day of the month 1-31. Defaults to today when omitted."New value: +"Target day of the month 1-31. Personal Day is returned only when day is given; omit it to get Personal Year and Personal Month only." - changed
Input schema / properties / month / descriptionPrevious value: -"Month number 1-12. Defaults to the current month when omitted."New value: +"Target month 1-12. Defaults to the current month (UTC)." - changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit target year, e.g. 2026. Defaults to the current year (UTC)."
- Changed
asterwise_get_personal_year1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Not used: the personal year depends only on the birth date. Omit it; it is accepted only so older calls keep working."
- Changed
asterwise_get_personality_number1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_soul_urge_number1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Person's full name as commonly written; its letters are converted to numerology values."
- Changed
asterwise_get_western_lunar_return1 field changed- changed
Input schema / properties / after_date / descriptionPrevious value: -"Find the first occurrence after this date, YYYY-MM-DD. Defaults to today when omitted."New value: +"Find the first lunar return after this date, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_planetary_return1 field changed- changed
Input schema / properties / after_date / descriptionPrevious value: -"Find the first occurrence after this date, YYYY-MM-DD. Defaults to today when omitted."New value: +"Find the first return after this date, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_secondary_progressions1 field changed- changed
Input schema / properties / target_date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date to progress the chart to, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_solar_arc1 field changed- changed
Input schema / properties / target_date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date to direct the chart to, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_transits_daily1 field changed- changed
Input schema / properties / start_date / descriptionPrevious value: -"Start of the window, YYYY-MM-DD. Defaults to today when omitted."New value: +"Day to compute transits for, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_transits_monthly1 field changed- changed
Input schema / properties / start_date / descriptionPrevious value: -"Start of the window, YYYY-MM-DD. Defaults to today when omitted."New value: +"First day of the 30-day window, YYYY-MM-DD. Defaults to today (UTC)."
- Changed
asterwise_get_western_transits_weekly1 field changed- changed
Input schema / properties / start_date / descriptionPrevious value: -"Start of the window, YYYY-MM-DD. Defaults to today when omitted."New value: +"First day of the 7-day window, YYYY-MM-DD. Defaults to today (UTC)."
1 tool update
- Changed
asterwise_get_dream_symbols2 fields changed- changed
Input schema / properties / category / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "animals", + "nature", + "people", + "places", + "objects", + "actions", + "body", + "abstract" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / category / descriptionPrevious value: -"Symbol category to filter by, e.g. 'animals' or 'water'. Omit for all."New value: +"One of the 8 categories; omit for all 500 symbols."
1 tool update
- Changed
asterwise_get_char_dasha1 field changed- changed
Input schema / properties / cycles / descriptionPrevious value: -"Char Dasha cycles to return, 1-3 (default 1). Cycle 2 runs the same signs for 12 minus their first-cycle years; cycle 3 repeats cycle 1 (K.N. Rao)."New value: +"Char Dasha cycles to return, 1-3 (default 1). Every further cycle repeats the first cycle's signs, order and years (K.N. Rao)."
11 tool updates
- Changed
asterwise_check_mobile_number1 field changed- added
Input schema / properties / countryAdded value: +{ + "anyOf": [ + { + "pattern": "^[A-Za-z]{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Country of the number as ISO 3166 alpha-2, e.g. 'IN', 'US', 'CN'. Used only when the number has no '+'/'00' prefix: it is then read as dialled in that country and the country code is left out of the sum." +}
- Changed
asterwise_get_angel_number_today2 fields changed- added
Input schema / properties / dateAdded value: +{ + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Date to compute the angel number for, YYYY-MM-DD. Overrides timezone. Omit for today." +} - added
Input schema / properties / timezoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "IANA time zone whose current date counts as today, e.g. 'Asia/Kolkata'. Defaults to UTC; ignored when date is given." +}
- Changed
asterwise_get_ashtottari_dasha2 fields changed- changed
Input schema / properties / levels / defaultPrevious value: -3New value: +2 - changed
Input schema / properties / levels / descriptionPrevious value: -"Depth of the dasha tree: 1 returns major periods only, each extra level adds the next sub-period layer."New value: +"Depth of the Ashtottari tree, 1-5: 1 = Mahadasha only, 2 adds Antardasha (default), 3 Pratyantar, 4 Sookshma, 5 Prana."
- Changed
asterwise_get_char_dasha1 field changed- added
Input schema / properties / cyclesAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Char Dasha cycles to return, 1-3 (default 1). Cycle 2 runs the same signs for 12 minus their first-cycle years; cycle 3 repeats cycle 1 (K.N. Rao)." +}
- Changed
asterwise_get_kp_ruling_planets3 fields changed- added
Input schema / properties / target_dateAdded value: +{ + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Local date of the moment to judge, YYYY-MM-DD. Without target_time, 12:00 local is used. Omit both date and time for the current instant." +} - added
Input schema / properties / target_timeAdded value: +{ + "anyOf": [ + { + "pattern": "^\\d{2}:\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Local time of the moment to judge, HH:MM (24-hour). Without target_date, that time today. Omit both date and time for the current instant." +} - added
Input schema / properties / target_timezoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "IANA time zone for target_date and target_time, e.g. 'Asia/Kolkata'. Defaults to the zone at lat/lon." +}
- Changed
asterwise_get_tarot_card_of_the_day2 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date to get the card for, YYYY-MM-DD. Defaults to today's date in UTC, or in timezone. Overrides timezone." - added
Input schema / properties / timezoneAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "IANA time zone (or ±HH:MM) whose current date counts as today, e.g. 'Asia/Kolkata'. Defaults to UTC; ignored when date is given." +}
- Changed
asterwise_get_varshaphal1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year of the solar return to compute, four digits, e.g. 2026."New value: +"Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year."
- Changed
asterwise_get_varshaphal_harsha_bala1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026."New value: +"Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year."
- Changed
asterwise_get_varshaphal_saham1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026."New value: +"Varshaphal year, four digits, e.g. 2026: the solar return nearest the birthday in that year (in UTC it can fall a day either side, or on 31 Dec for a 1 Jan birthday). Must not be before the birth year."
- Changed
asterwise_get_western_moon_calendar2 fields changed- changed
Input schema / properties / month / descriptionPrevious value: -"Month number 1-12. Defaults to the current month when omitted."New value: +"Month number 1-12. Defaults to the current month (UTC)." - changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit year, 1-3000. Defaults to the current year (UTC)."
- Changed
asterwise_get_western_moon_phase1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date for the moon phase, YYYY-MM-DD. Defaults to today."New value: +"Date for the moon phase, YYYY-MM-DD (years 1-3000). Defaults to today (UTC)."
2 tool updates
- Changed
asterwise_check_mobile_number2 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working." - changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working."
- Changed
asterwise_check_vehicle_number2 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working." - changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Not used: the analysis depends only on the digits. Omit it; it is accepted only so older calls keep working."
15 tool updates
- Changed
asterwise_get_char_dasha1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_crystal_recommendations_natal1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_dasha_transits1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_gemstone_recommendations1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_ghat_chakra1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_gochar1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_kp_chart1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_kp_significators1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_nakshatra_prediction1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_pitra_dosha1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_remedies1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_special_ascendants1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_varshaphal1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_varshaphal_harsha_bala1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
- Changed
asterwise_get_varshaphal_saham1 field changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream."New value: +"Birth data for tools that need the exact birth time (no sunrise fallback)."
17 tool updates
- Changed
asterwise_get_business_name_analysis5 fields changed- added
Input schema / properties / date / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / date / defaultAdded value: +null - changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format."New value: +"Not used: the analysis depends only on the business name. Omit it; it is accepted only so older calls keep working." - removed
Input schema / properties / date / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "business_name", - "date" -]New value: +[ + "business_name" +]
- Changed
asterwise_get_char_dasha7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_crystal_recommendations_natal7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_dasha_transits7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_gemstone_recommendations7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_ghat_chakra7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_gochar7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_kp_chart7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_kp_significators7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_nakshatra_prediction7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_pitra_dosha7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_prashna_chart3 fields changed- added
Input schema / properties / prashna / properties / date / descriptionAdded value: +"Date the question was asked, YYYY-MM-DD, local to `timezone`." - added
Input schema / properties / prashna / properties / time / descriptionAdded value: +"Time the question was asked, HH:MM (24h), local to `timezone`." - added
Input schema / properties / prashna / properties / timezoneAdded value: +{ + "default": "Asia/Kolkata", + "description": "IANA timezone of date and time, e.g. 'Asia/Kolkata', 'Europe/London'. Default: Asia/Kolkata", + "type": "string" +}
- Changed
asterwise_get_remedies7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_special_ascendants7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_varshaphal7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_varshaphal_harsha_bala7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
- Changed
asterwise_get_varshaphal_saham7 fields changed- changed
Input schema / properties / birth / descriptionPrevious value: -"Birth data for a single person."New value: +"Birth data for tools that need the exact birth time.\n\nTheir API endpoints have no sunrise fallback and reject a request without\na time, so the time is required here instead of failing upstream." - removed
Input schema / properties / birth / properties / time / anyOfRemoved value: -[ - { - "pattern": "^\\d{2}:\\d{2}$", - "type": "string" - }, - { - "type": "null" - } -] - removed
Input schema / properties / birth / properties / time / defaultRemoved value: -null - changed
Input schema / properties / birth / properties / time / descriptionPrevious value: -"Birth time HH:MM (24h), e.g. '06:45'. Omit if unknown (a sunrise chart is used and birth_time_provided=false); never pass '00:00' for unknown."New value: +"Birth time HH:MM (24h), e.g. '06:45'. Required: this tool has no sunrise fallback. If the user doesn't know it, say so rather than guessing; never pass '00:00' for unknown." - added
Input schema / properties / birth / properties / time / patternAdded value: +"^\\d{2}:\\d{2}$" - added
Input schema / properties / birth / properties / time / typeAdded value: +"string" - changed
Input schema / properties / birth / requiredPrevious value: -[ - "date", - "lat", - "lon" -]New value: +[ + "date", + "time", + "lat", + "lon" +]
3 tool updates
- Changed
asterwise_check_mobile_number8 fields changed- added
Input schema / properties / date / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / date / defaultAdded value: +null - changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format."New value: +"Date in YYYY-MM-DD format. Defaults to today when omitted." - removed
Input schema / properties / date / typeRemoved value: -"string" - added
Input schema / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / name / defaultAdded value: +null - removed
Input schema / properties / name / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "mobile_number", - "name", - "date" -]New value: +[ + "mobile_number" +]
- Changed
asterwise_check_vehicle_number8 fields changed- added
Input schema / properties / date / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / date / defaultAdded value: +null - changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format."New value: +"Date in YYYY-MM-DD format. Defaults to today when omitted." - removed
Input schema / properties / date / typeRemoved value: -"string" - added
Input schema / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / name / defaultAdded value: +null - removed
Input schema / properties / name / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "vehicle_number", - "name", - "date" -]New value: +[ + "vehicle_number" +]
- Changed
asterwise_get_personal_year4 fields changed- added
Input schema / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / name / defaultAdded value: +null - removed
Input schema / properties / name / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "name", - "date" -]New value: +[ + "date" +]
5 tool updates
- Added
asterwise_geocode - Changed
asterwise_get_festival_calendar14 fields changed- added
Input schema / properties / categoriesAdded value: +{ + "anyOf": [ + { + "items": { + "enum": [ + "festival", + "vrat", + "sankranti", + "eclipse", + "period" + ], + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Which entries to return: festival (default, about 50 named festivals), vrat (Ekadashi, Pradosh, Sankashti, Purnima, Amavasya), sankranti, eclipse, period (Adhik Maas, Pitru Paksha, Chaturmas, Navratri, Holashtak, Kharmas)." +} - added
Input schema / properties / latAdded value: +{ + "description": "Latitude in decimal degrees, north positive.", + "maximum": 90, + "minimum": -90, + "type": "number" +} - removed
Input schema / properties / latitudeRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Latitude in decimal degrees, north positive (e.g. 13.08)." -} - removed
Input schema / properties / locationRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Place name, e.g. 'Chennai, India'. Alternative to giving latitude, longitude and timezone." -} - added
Input schema / properties / lonAdded value: +{ + "description": "Longitude in decimal degrees, east positive.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - removed
Input schema / properties / longitudeRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Longitude in decimal degrees, east positive (e.g. 80.27)." -} - removed
Input schema / properties / timezone / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / timezone / defaultPrevious value: -nullNew value: +"Asia/Kolkata" - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA time zone name, e.g. 'Asia/Kolkata'."New value: +"IANA timezone of the location." - added
Input schema / properties / timezone / typeAdded value: +"string" - changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026."New value: +"Calendar year, e.g. 2026." - added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900 - changed
Input schema / requiredPrevious value: -[ - "year" -]New value: +[ + "year", + "lat", + "lon" +]
- Changed
asterwise_get_muhurta6 fields changed- removed
Input schema / properties / activityRemoved value: -{ - "description": "Activity to find an auspicious time for, e.g. 'marriage', 'travel', 'business opening'.", - "type": "string" -} - removed
Input schema / properties / from_dateRemoved value: -{ - "description": "Start of the search window for auspicious times, YYYY-MM-DD.", - "type": "string" -} - removed
Input schema / properties / locationRemoved value: -{ - "additionalProperties": false, - "description": "For tools that need location but not birth time.", - "properties": { - "date": { - "description": "Date in YYYY-MM-DD format", - "pattern": "^\\d{4}-\\d{2}-\\d{2}$", - "type": "string" - }, - "lat": { - "description": "Latitude in decimal degrees", - "maximum": 90, - "minimum": -90, - "type": "number" - }, - "lon": { - "description": "Longitude in decimal degrees", - "maximum": 180, - "minimum": -180, - "type": "number" - }, - "response_format": { - "default": "markdown", - "enum": [ - "markdown", - "json" - ], - "type": "string" - }, - "timezone": { - "default": "Asia/Kolkata", - "description": "IANA timezone for the location.", - "type": "string" - } - }, - "required": [ - "date", - "lat", - "lon" - ], - "type": "object" -} - added
Input schema / properties / requestAdded value: +{ + "additionalProperties": false, + "description": "Muhurta search parameters.", + "properties": { + "activity": { + "description": "Activity to find a muhurta for.", + "enum": [ + "marriage", + "griha_pravesh", + "business", + "travel", + "naming_ceremony", + "vehicle_purchase", + "property_purchase", + "mundan", + "annaprashan", + "upanayana", + "vidyarambha" + ], + "type": "string" + }, + "ayanamsa": { + "default": "lahiri", + "description": "Ayanamsa for nakshatra and lagna.", + "enum": [ + "lahiri", + "kp", + "raman", + "tropical" + ], + "type": "string" + }, + "from_date": { + "description": "Start of the search, YYYY-MM-DD (inclusive).", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "lat": { + "description": "Latitude in decimal degrees, north positive.", + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lon": { + "description": "Longitude in decimal degrees, east positive.", + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "max_windows_per_day": { + "default": 1, + "description": "At most this many windows per day, so results spread across dates.", + "maximum": 10, + "minimum": 1, + "type": "integer" + }, + "participants": { + "anyOf": [ + { + "items": { + "additionalProperties": false, + "description": "A person whose Tarabala and Chandrabala must be favourable (e.g. bride or groom).", + "properties": { + "birth_date": { + "anyOf": [ + { + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Birth date YYYY-MM-DD." + }, + "birth_lat": { + "anyOf": [ + { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Birth latitude." + }, + "birth_lon": { + "anyOf": [ + { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Birth longitude." + }, + "birth_time": { + "anyOf": [ + { + "pattern": "^\\d{2}:\\d{2}$", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Birth time HH:MM (24h)." + }, + "birth_timezone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "IANA timezone of the birth place." + }, + "label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name shown in the output, e.g. 'Bride'." + }, + "moon_rashi": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Janma rashi (Moon sign), e.g. 'Vrishabha' or 'Taurus'. Optional with nakshatra." + }, + "nakshatra": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Janma nakshatra name, e.g. 'Rohini'. Or give the birth fields instead." + } + }, + "type": "object" + }, + "maxItems": 2, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Up to two people; adds Tarabala and Chandrabala (Naidhana or the 8th-house Moon rule a moment out)." + }, + "response_format": { + "default": "markdown", + "enum": [ + "markdown", + "json" + ], + "type": "string" + }, + "timezone": { + "default": "Asia/Kolkata", + "description": "IANA timezone of the location.", + "type": "string" + }, + "to_date": { + "description": "End of the search, YYYY-MM-DD (inclusive), at most 366 days after from_date.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" + }, + "top_n": { + "default": 5, + "description": "Number of windows to return (1-50).", + "maximum": 50, + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "activity", + "from_date", + "to_date", + "lat", + "lon" + ], + "type": "object" +} - removed
Input schema / properties / to_dateRemoved value: -{ - "description": "End of the search window for auspicious times, YYYY-MM-DD.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "location", - "activity", - "from_date", - "to_date" -]New value: +[ + "request" +]
- Changed
asterwise_get_panchanga_calendar6 fields changed- added
Input schema / properties / calendar / properties / ayanamsaAdded value: +{ + "default": "lahiri", + "description": "Ayanamsa for nakshatra and yoga.", + "enum": [ + "lahiri", + "kp", + "raman", + "tropical" + ], + "type": "string" +} - added
Input schema / properties / calendar / properties / lat / descriptionAdded value: +"Latitude in decimal degrees, north positive." - added
Input schema / properties / calendar / properties / lon / descriptionAdded value: +"Longitude in decimal degrees, east positive." - added
Input schema / properties / calendar / properties / month / descriptionAdded value: +"Month number 1-12." - added
Input schema / properties / calendar / properties / timezoneAdded value: +{ + "default": "Asia/Kolkata", + "description": "IANA timezone of the location, e.g. 'America/New_York'. Default: Asia/Kolkata.", + "type": "string" +} - added
Input schema / properties / calendar / properties / year / descriptionAdded value: +"Calendar year, 1900-2100."
- Changed
asterwise_get_tamil_panchanga11 fields changed- added
Input schema / properties / date / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / latAdded value: +{ + "description": "Latitude in decimal degrees, north positive.", + "maximum": 90, + "minimum": -90, + "type": "number" +} - removed
Input schema / properties / latitudeRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Latitude in decimal degrees, north positive (e.g. 13.08)." -} - removed
Input schema / properties / locationRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Place name, e.g. 'Chennai, India'. Alternative to giving latitude, longitude and timezone." -} - added
Input schema / properties / lonAdded value: +{ + "description": "Longitude in decimal degrees, east positive.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - removed
Input schema / properties / longitudeRemoved value: -{ - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Longitude in decimal degrees, east positive (e.g. 80.27)." -} - removed
Input schema / properties / timezone / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - changed
Input schema / properties / timezone / defaultPrevious value: -nullNew value: +"Asia/Kolkata" - changed
Input schema / properties / timezone / descriptionPrevious value: -"IANA time zone name, e.g. 'Asia/Kolkata'."New value: +"IANA timezone of the location." - added
Input schema / properties / timezone / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "date" -]New value: +[ + "date", + "lat", + "lon" +]
18 tool updates
- Changed
asterwise_check_mobile_number1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_check_vehicle_number1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_angel_number_personal1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_business_name_analysis1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_chaldean_numerology1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_crystal1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Crystal slug or display name, e.g. 'amethyst', 'blue-sapphire', 'Cat's Eye Chrysoberyl'."
- Changed
asterwise_get_dream_symbol1 field changed- changed
Input schema / properties / name / descriptionPrevious value: -"Person's full name as commonly written; letters are converted to numerology values."New value: +"Dream symbol slug or display name, e.g. 'snake', 'eagle', 'childhood-home', 'lotus'."
- Changed
asterwise_get_festival_calendar1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit calendar year, e.g. 2026."
- Changed
asterwise_get_lo_shu_grid1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_lucky_numbers1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_maturity_number1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_name_correction1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_numerology_profile1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_personal_cycles1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_personal_year1 field changed- changed
Input schema / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. Defaults to today when omitted."New value: +"Date in YYYY-MM-DD format."
- Changed
asterwise_get_varshaphal_harsha_bala1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit calendar year, e.g. 2026."
- Changed
asterwise_get_varshaphal_saham1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit calendar year, e.g. 2026."
- Changed
asterwise_get_western_solar_return1 field changed- changed
Input schema / properties / year / descriptionPrevious value: -"Four-digit calendar year, e.g. 2026. Defaults to the current year when omitted."New value: +"Four-digit calendar year, e.g. 2026."
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs119 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.