Skip to main content
Glama

Server Details

Rider-Waite-Smith, Marseille and Lenormand: spreads, draws, card pictures and spread readings.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
96.8% over 26 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

C2.9/5.0

Scored across 86 tools

Disambiguation3/5

Tools are largely partitioned by deck (RWS/Marseille/Lenormand) and by spread, which keeps most of the set distinct. However, the 'Cursor-friendly' aliases (astroway_lnd_celtic_cross_lenormand, astroway_trwd_love_triangle, astroway_trwd_spiritual_path) duplicate existing endpoints under different names, and the cluster of single-card semantics (advice/clarify/outcome/timing/missing_info/decision) overlaps enough that selection is guesswork.

Naming Consistency4/5

The dominant pattern astroway_<group>_<action> (e.g. astroway_tarot_rider_waite_draw_celtic_cross) is applied consistently across the bulk of the surface and reads predictably. The deviations — abbreviated alias prefixes (astroway_lnd_*, astroway_trwd_*), plus standalone names like astroway_account_status and astroway_cost_estimate — are minor but break the pattern.

Tool Count2/5

86 tools is far beyond the practical 3-15 range and the surface is visibly inflated by exact-duplicate aliases and by very granular enumeration endpoints (suits, numbers, elements, courts, majors, minors, keywords) that could be collapsed with parameters. The domain is genuinely broad (3 decks + AI + MCP platform), but the count still reads as heavy rather than well-scoped.

Completeness5/5

Coverage is thorough for the stated domain: per-deck card listings, single-card lookups, reference slices (majors/minors/courts/suits/numbers/elements/keywords), spread definitions, and a wide range of draw types across three decks, plus AI interpretation, chat, and agent-platform endpoints. No obvious dead ends for tarot reading workflows.

Available Tools

86 tools
astroway_account_statusAccount StatusA
Read-onlyIdempotent
Inspect

Check current API key status: tier, credit balance, rate limits, monthly cycle reset. Run this BEFORE invoking expensive endpoints (Tier 4+ at 100+ credits, Tier 6/7 at 500-5000 credits) to confirm the user has budget. Returns plain-text human-readable summary.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds that it returns a 'plain-text human-readable summary' and clarifies the budget-checking purpose, providing useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three efficient sentences: purpose, usage guidance, and return format. Front-loaded with key information, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite lacking an output schema, the description specifies the return format (plain-text human-readable summary). For a simple status check tool, this is complete and sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has zero parameters, so schema coverage is 100%. Description does not need to explain parameters, and it adds value by hinting at the output format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Check' and the resource 'API key status' with specific attributes (tier, credit balance, rate limits, monthly cycle reset). It distinguishes itself from the many sibling astrology calculation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to run this tool BEFORE invoking expensive endpoints, providing credit thresholds (Tier 4+ at 100+ credits, Tier 6/7 at 500-5000 credits) to confirm budget.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_agent_toolsAgent tool definitionsA
Read-onlyIdempotent
Inspect

Tool definitions for an agent framework, generated from the live OpenAPI document, so the schema a model fills is the schema the endpoint validates. format=openai (default) returns { type, function } objects you can spread straight into a chat completion; format=anthropic returns { name, description, input_schema }. The objects carry nothing of ours: how to call each tool lives in a separate executors map keyed by tool name, because an unexpected key inside a vendor tool object is a 400 at their end.

[Group: Agent Platform] [Endpoint: GET /v1/agent/tools] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
qNoFree-text filter applied within the selection, matched against path, summary, description and group.
limitNoHow many tools to return. The ceiling is the OpenAI limit of 128 functions per request; models degrade well before it. Anything left out is counted in `totalMatched`.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
formatNoWhich vendor contract the tool objects follow. `openai` returns `{ type, function }`, `anthropic` returns `{ name, description, input_schema }`.openai
selectNoWhat to hand over: `starter` (the curated set, the default), `all`, `group:<tag>` such as `group:Vedic`, or `paths:/chart,/synastry` for an explicit list. An unknown path is named in `notes` rather than dropped.starter
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
notesNo
toolsNo
formatNo
selectNo
executorsNo
truncatedNo
totalMatchedNo
totalAvailableNo

TDQS

A3.5/5.0
Behavior4/5

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), yet the description adds genuine behavioral context beyond them: executors are kept out of the vendor objects because an unexpected key causes a 400 on the vendor side, and cost is flagged as not in the public credit manifest. That is real operational value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly three sentences, front-loaded with the purpose before the format and executor caveats. It is dense but each sentence carries information, though the format explanation partially duplicates the schema's own enum description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and full annotation coverage, the description need not explain return values, and it appropriately focuses on the vendor-shape contract and the executors/400 gotcha. It is nearly complete, with the only gap being sibling disambiguation rather than missing operational detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 in depth (limit ceiling rationale, select values, precision semantics). The description only restates format and its default, adding no parameter meaning the schema lacks. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool returns: tool definitions for an agent framework, generated from the live OpenAPI document. It is specific about the resource and the vendor-shape variants (openai vs anthropic objects). However, it never distinguishes this from the near-identical sibling astroway_mcp_tools_list, which an agent would plausibly confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative-naming guidance. The mention that openai objects 'spread straight into a chat completion' implies a use case, but the agent is left to infer when this endpoint is preferable to astroway_mcp_tools_list or the MCP tool-call streaming siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_ai_interpret_tarotTarot Spread ReadingB
Read-only
Inspect

AI reading of a tarot, Marseille or Lenormand spread: each position read in context, then a synthesis of the whole spread and one piece of advice. Takes card slugs or the drawn array of any draw response. Multi-language.

[Group: AI Interpretations] [Endpoint: POST /v1/interpret/tarot] [Required: cards] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
artNoCard art set for the images in the answer. GET /v1/tarot/decks lists them.
deckNorider-waite
cardsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
spreadNo
languageNo
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
deckNo
modelNo
adviceNo
spreadNo
languageNo
questionNo
positionsNo
synthesisNo
disclaimerNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/openWorldHint/destructiveHint, so the safety profile is covered. The description adds behavior those annotations cannot express: the cost (100 credits, Tier 4), the structure of what the AI returns, and multilingual output. It does not explain the non-idempotent nature of repeated AI readings, but the added cost and output detail is real value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The narrative is front-loaded in one dense sentence covering purpose, input flexibility and output shape, with the metadata block (group, endpoint, required, cost) compactly appended. No sentence is wasted; the only minor cost is that parameter detail is omitted rather than trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and cost plus required input are stated. However, for an 8-parameter tool at 38% schema coverage, an agent still lacks guidance on spread, question, art, fields and precision, making the definition only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 38%, so the description must carry more of the parameter burden. It covers the two most important ones implicitly (cards accepts slugs or a draw array; language = 'Multi-language'), but art, deck, spread, question, fields and precision get no mention at all, leaving six parameters explained only by terse or absent schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with a clear scope: an AI reading of a spread across three deck systems, with the output shape (per-position reading, synthesis, one piece of advice) spelled out. It doesn't explicitly distinguish itself from the deck-specific siblings astroway_tarot_marseille_interpret or astroway_tarot_rider_waite_interpret, which is the remaining gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Takes card slugs or the drawn array of any draw response' implies the intended workflow (call this after a draw tool) but never states that directly, and gives no guidance on when to prefer the deck-specific interpret siblings over this cross-deck tool. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_cost_estimateCost EstimateA
Read-onlyIdempotent
Inspect

Estimate the credit cost of one or more endpoints WITHOUT invoking them. Returns total + per-endpoint breakdown with tier annotations. Useful when planning multi-step workflows: estimate first, ask user confirmation, then invoke. Cache TTL 5 min.

NameRequiredDescriptionDefault
endpointsYesEndpoint paths to estimate, e.g. ["/chart", "/synastry", "/reports/natal"]. Leading slash optional.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety bar is low; the description still adds real value by clarifying that endpoints are NOT invoked and that results are cached with a 5-minute TTL. It also discloses the return shape (total + per-endpoint breakdown with tier annotations), which is meaningful since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core capability and the non-invocation guarantee, followed by workflow guidance and the cache note. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explains the return value, and the invocation-free and cache behaviors are covered. For a one-parameter, read-only estimator this is fully sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'endpoints' parameter is fully documented with examples and the leading-slash rule in the schema. The description only restates 'one or more endpoints' without adding format or constraint detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Estimate the credit cost of one or more endpoints') and immediately pins the scope with 'WITHOUT invoking them', which no sibling tool does. An agent can distinguish this from the many invocation/report siblings at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit workflow guidance: 'estimate first, ask user confirmation, then invoke' for multi-step planning. This is clear when-to-use context, though it names no alternative tool or when-not-to-use condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_lnd_celtic_cross_lenormandLenormand: Celtic CrossB
Read-onlyIdempotent
Inspect

Adapted Celtic Cross with Lenormand cards.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/celtic-cross-lenormand] [Cost: 10 credits (Tier 1)]

(Cursor-friendly alias for astroway_tarot_lenormand_draw_celtic_cross_lenormand.)

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

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 operational context absent from annotations: cost (10 credits, Tier 1) and the endpoint. It does not explain whether a seed makes the draw reproducible or how 'adapted' differs from the classic Celtic Cross layout.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, followed by compact bracketed metadata for group, endpoint, and cost. No filler sentences, though the alias line is procedural rather than user-facing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and cost/endpoint are covered. But for a draw tool with 0 required params and half its schema undocumented, the description never explains the question parameter or what 'adapted' Celtic Cross positions are produced, leaving an agent without enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, and the description supplies no parameter meaning at all. Three parameters (seed, question, allowReversed) are undocumented in both places despite question being the semantically central input for a divination draw; the description should have compensated for the gap and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names the specific resource — an adapted Celtic Cross spread drawn with Lenormand cards — which separates it from the Marseille and Rider-Waite Celtic Cross siblings and locates it in the Lenormand family. No explicit verb ('draw'), but the action is unambiguous from the name and title pairing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives no guidance on when to choose this spread over the many other Lenormand draws (three-card, line-of-five, grand tableau, 9-card square) or over the Marseille/RWS Celtic Cross variants. The alias note tells the agent the canonical tool exists but not which to prefer or why.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_agent_debateMCP Agent DebateC
Read-onlyIdempotent
Inspect

2 personas debate a topic, multi-round transcript.

[Group: MCP Advanced] [Endpoint: POST /v1/mcp/agent-debate] [Required: topic, agentA, agentB] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartNoBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
topicYes
agentAYes
agentBYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
roundsNo
languageNoen
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
transcriptNo

TDQS

C2.9/5.0
Behavior3/5

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 genuinely useful operational context — cost (100 credits, Tier 4), the required-parameter set, and the endpoint. It stays silent on runtime behavior an agent might care about, such as whether the multi-round debate is long-running, streamed, or bounded in output size. The POST endpoint is not a contradiction of readOnlyHint, but it is worth noting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tight and well front-loaded: the core operation comes first, then compact bracketed metadata. Every line carries information (endpoint, required fields, cost) rather than filler. Its brevity is a virtue, though it edges into under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 described. But for an 8-parameter tool with a nested chart object, aless-than-40% coverage, and a cost of 100 credits, the description leaves critical gaps — most importantly the semantics of agentA/agentB and the effect of rounds/language.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 38%, so the description carries a heavier burden, and it does not meet it. It restates the three required parameters that the schema already marks as required, but never explains what agentA/agentB actually are (persona strings? model IDs?) or what topic expects. Optional params like rounds, language, and fields get no mention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb-and-resource phrasing: '2 personas debate a topic, multi-round transcript.' An agent can grasp the operation immediately. However it does not differentiate itself from close siblings such as astroway_mcp_multi_agent_coordinate, astroway_mcp_ai_chat, or astroway_mcp_ai_comparison_coach, which plausibly overlap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no named alternative. The bracketed metadata lists required fields and cost but never says when this debate tool is preferable to multi-agent coordination or AI chat. The [Group: MCP Advanced] tag is organizational, not decision-supporting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_agent_pool_statusMCP Agent Pool StatusC
Read-onlyIdempotent
Inspect

8 personas with specialties.

[Group: MCP Advanced] [Endpoint: GET /v1/mcp/agent-pool-status] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
noteNo
countNo
personasNo

TDQS

C2.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint false, and openWorldHint false. The description adds useful behavioral context in the form of the cost (10 credits, Tier 1) and HTTP method (GET), but does not describe what the status output contains or any auth/rate-limit details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short but poorly structured: a vague fragment followed by bracketed metadata lines. It is under-specified rather than concise, and the opening line does not front-load a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although an output schema exists and annotations cover the safety profile, the description still leaves the agent without a clear statement of what the tool does or when to call it. For a status endpoint in a large sibling set, this is a significant omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the two optional parameters (fields, precision) are fully documented in the schema itself. The description adds no parameter meaning 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives only a fragment, '8 personas with specialties,' which hints at pool composition but never states that this tool returns agent pool status or what that status contains. It lacks a clear verb and resource, and does not distinguish itself from siblings like astroway_mcp_multi_agent_coordinate or astroway_agent_tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool, when not to use it, or which sibling tool is the alternative. The description contains only metadata tags, not usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_ai_chatChart-grounded AI chatA
Read-only
Inspect

Chat answered from the positions we computed for this birth moment, not from the model's memory of a sun sign. Carries up to 10 turns of history, replies in 21 languages, and takes four voices through persona. Send your own provider key and the turn costs 5 credits instead of the endpoint price.

[Group: AI & MCP] [Endpoint: POST /v1/ai/chat] [Required: message] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartNoBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
historyNo
messageYes
personaNoastrologer
languageNouk
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
modelNo
replyNo
tokensNo
personaNo
languageNo
disclaimerNo
duration_msNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, non-destructive, open-world behavior, so the bar is lower; the description still adds real behavioral facts beyond them — a 10-turn history ceiling, 21 output languages, four selectable voices via persona, and a concrete pricing rule (5 credits with your own provider key vs. the endpoint price). It stops short of stating auth requirements or what happens when the history limit is exceeded. 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: the differentiator first, capabilities second, pricing last, followed by a compact metadata block (group, endpoint, required param, tier cost). Every clause carries new information and nothing is repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 needn't explain return values, and annotations cover the safety profile, so what remains — what the tool is for, its capability envelope, and its cost model — is covered. The main gap is that nothing tells an agent when this endpoint should be picked over the other AI/agent siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Top-level schema description coverage is only 43% (chart, fields and precision documented; message, persona, language and history not), so the description must compensate and partially does — it explains persona (four voices), history (~10 turns) and language (21 options). It says nothing about chart, fields compact-mode paths, or precision, though the nested chart schema does carry unusually rich self-documentation for those.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — an AI chat answered from computed natal-chart positions rather than the model's prior knowledge of a sun sign — and quantifies scope (10 turns, 21 languages, 4 personas). It clearly implies a different product from sibling AI utilities such as astroway_mcp_ai_explain_aspect or astroway_mcp_ai_comparison_coach, but never names them, so the differentiation is by tone rather than explicit contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied rather than stated: the credit-price note ('send your own provider key and the turn costs 5 credits instead of the endpoint price') hints this is a paid, higher-tier call, and 'chart-grounded' hints the input needs birth data. There is no explicit when-to-use-it, when-not-to, or routing rule against the other chat/agent endpoints in the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_ai_comparison_coachComparison CoachB
Read-only
Inspect

Coach two charts on relationship dynamics.

[Group: AI & MCP] [Endpoint: POST /v1/ai/comparison-coach] [Required: chart1, chart2, question] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chart1YesBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
chart2YesBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
languageNouk
questionYes
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
coachingNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds genuinely useful operational context (the 100-credit Tier 4 cost and the POST endpoint), but says nothing about the fact that an LLM-backed coach may return non-deterministic prose, what latency to expect, or what deprecates the idempotentHint=false signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The four lines are tight and the purpose sentence is front-loaded ahead of the bracketed metadata block. Nothing is padded, though the metadata lines are boilerplate rather than definitional content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and the cost/endpoint block is present. But for a six-parameter AI tool embedded among dozens of similar compatibility siblings, the description lacks any hint of what the coaching output contains or what makes a good 'question', leaving the agent to guess at scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67% and the nested chart objects carry extensive inline documentation (formats, rejected short names, timezone semantics, houseSystem letters), so the schema does the heavy lifting. The description only restates the required parameters (chart1, chart2, question), adding no meaning for question, language, fields or precision. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (coach), the resources (two charts) and the domain (relationship dynamics), so the agent knows this produces interpretive guidance rather than raw chart data. It does not, however, distinguish itself from the many sibling compatibility tools (ashtakoot, dashakoota, compatibility_full) or from astroway_mcp_ai_chat, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, and no alternative is named. A reader cannot tell whether to reach for this AI coach versus the deterministic Vedic compatibility endpoints or multi_chart_context. The only constraints given are required parameters and cost, which are not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_ai_explain_aspectExplain AspectB
Read-only
Inspect

Detailed explanation of an aspect between two planets.

[Group: AI & MCP] [Endpoint: POST /v1/ai/explain-aspect] [Required: planet1, planet2, aspectType] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartNoBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
planet1Yes
planet2Yes
languageNouk
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
aspectTypeYes

Output Schema

NameRequiredDescription
explanationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true and idempotentHint=false, so the safety profile is covered without the description. The description does add genuinely useful operational context not present in the annotations: the credit cost (100 credits, Tier 4) and the endpoint. However it never explains why a read-only operation is flagged non-idempotent (repeated calls likely yield differently worded narrative), which is the one behavioral trait an agent would most want here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and the payload is small. The '[Required: planet1, planet2, aspectType]' line duplicates the schema's required array, but the cost and endpoint lines justify their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 described. But for a 7-parameter tool with a nested chart object and LLM-backed generation, the description omits the valid domain for planet1/planet2, any usage guidance versus explain_transit, and any hint about generation latency or variable output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description lists the three required parameters, but schema coverage is only 43% and planet1/planet2 carry no description, no enum and no example anywhere in the schema, so the agent must guess the accepted form (planet names such as 'Mars'?). The description does not compensate for that gap, which is the weakest part of the definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource: 'explanation of an aspect between two planets.' An agent can tell it apart from the sibling astroway_mcp_ai_explain_transit by the resource alone, but the description never makes that contrast explicit nor states what kind of explanation is produced.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of the sibling explain_transit as an alternative. The only contextual cues are bracketed metadata (endpoint, required fields, credit cost), which tell the agent what it costs but not when it should be chosen.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_ai_explain_transitExplain TransitB
Read-only
Inspect

Explain a current transit hitting your natal chart.

[Group: AI & MCP] [Endpoint: POST /v1/ai/explain-transit] [Required: chart, transitDate, transitPlanet, natalPlanet, aspectType] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartYesBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
languageNouk
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
aspectTypeYes
natalPlanetYes
transitDateYes
transitPlanetYes

Output Schema

NameRequiredDescription
explanationNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description usefully adds the cost (100 credits, Tier 4) and the endpoint, which annotations do not provide. It does not explain why idempotentHint is false for a read-only call, nor what the AI explanation entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the purpose before the bracketed metadata. The bracketed group/endpoint/required/cost lines are slightly noisy but each carries compact information, so there is little waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described. But for a 5-required-parameter tool with a near-twin sibling, the description omits the disambiguation, parameter usage, and cost implications an agent needs before committing. It is minimally adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 38%, so the description should compensate, but it merely restates the five required parameter names that the schema already marks required and says nothing about what transitPlanet, natalPlanet, aspectType accept or how the optional fields/precision/language parameters behave. It adds no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Explain a current transit hitting your natal chart.' An agent can grasp the purpose immediately. However, it never distinguishes itself from the close sibling astroway_mcp_ai_explain_aspect, leaving the borderline case ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no comparison to the near-identical sibling astroway_mcp_ai_explain_aspect. The '[Required: ...]' and '[Cost: ...]' lines are metadata, not routing guidance. The agent gets no help deciding between this and other AI tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_multi_agent_coordinateMCP Multi-Agent CoordinateC
Read-onlyIdempotent
Inspect

Run N personas in parallel + LLM synthesis.

[Group: MCP Advanced] [Endpoint: POST /v1/mcp/multi-agent-coordinate] [Required: question, agents] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartNoBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
agentsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
languageNoen
questionYes
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
synthesisNo
individualNo

TDQS

C2.9/5.0
Behavior3/5

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 structurally. The description usefully adds the cost (100 credits, Tier 4) and the endpoint/group, but says nothing about latency, response shape of the synthesis, or how many personas are permitted (schema caps at 4).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operative sentence, followed by compact bracketed metadata; there is no filler prose. The brevity is close to under-specification rather than pure conciseness, keeping it out of the top band.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 described, and cost is disclosed. However, for a tool whose whole contract is choosing personas and a question, the description never explains what the agents array should contain, leaving the most decision-relevant input undocumented across both description and schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the description adds no meaning beyond listing the two required names. Critically, the 'agents' array is the defining parameter and neither the schema nor the description explains what identifiers it accepts, and 'question' semantics are equally unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Run), resource (N personas) and mechanism (parallel + LLM synthesis), which is more informative than a tautology. It does not name or distinguish itself from the obvious sibling astroway_mcp_agent_debate, so the agent must infer the difference between coordinated parallel personas and a debate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no alternatives are named despite several closely related siblings (agent_debate, multi_chart_context, ai_chat). The '[Required: question, agents]' line just restates the schema's required array rather than telling the agent 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.

astroway_mcp_multi_chart_contextMCP Multi-Chart ContextC
Read-only
Inspect

Compact context for MCP agents working across multiple charts.

[Group: AI & MCP] [Endpoint: POST /v1/mcp/multi-chart-context] [Required: charts] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
chartsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
intentNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
notesNo
intentNo
summariesNo
chartCountNo
contextHashNo
summaryStringNo

TDQS

C2.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely useful non-annotation behavior: a 10-credit (Tier 1) cost and the POST endpoint. It says nothing about what the operation returns or how it behaves across the 1-6 chart array, so it earns only partial credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and front-loads the one-sentence purpose, with well-organized bracketed metadata. But that metadata is machine-oriented boilerplate (group/endpoint/required) and the prose line is largely redundant with the title, so the brevity reflects under-specification as much as discipline.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explained, but for a tool taking up to six nested chart objects with four intent modes and compact-mode fields/precision, the description is far too thin. It gives an agent no way to know what a "compatibility" vs "forecast" run produces or why to pick it over the many neighbouring multi-chart tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter content is "[Required: charts]", which merely repeats the schema's required array, adding zero meaning. The description says nothing about `fields`, `precision`, or the four `intent` modes — the latter has no schema description at all despite being the main selector. At 50% schema coverage this is a real gap it fails to fill.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Compact context for MCP agents working across multiple charts" largely restates the name/title (multi-chart context) without naming an action or an output. The word "context" is undefined — it never says whether this computes cross-chart aspects, comparison summaries, or group forecasts. Only the bare notion "multiple charts" distinguishes it from the many single-chart siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: no trigger conditions, no prerequisites, and no routing against the large sibling set (e.g. astroway_mcp_multi_agent_coordinate or astroway_mcp_ai_comparison_coach). The `intent` enum (compatibility/family/group/forecast) suggests several distinct use cases, but the description never explains when to choose which.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_streamingMCP Streaming ChatB
Read-only
Inspect

Server-Sent Events streaming chat completion with optional chart context.

[Group: AI & MCP] [Endpoint: POST /v1/mcp/streaming] [Required: message] [Cost: 100 credits (Tier 4)]

NameRequiredDescriptionDefault
chartNoBirth data for a single natal chart. Required: date (YYYY-MM-DD), time (HH:mm:ss), latitude and longitude in decimal degrees. The short forms lat, lon, lng and tz are rejected with 400 INVALID_FIELD; pass the full names. timezoneOffset is hours from UTC and defaults to 0, meaning UTC; send timezone instead (an IANA name such as Europe/Kyiv, or auto) and the offset for that date is worked out, summer time included. city is a display label only: nothing here geocodes it, so it never stands in for coordinates. houseSystem is a single Swiss Ephemeris letter, P by default; a name such as "Placidus" is refused, and the case matters because I and i are two different Sunshine systems.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
messageYes
languageNouk
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, so the safety profile is covered. The description adds genuinely non-derivable behavior: the response is delivered as an SSE stream rather than one payload, crediting at 100 credits (Tier 4), and the concrete endpoint. It omits auth requirements and why idempotentHint=false, which keeps it out of 5 territory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Short and front-loaded: the core capability leads, with bracketed metadata (group, endpoint, required param, cost) following compactly. Every line carries information, though the template-style [Group:]/[Endpoint:] format is more machine header than prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a streaming tool with no output schema and a nested chart parameter, the definition covers the essential facts (SSE transport, required message, optional chart, cost). It does not describe what the stream emits or how chart context influences the completion, leaving gaps an agent would notice mid-invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, with the nested chart object heavily documented in the schema itself (timezone, houseSystem letters, lat/lon full names, ayanamsa). The description adds only 'optional chart context', which restates the schema's required list. Baseline 3 is appropriate when the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+mechanism: 'Server-Sent Events streaming chat completion with optional chart context.' An agent can tell this is a streaming chat tool rather than a static computation. It does not explicitly name or contrast with the closest sibling astroway_mcp_ai_chat, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. Nothing tells the agent to prefer this over astroway_mcp_ai_chat (non-streaming chat) or astroway_mcp_tool_call_stream; the streaming qualifier implies a context but the choice is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_tool_call_streamMCP Tool-Call StreamC
Read-onlyIdempotent
Inspect

SSE-stream of a tool call envelope.

[Group: MCP Advanced] [Endpoint: POST /v1/mcp/tool-call-stream] [Required: tool] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
argsNo
toolYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
languageNoen
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds two genuinely useful behavioral facts annotations cannot express: delivery is server-sent events rather than a single response, and the call costs 10 credits (Tier 1). It still omits stream termination, error-over-stream behavior, and whether partial results can be replayed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: one sentence of purpose followed by structured metadata brackets. Nothing is wasted, though the single sentence is so compressed that the core mechanics of the tool are never actually spelled out.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with a nested free-form args object, a free-text tool selector, compact-mode options, and no output schema, this is under-specified. An agent cannot tell what the stream emits, how to consume it, or what valid values for tool are (presumably must match astroway_mcp_tools_list entries), all of which are load-bearing here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 40% across 5 parameters, and the description adds nothing beyond confirming that tool is required. args (arbitrary nested object forwarded to the target tool), language, and the compact-mode interplay of fields/precision are left entirely to the schema; the description should explain that args are passed through verbatim to the named tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"SSE-stream of a tool call envelope" names a delivery mechanism and an artifact, so the agent knows this is a streaming wrapper that executes a named tool. However, "tool call envelope" is opaque jargon and the definition never states the key fact that this proxies/executes another MCP tool by name, nor how it differs from the sibling astroway_mcp_streaming or astroway_mcp_tools_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage cue is the bracketed "[Required: tool]" — there is no when-to-use, no when-not-to-use, and no routing to an alternative despite multiple plausible siblings (astroway_mcp_streaming, astroway_mcp_tools_list, astroway_agent_tools). The agent must guess whether streaming is preferred over a plain call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_mcp_tools_listMCP Tools ListC
Read-only
Inspect

Auto-generated tool manifest for MCP clients (modelcontextprotocol/2025-03 spec).

[Group: AI & MCP] [Endpoint: GET /v1/mcp/tools-list] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
specNo
notesNo
toolsNo
serverNo
toolCountNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context the annotations do not: the concrete GET endpoint and a cost caveat that this scope is not in the public credit manifest. It does not explain response size or pagination for a manifest that presumably enumerates all tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single purpose sentence is front-loaded and the metadata tags are compact, but the bracketed group/endpoint/cost lines are boilerplate scaffolding rather than description content. Nothing is wasted, yet very little informational payload is delivered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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, but for a meta-tool that enumerates the entire tool surface, the description never explains the scenario in which an agent would reach for it instead of directly invoking a domain tool. Given the enormous sibling set, this leaves a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both `fields` and `precision` are already documented in the schema with examples and constraints. The description contributes no additional parameter meaning; the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Auto-generated tool manifest for MCP clients" largely restates the name 'MCP Tools List' without a distinct verb or an explanation of what the response actually contains. It gives an endpoint and spec version but no functional description that would distinguish its purpose from any other listing endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when an agent should call this tool, what problem it solves, or how it relates to the ~190 sibling tools. The only contextual cues are the bracketed [Group]/[Endpoint]/[Cost] metadata tags, which are not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_decksTarot: Decks and Card ArtA
Read-onlyIdempotent
Inspect

Every deck with its spreads and the public-domain card art sets you can pick with art on any tarot route: id, artist, year, source, a preview image, the card back, and any card a set has no picture for.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/decks] [Cost: 5 credits (Tier ½)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
itemsNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent read, so the description only needs to add context. It does add useful catalog detail (artist, year, source, preview image, card back, and coverage gaps for cards with no picture), which tells the agent the shape/quality of the data. It does not disclose pagination, result count, or whether all decks or just a filtered set are returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and dense with payload facts, followed by compact Group/Endpoint/Cost metadata. It is slightly overpacked in one run-on sentence, but no content is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotations cover the safety profile; the description supplies the catalog scope, the art-set linkage to other routes, and the cost/endpoint metadata. The only untold element is whether the deck list is paginated or complete, which is a minor gap for a catalog endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters (fields, precision), each fully documented in the schema itself. The description adds nothing about them, so the schema carries the full burden and the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb-less but clear resource statement: it enumerates decks, their spreads, and public-domain card art sets, and names the envelope fields (id, artist, year, source, preview, card back, missing-art fallback). That is far more specific than a tautology, though it never says 'list' explicitly and does not name a sibling tool it competes with (e.g. the per-deck spread endpoints).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'the public-domain card art sets you can pick with `art` on any tarot route' implies the use case: discovering the art values that the other tarot routes accept. But there is no explicit when-to-use vs when-not, and no pointer to an alternative such as the Rider-Waite or Marseille spread listings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_cardsLenormand: All CardsB
Read-onlyIdempotent
Inspect

36-card Lenormand oracle deck.

[Group: Tarot: Lenormand] [Endpoint: GET /v1/tarot/lenormand/cards] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new behavioural context: the endpoint (GET /v1/tarot/lenormand/cards), the group, and a concrete cost of 10 credits (Tier 1) that the agent needs for budget decisions. No pagination or caching behaviour is disclosed, but the credit cost is a meaningful addition beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines: resource first, then bracketed metadata for group, endpoint and cost. Nothing is wasted and the key noun is front-loaded. It is arguably too terse rather than too long, but structurally it is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only catalogue endpoint with an output schema, full parameter coverage and annotations covering safety, most of what an agent needs is present. The missing piece is routing context — nothing says this is the static deck reference versus the sibling cards_slug lookup or the draw_* spread tools, which is the main risk in a toolset this large.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (fields, precision) are fully documented in the schema as generic 'compact mode' modifiers. The description adds nothing about them, which is acceptable given the schema does the work, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('36-card Lenormand oracle deck'), which tells the agent this returns the full 36-card catalogue rather than a spread. However it is a bare noun phrase with no verb, and it does not distinguish itself from the obvious sibling astroway_tarot_lenormand_cards_slug (single-card lookup) or astroway_tarot_lenormand_draw_* (spread draws). Purpose is inferable but not stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no mention of alternatives, despite ~30 Lenormand-related siblings in the toolset. The agent has to guess that this is a static reference lookup rather than a divination action. Nothing here is misleading, but nothing routes the caller either.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_cards_slugLenormand: Single CardB
Read-onlyIdempotent
Inspect

Single Lenormand card lookup by slug.

[Group: Tarot: Lenormand] [Endpoint: GET /v1/tarot/lenormand/cards/{slug}] [Required: slug] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
slugYesCard slug, lowercase and hyphenated.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
nameNo
slugNo
numberNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the agent knows this is a safe, repeatable read operation. The description adds no behavioral context beyond what annotations provide — no mention of rate limits, caching, or response characteristics. However, given the annotations carry the safety profile and an output schema exists, the bar is lower and this minimal restatement is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and efficient: the first line states purpose clearly. The bracketed metadata lines (Group, Endpoint, Required, Cost) are structured and scannable. Slight redundancy with the required-slug tag being stated twice (in the description and the schema), but overall tight and well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With read-only annotations covering safety, an output schema present, and 100% schema description coverage, the core call is sufficiently specified. However, the cost note ('see your plan — endpoint not in the public credit manifest') is vague and potentially a blocker for an agent assessing whether to call it, and there is no differentiation from the sibling 'cards' list endpoint. Just adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all three parameters (slug format, fields compact mode with dotted paths, precision rounding). The description adds nothing beyond the required-parameter tag, which is already in the schema's 'required' array. Baseline 3 is appropriate when the schema does all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Single Lenormand card lookup by slug.' This is clear purpose. However, it does not distinctly differentiate from the highly similar sibling tool astroway_tarot_lenormand_cards (list all cards) or astroway_tarot_marseille_cards_slug / astroway_tarot_rider_waite_cards_slug which follow the same pattern. A brief note on the distinction (lookup one by slug vs browse all) would push this higher.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'by slug' phrasing implies this is a lookup operation and the required slug requirement is noted, giving minimal usage context. But there is no explicit when-to-use guidance, no mention of when to use the list endpoint instead, and no prerequisites stated. Adequate but with clear gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_dailyLenormand: Daily CardsB
Read-onlyIdempotent
Inspect

Daily three-card draw based on date seed.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/daily] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
seedNo
drawnNo
spreadNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, and closed-world, so the safety profile is covered. The description adds the date-seed determinism (same date yields the same draw) and the 10-credit cost, which is useful for call planning, but says nothing about the response contents or what happens when date is omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence carries the meaning, with the group/endpoint/cost metadata stacked below in a scannable format. Nothing is padded, though the bracket lines are boilerplate rather than descriptive content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover safety. The remaining gap is behavioral: with all four parameters optional, the description never states whether omitting date defaults to today, which is the key question for a daily-draw tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%: art, fields, and precision are documented in the schema, while date carries only a pattern and no prose description. The phrase 'based on date seed' partially fills that gap by implying date drives the draw, but it does not state the default when date is omitted, which matters for a zero-required-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Daily three-card draw') and adds the distinguishing mechanism ('based on date seed'), which separates it from a generic three-card spread. It does not, however, explicitly contrast with the nearby sibling astroway_tarot_lenormand_draw_three_card, so the agent must infer the difference from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no named alternative. 'Daily' implies a recurring date-based reading, but nothing states when to prefer this over astroway_tarot_lenormand_draw_three_card, astroway_tarot_marseille_daily, or the other daily-draw siblings. The bracket lines give an endpoint and cost, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_9_card_squareLenormand: 9-Card SquareB
Read-onlyIdempotent
Inspect

Three-by-three grid: rows = past/present/future, cols = mind/heart/body.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/9-card-square] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description's main added value is the 10-credit cost and endpoint. It says nothing about determinism from `seed`, reversal behavior, or response shape beyond the grid layout.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very tight: the spread semantics are front-loaded in one sentence, followed by compact group/endpoint/cost metadata. Nothing is padded, though the three bracketed metadata lines could be trimmed to just the cost signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return structure needn't be explained, and the spread geometry is given. But with six parameters and half of them undocumented, plus no routing guidance among the many Lenormand draw siblings, the definition is only minimally sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (art, fields, precision documented; seed, question, allowReversed not), and the description adds no parameter meaning at all – no explanation of how `question` is used, what `seed` does for reproducibility, or whether `allowReversed` is meaningful for Lenormand, where reversals are traditionally atypical yet default to true.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description defines the spread concretely – a three-by-three grid with row and column semantics – which, combined with the name 'draw_9_card_square', makes the operation and its output structure unambiguous. It does not, however, distinguish this spread from sibling draws like grand_tableau, line_of_five, or three_card.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no mention of alternative Lenormand spreads, despite many siblings (draw_relationship, draw_three_card, draw_grand_tableau). The grid dimensions hint at a situational overview across time and life domains, but that is left for the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_celtic_cross_lenormandLenormand: Celtic CrossC
Read-onlyIdempotent
Inspect

Adapted Celtic Cross with Lenormand cards.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/celtic-cross-lenormand] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description's one genuine addition is the cost (10 credits, Tier 1) and the endpoint, which is useful operational context; it says nothing about how the draw behaves, how the seed parameter affects determinism, or how allowReversed influences results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely tight and front-loaded: the first line carries the meaning and the bracketed metadata lines are scannable. Nothing is wasted, though the brevity is partly under-specification rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explained, but for a six-parameter tool with half its parameters undocumented and a near-duplicate sibling, the description is too thin to let an agent call it confidently. It omits the one thing that would matter most here: how this differs from astroway_lnd_celtic_cross_lenormand and when each should be chosen.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, and the description adds no parameter meaning whatsoever. Three of six parameters (seed, question, allowReversed) are documented neither in the schema nor in the description, so an agent gets no help on whether a question is required for meaningful output or how the seed interacts with a 'random' draw.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific spread (Adapted Celtic Cross) and a specific deck (Lenormand), which distinguishes it from the three-card, line-of-five, and grand-tableau Lenormand draws and from the Marseille/Rider-Waite Celtic Cross variants. However, it does not distinguish itself from the near-identical sibling astroway_lnd_celtic_cross_lenormand, leaving an ambiguity the agent must resolve elsewhere.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all: no statement of what question types suit a Celtic Cross versus a smaller spread, no mention of prerequisites, and no routing to a companion interpretation tool (e.g. astroway_ai_interpret_tarot) or to the sibling celtic-cross variants. The metadata block only supplies group, endpoint, and cost.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_grand_tableauLenormand: Grand TableauB
Read-onlyIdempotent
Inspect

Full 36-card layout: every card and house used.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/grand-tableau] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds the layout completeness and cost (10 credits), but says nothing about side effects, permissions, or output behavior beyond what annotations cover. It adds some billing context but not rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two content sentences plus bracketed endpoint/cost metadata. Front-loaded and free of redundancy, though the endpoint line is arguably not needed by an agent. Efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 not be explained. Annotations cover safety. However, for a tool sitting among many Lenormand spread variants, the description omits usage guidance and parameter clarification, leaving the agent to infer when this spread applies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (art, fields, precision documented; seed, question, allowReversed not). The description mentions no parameters and does not compensate for the undocumented ones. An agent must rely on the schema alone for half the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool produces a full 36-card layout with every card and house used, which is a specific resource and scope. It implicitly distinguishes from partial Lenormand spreads, but does not name any sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives, no prerequisites. The agent gets no help deciding between this and the many other Lenormand draw tools (three-card, nine-card square, relationship, etc.).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_line_of_fiveLenormand: Line of FiveC
Read-onlyIdempotent
Inspect

Five-card linear story spread.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/line-of-five] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the full safety profile (readOnly, idempotent, non-destructive, closed-world), so the description carries a lower burden. It usefully adds the billing fact ('10 credits (Tier 1)') and the endpoint, which an agent needs for cost-awareness. It does not otherwise disclose return format or randomization behavior, but that is largely covered by annotations and the 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely compact and front-loaded: the operative phrase leads, followed by structured bracket tags for group, endpoint, and cost. Nothing is padded. The only weakness is that the brevity comes at the expense of usage guidance, not that any sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explained, but the description still leaves meaningful gaps: no guidance on selecting this spread, no explanation of the question/seed/reversed parameters, and no note on determinism despite idempotentHint. For a 6-parameter divination tool surrounded by near-identical siblings, this is thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%, leaving seed, question, and allowReversed without documented meanings, and the description adds nothing to compensate. Most notably it never mentions the `question` parameter, which is the semantic core of a divination draw, nor the `allowReversed` default. It relies entirely on the schema that is already half-undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and shape: 'Five-card linear story spread,' which lets an agent distinguish it from the sibling Lenormand spreads (three_card, 9_card_square, grand_tableau, celtic_cross_lenormand). The name/title reinforce the same verb+resource. It stops short of explicit sibling differentiation in prose, but the spread type is specific enough to route on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. It does not say when a five-card linear reading is preferable to the three-card, relationship, or 9-card square spreads that sit right next to it in the catalog. The only routing signal is the spread geometry implied by the title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_relationshipLenormand: RelationshipB
Read-onlyIdempotent
Inspect

7-card relationship dynamics.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/relationship] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds genuinely useful behavioral context in the cost (10 credits, Tier 1) and the concrete endpoint, but says nothing about latency, deck requirements, or how randomness/seed behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded — the spread definition leads, with group/endpoint/cost as bracketed metadata. Nothing is padded, though the metadata lines are boilerplate rather than tool-specific explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and annotations handle safety. What remains missing is routing guidance among the many Lenormand/tarot draws and any note on the optional question parameter, leaving the definition adequate but thin for a spread-selecting tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% across 6 parameters, and the description contributes nothing about art, seed, fields, question, precision or allowReversed. With half the parameters undocumented and no descriptive compensation, the agent has no extra semantic grounding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: a 7-card Lenormand draw for relationship dynamics. The spread size and topic distinguish it from Lenormand siblings such as the three-card, nine-card square, line of five and grand tableau, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this spread over the other Lenormand draws (three_card, line_of_five, 9_card_square, grand_tableau, celtic_cross_lenormand) or over the Rider-Waite relationship draw. The agent must infer selection purely from spread size.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_draw_three_cardLenormand: Three-CardB
Read-onlyIdempotent
Inspect

Subject / Situation / Outcome three-card line.

[Group: Tarot: Lenormand] [Endpoint: POST /v1/tarot/lenormand/draw/three-card] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

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 genuinely useful non-annotation context: the billing cost (10 credits, Tier 1) and the HTTP endpoint. It says nothing about randomness/determinism of a seeded draw, which is the main behavioral question for this tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded, with the spread's meaning in the first clause and metadata in bracketed groups. Nothing is redundant, though the brevity is under-specification rather than true efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and the cost/endpoint metadata is a plus. But usage routing against ~10 similar spread tools and any parameter semantics are missing, leaving the definition adequate but thin for a paid, seeded draw operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, yet the description explains no parameters at all. seed, question, and allowReversed are undocumented in both the schema and the description, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource (Lenormand three-card line) and the three positional slots (Subject / Situation / Outcome), which lets an agent distinguish it from line_of_five, 9_card_square, and grand_tableau siblings. It does not restate the draw verb explicitly, but the name and spread layout make 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this spread over the many sibling Lenormand spreads (relationship, daily, line of five, Celtic Cross) or what inputs a caller should supply. The cost line is the only selection-relevant context offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_lenormand_housesLenormand: 36 HousesA
Read-onlyIdempotent
Inspect

The 36 fixed houses for Grand Tableau interpretation.

[Group: Tarot: Lenormand] [Endpoint: GET /v1/tarot/lenormand/houses] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

A3.6/5.0
Behavior3/5

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 genuinely new operational context — the endpoint and a 10-credit Tier 1 cost — which is useful for budget-aware planning, but it says nothing about caching, latency, or whether the result is static reference data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence states the payload, followed by three bracketed metadata lines (group, endpoint, cost) that each carry distinct, non-redundant information. Nothing is padded or repeated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and the tool takes no required parameters. What remains missing is minor: no hint that it is a parameterless static reference call or how its output relates to a tableau draw, but nothing needed to invoke it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (fields, precision) are fully documented in the schema, including examples and semantics, so the baseline is 3. The description adds nothing about the compact-mode parameters, which is acceptable when the schema already carries them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('the 36 fixed houses') and its domain role ('for Grand Tableau interpretation'), so an agent knows exactly what comes back. It does not, however, distinguish itself from siblings like astroway_tarot_lenormand_draw_grand_tableau or astroway_lnd_celtic_cross_lenormand, leaving the agent to infer the boundary itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentioning 'Grand Tableau interpretation' implies the usage context, but there is no explicit when-to-use, no prerequisite, and no named alternative. An agent can guess this is a static reference lookup that complements a tableau draw, but the routing decision 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.

astroway_tarot_marseille_birth_cardMarseille: Birth CardB
Read-onlyIdempotent
Inspect

Birth card per Greer method, Marseille deck.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/birth-card] [Required: date] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
primaryNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely useful operational context — the POST endpoint and the 10-credit Tier 1 cost — which an agent cannot get from annotations or schema, but it says nothing about the returned payload or whether the cost is incurred per call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely tight — one descriptive sentence plus a compact structured metadata block with endpoint, required param and cost front-loaded. Nothing is padded, though the metadata block repeats facts (group, endpoint) that add little selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and the read-only/cost facts are present. However, for a tool sitting among dozens of overlapping tarot computations, the absence of any deck/method selection guidance or alternative routing leaves the definition only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, with art, fields and precision each documented in the schema itself; the description only restates that date is required, matching the schema's required list. It adds no format or interpretation detail (e.g., how a date maps to a card) beyond structured data, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (a birth card) and method (Greer) plus the deck (Marseille), which usefully separates it from the sibling astroway_tarot_rider_waite_birth_card. It does not explain what a 'birth card' actually is or how it is derived, so a wholly uninformed agent still has a small gap, but the verb+resource is identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use context and no routing to alternatives such as astroway_tarot_marseille_year_card or the Rider-Waite birth card. The only usage cue is the bare 'Required: date' line, which is schema information rather than guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_cardsMarseille: All CardsC
Read-onlyIdempotent
Inspect

78-card Marseille deck. Justice = 8, Strength = 11 (pre-Waite swap). Pip minors interpreted by number+suit.

[Group: Tarot: Marseille] [Endpoint: GET /v1/tarot/marseille/cards] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

C2.9/5.0
Behavior3/5

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 the endpoint and a cost figure (10 credits, Tier 1), which is genuinely useful operational context, but it says nothing about response shape or pagination beyond what the output schema gives.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and tight: the distinguishing deck conventions come first, followed by compact bracketed metadata. No wasted prose, though the domain trivia is arguably more than a selection decision requires.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, read-only catalog call with an output schema, the definition is minimally sufficient. It still leaves unresolved how this full-deck tool relates to the slug, majors, and other Marseille siblings, which is the main thing an agent would need to choose correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters (fields, precision) are fully documented in the schema, so the baseline of 3 applies. The description adds nothing about the compact-mode projection or precision handling, though its note about pip-minor interpretation is relevant to the returned data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description asserts domain facts about the deck (78 cards, Justice=8/Strength=11, pip minors by number+suit) but never states the tool's action — that it returns the full Marseille card catalog. The name and title carry the verb, so an agent can guess, but the description itself is a content blurb rather than a statement of purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no mention of alternatives, despite many near-neighbours (astroway_tarot_marseille_cards_slug, astroway_tarot_marseille_majors, astroway_tarot_decks, astroway_tarot_rider_waite_cards). Nothing tells the agent when to pick this full-deck listing over a single-card lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_cards_slugMarseille: Single CardA
Read-onlyIdempotent
Inspect

Single Marseille card lookup by slug.

[Group: Tarot: Marseille] [Endpoint: GET /v1/tarot/marseille/cards/{slug}] [Required: slug] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
slugYesCard slug, lowercase and hyphenated.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
nameNo
slugNo
categoryNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly, idempotent, not destructive, closed-world), so the bar is lower. The description earns credit for adding the concrete endpoint and an honest cost disclosure ('not in the public credit manifest'), which flags real billing uncertainty that annotations do not cover. It stops short of 5 because pagination/error behavior on an unknown slug is unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One-line purpose sentence is front-loaded, followed by a bracketed metadata block that is scannable and zero-waste. Slightly telegraphic rather than fully prose, but no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and annotations fully cover the read-only/idempotent profile. Endpoint, group and cost are supplied. The only real omission is how to discover a valid slug, which is a minor gap for a lookup-by-key tool in a rich structured context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (slug, fields, precision) are documented in the schema itself, including the compact-mode syntax and precision bounds. The description adds nothing beyond repeating 'Required: slug', so the baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Single Marseille card lookup by slug'. The word 'Single' implicitly contrasts with the sibling list tool astroway_tarot_marseille_cards, so an agent can distinguish it, but the sibling is never named explicitly, so it stops short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance and never points at alternatives. It never says that astroway_tarot_marseille_cards is how you obtain a valid slug, nor when the majors/spreads siblings would be preferable. 'Required: slug' restates schema metadata rather than giving usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_clarifyMarseille: ClarifierC
Read-onlyIdempotent
Inspect

Single clarifying card.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/clarify] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.8/5.0
Behavior3/5

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 low. The description adds the endpoint and cost (10 credits) context, which is useful, but says nothing about determinism of the draw, how question/seed affect the result, or reversal behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely terse and front-loaded, with metadata block (group, endpoint, cost) clearly separated. Nothing is wasted, though at three words of actual purpose the brevity tips into under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter, zero-required tool with an output schema, the description is far too thin. An agent cannot tell how to supply question vs seed, when to change allowReversed, or how this relates to draw_single / rider_waite_clarify. Only the cost/endpoint metadata is genuinely additive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; art, fields, and precision are documented in-schema, while question, seed, and allowReversed have no schema description. The tool description compensates for none of these gaps - it does not explain what question is for, how seed makes draws reproducible, or what allowReversed does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Single clarifying card' states the resource (a card) and its role (clarifying) but is telegraphic and does not distinguish it from the many sibling draw tools (astroway_tarot_marseille_draw_single, astroway_tarot_rider_waite_clarify). An agent gets the gist but not why this differs from a single-card draw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, no alternatives named. It never explains that a clarifying card is drawn to resolve ambiguity in a prior reading, nor differentiates it from draw_single or the Rider-Waite clarify sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_dailyMarseille: Daily CardB
Read-onlyIdempotent
Inspect

Daily Marseille card based on date seed.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/daily] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
seedNo
drawnNo
spreadNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description contributes genuine extra context: a cost of 10 credits (Tier 1) and the POST endpoint, which the annotations do not express. It stops short of explaining how the date seed affects output (determinism, whether omitting date means today), which is the behavior an agent would most want to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: the core purpose is in the first clause, and the metadata lines (group, endpoint, cost) are compact and each carries real information. No filler or repetition, though the brevity edges toward under-specification rather than elegance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and annotations cover the safety profile. What remains missing for a 4-optional-param tool is defaulting behavior (is date optional because it defaults to today?) and any routing guidance among the many tarot daily/draw siblings. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so most parameters are already documented in the schema. The phrase 'based on date seed' hints that the date parameter determines the card deterministically, but the description says nothing about the art, fields, or precision parameters and does not clarify date defaults. Baseline 3 is appropriate given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (the Marseille daily card) and adds the mechanism (date seed), which lets an agent separate it from astroway_tarot_rider_waite_daily and astroway_tarot_lenormand_daily by deck. It is weaker on verb phrasing — there is no explicit 'returns/gets' action — and the core sentence closely mirrors the title 'Marseille: Daily Card', so it sits just below a fully self-contained purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. Nothing tells the agent how this differs in practice from astroway_tarot_marseille_draw_single or astroway_tarot_marseille_birth_card, nor whether it should be called once per day. 'Daily' implies a cadence, but that inference is left entirely to the caller.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_careerMarseille: CareerB
Read-onlyIdempotent
Inspect

4-card career spread.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/career] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

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 fully covered by structured data. The description adds genuinely useful context that annotations do not carry: the cost (10 credits, Tier 1) and the exact endpoint. It does not disclose auth requirements, whether the seed makes draws reproducible, or what the spread yields, so it is helpful but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line and the group/endpoint/cost tags are compact, non-redundant metadata. Nothing reads as filler. It is arguably too terse rather than bloated, but every line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. What remains missing is spread semantics (what the four positions mean) and any hint of how seed/question/allowReversed affect the draw — for a divination tool whose value is in the reading, that is a real gap, though the structured fields carry much of the load.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% — three of six parameters (seed, question, allowReversed) have no schema description, and the description adds nothing about any parameter. Critical semantics like whether `seed` makes the draw deterministic or what `question` influences are left entirely undocumented in both places. With half the parameters undocumented and no compensating text, this falls below the 3 baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource: a 4-card career spread drawn from the Marseille deck, which separates it from the many other Marseille spread variants (love, spiritual, decision, celtic cross, single). The card count and topic together give an agent a clear picture of the outcome. It stops short of full sibling differentiation because it never contrasts itself with the Rider-Waite career draw or explains the spread layout, but the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all — no condition selecting this career spread over astroway_tarot_marseille_draw_three_card, draw_seven_card, or the Rider-Waite equivalent. The agent must infer from the name alone that this is for career questions. The meta tags give cost and endpoint but no usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_celtic_crossMarseille: Celtic CrossB
Read-onlyIdempotent
Inspect

Adapted 10-card Celtic Cross with Marseille pip-style reading.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/celtic-cross] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world scope, so the safety profile is covered. The description contributes non-schema operational context (cost of 10 credits, Tier 1, POST endpoint, group), but says nothing about draw behavior itself, such as whether seeding makes the draw reproducible or how reversed cards are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is compact and front-loads the spread identity, with the endpoint/cost metadata in tagged lines that are easy to parse. There is no filler, though the brevity is partly under-specification rather than pure economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 unnecessary, and the description does convey spread, deck style, and cost. However, for a 6-parameter draw tool surrounded by dozens of near-synonymous tarot draws, it omits the usage routing and the purpose of question/seed/allowReversed, leaving real gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% and the description contributes no parameter meaning at all. The undocumented parameters (seed, question, allowReversed) have no explanation anywhere, and the two schema descriptions that do exist (fields, precision) are recycled astrology text referencing planets.longitude and houses.cusp, which is actively confusing for a tarot draw tool. With low coverage the description is expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific spread ("Adapted 10-card Celtic Cross") and deck style ("Marseille pip-style reading"), which lets an agent distinguish it from the RWS and Lenormand Celtic Cross siblings and from other Marseille spreads like draw_cross or draw_seven_card. The verb is only implied by the tool name rather than stated, so it stops short of the level of explicit sibling differentiation seen in the best definitions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternatives among the many Marseille draw siblings (draw_cross, draw_seven_card, draw_three_card, draw_decision, draw_love, etc.). The agent must infer the choice purely from the spread name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_crossMarseille: Tirage Réduit (Jodorowsky Reduced Cross)B
Read-onlyIdempotent
Inspect

Authentic 5-card cross from Jodorowsky/Costa "The Way of Tarot" + Camoin ArtduTarot: 4 Major Arcana (consultant / external / higher / result) + 5th synthesis card (numerological sum reduced ≤22).

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/cross] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior. The description adds useful operational context the annotations don't: a 10-credit Tier 1 cost, the POST endpoint, and the ≤22 numerological reduction rule for the synthesis card. It still says nothing about how seed or allowReversed affect the draw, so it does not fully carry the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The layout description is front-loaded and the metadata tags are compact. The sentence is dense but every clause (positions, synthesis rule, cost, endpoint) earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover safety. What remains missing is the most decision-relevant content for this tool family: how it differs from the other Marseille draw spreads and what 'question' is for. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, and the description contributes zero parameter information. Undocumented params like 'seed', 'question' and 'allowReversed' are left for the agent to infer with no help from the prose, which is below the minimum-viable 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('5-card cross' draw) and even enumerates the four positions plus the synthesis card, which is more than most draw tools offer. It doesn't explicitly distinguish itself from siblings like draw_celtic_cross or draw_seven_card beyond the spread name and tradition, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this spread over the many sibling Marseille spreads (single, three-card, seven-card, celtic cross, love, career). The Jodorowsky/Costa attribution implies a tradition but gives no routing condition or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_decisionMarseille: Yes/NoB
Read-onlyIdempotent
Inspect

Single-card yes/no with verdict.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/decision] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
reasonNo
verdictNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely useful operational context — endpoint and a 10-credit Tier 1 cost — but says nothing about how the verdict is produced, whether the draw is deterministic given a seed, or what a 'verdict' contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, followed by compact bracketed metadata lines. Nothing is padded or redundant, though the group/endpoint/cost block is administrative rather than descriptive and could arguably be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation is not required, and annotations carry the safety profile. However, for a 6-parameter tool with half its parameters undocumented and no usage routing among ~15 Marseille draw siblings, the definition is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% (art, fields, precision documented; seed, question, allowReversed not), and the description adds zero parameter meaning. It does not even mention that a `question` is expected, despite the tool being framed as a question-answering draw, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource and outcome: a single-card draw that yields a yes/no answer with a verdict. This separates it from the bare astroway_tarot_marseille_draw_single, though it never names that sibling explicitly, so the differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of when a yes/no decision draw is preferable to draw_single, draw_cross, or the Rider-Waite equivalent, and no prerequisites. The agent must infer the use case entirely from the title and one-line summary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_heroMarseille: Tirage du Héros (Hero's Journey)B
Read-onlyIdempotent
Inspect

Authentic 6-card Hero's Journey spread from Jodorowsky/Costa "The Way of Tarot": Hero / Objective / two Obstacles / Key / Resolution.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/hero] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

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 genuinely useful context absent from annotations — the cost (10 credits, Tier 1) and the source/school of the spread (Jodorowsky/Costa). It says nothing, though, about how seed or allowReversed affect the reading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded with the spread nature and structure, followed by compact metadata lines. Nothing is wasted, though the bracket block is structured plumbing rather than explanatory content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema means return values needn't be explained, and annotations cover the safety profile, so the description is not required to carry those. It is still incomplete on the input side: the undocumented 'question' and 'allowReversed' parameters are central to how a draw is performed and remain unexplained anywhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% — art, fields, and precision are documented, but seed, question, and allowReversed have no schema description. The description adds no parameter meaning at all, not even for the central 'question' input that a divination draw would obviously need explained, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific spread concept (6-card Hero's Journey) and enumerates all positions (Hero / Objective / two Obstacles / Key / Resolution), so the agent knows exactly what it produces. It does not, however, explicitly distinguish itself from the many sibling draw_* spreads (celtic_cross, love, career, decision), leaving the differentiation implicit in the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description contains no when-to-use guidance, no conditions, and no alternatives named. With roughly a dozen sibling spreads such as draw_celtic_cross, draw_cross, and draw_seven_card, the agent gets no help choosing this one over the others.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_loveMarseille: LoveB
Read-onlyIdempotent
Inspect

5-card love and connection spread.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/love] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), so the bar is low, and the description adds a genuinely actionable trait not present in structured fields: a 10-credit Tier 1 cost. It also exposes the underlying endpoint. It does not, however, disclose whether the draw is random or seeded/deterministic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very tight and front-loaded: the spread definition leads, with group/endpoint/cost as clearly bracketed metadata. Nothing is wasted, though the bracketed scaffolding is boilerplate rather than tool-specific guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and annotations carry the safety profile. What remains missing is behavioral context around the draw itself (determinism via seed, whether a question is expected, reversed-card handling) for a 6-parameter tool with half its schema undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields, and precision are documented in-schema while seed, question, and allowReversed are not. The description adds no parameter meaning at all, so it does not compensate for the undocumented third of the parameter surface — notably the 'question' field an agent would likely need to fill.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action (draw) with the resource (Marseille Tarot) and the spread identity ('5-card love and connection spread'), which separates it from sibling draws like draw_career, draw_celtic_cross, or draw_single. It stops short of explicitly contrasting itself with those siblings, but the topic+card-count combination is sufficient to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'love and connection' framing implies when the tool applies, but there is no explicit when-to-use statement and no named alternative (e.g., tarot_lenormand_draw_relationship, tarot_rider_waite_draw_love_triangle, or tarot_marseille_draw_cross). Usage is left to inference from the spread name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_seven_cardMarseille: Seven-CardC
Read-onlyIdempotent
Inspect

7-card pyramid spread.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/seven-card] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so safety is covered. The description usefully adds the credit cost (10 credits, Tier 1) and the HTTP endpoint, but says nothing about what the spread returns, how allowReversed affects the draw, or how randomness interacts with the seed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded with the defining fact (seven-card pyramid). The bracketed endpoint/cost metadata is boilerplate but contains a genuinely useful cost signal, so little is wasted despite the near total absence of substance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is an output schema, so return values need not be described, and annotations cover safety. However, for a fixed-layout divination tool the agent still lacks the position meanings of a 7-card pyramid, whether a question is required or optional for this spread, and how it differs from the more common three-card and celtic cross siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Six parameters at ~50% schema description coverage; `art`, `fields`, and `precision` are documented in the schema, but `question`, `seed`, and `allowReversed` are undocumented anywhere. The description contributes no parameter meaning at all, so it fails to compensate for the coverage gap, particularly on seed reuse and reversal behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific spread variant ('7-card pyramid spread'), which distinguishes it from the sibling draw_single, draw_three_card, and draw_celtic_cross tools. It is a noun fragment with no verb and no mention of tarot/Marseille, but the variant name alone is enough to identify the resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to choose this spread over the many siblings (three-card, cross, celtic cross, love, career, decision). No prerequisites, no note on whether a `question` is expected for this particular spread.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_singleMarseille: Single CardC
Read-onlyIdempotent
Inspect

Single-card draw from Marseille deck.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/single] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the transport endpoint and a concrete cost (10 credits, Tier 1), which is genuinely useful billing context, but says nothing about whether the draw is randomized, whether the seed makes it reproducible, or how reversals are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single descriptive sentence is front-loaded and waste-free, but the bracketed group/endpoint/cost block is scaffolding shared across hundreds of sibling tools rather than information unique to this definition. Terse to the point of being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. However, with six optional parameters and no required fields, the description leaves the agent guessing about what a caller should supply and when, which is a meaningful omission for a drawing tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: `seed`, `question`, and `allowReversed` carry no schema documentation, and the description does not compensate for any of them. For a divination tool, the absence of any note on `question` or `allowReversed` (which defaults to true and changes the result set) is a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: a single-card draw from the Marseille deck. It is clear enough to distinguish from multi-card spreads like draw_three_card or draw_celtic_cross, but it never contrasts itself with near-neighbors such as marseille_daily, marseille_birth_card, or marseille_clarify, which may also produce single-card output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use a single-card draw rather than any other Marseille spread, no mention of prerequisites, and no named alternative. The bracketed endpoint and cost tags are metadata, not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_spiritualMarseille: SpiritualB
Read-onlyIdempotent
Inspect

4-card spiritual development spread.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/spiritual] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds the credit cost (10 credits, Tier 1) and the endpoint, which is genuinely useful context. However, it says nothing about determinism via seed or what the draw returns, so it adds only moderate value over structured data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the single substantive fact (the spread) and the bracketed metadata is compact and scannable. Every line carries information, though the group/endpoint/cost lines are boilerplate rather than description prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and cost plus endpoint are disclosed. Still, for a 6-parameter, zero-required draw tool in a crowded sibling family, the absence of routing guidance and parameter explanation leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields, and precision are documented in-schema, but seed, question, and allowReversed are not. The description explains none of these parameters, so it fails to compensate for the coverage gap; it neither clarifies the effect of allowReversed nor the determinism role of seed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific spread ('4-card spiritual development spread'), which is precisely what separates it from siblings like draw_love, draw_career, or draw_single. The verb is only implied via the tool name, and it does not explicitly route against those siblings, but the resource and scope are clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, despite a large family of sibling draw tools (draw_love, draw_career, draw_decision, draw_hero, draw_cross, etc.) where selection guidance would be most valuable. The spread label hints at the domain but leaves routing to inference by the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_draw_three_cardMarseille: Three-CardB
Read-onlyIdempotent
Inspect

Past / Present / Future three-card spread.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/draw/three-card] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is fully covered. The description usefully adds the cost (10 credits, Tier 1) and HTTP endpoint, which are real context beyond the structured fields, but adds nothing about seeding behavior, reversals, or determinism.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line spread definition followed by compact metadata taglines; nothing is padded. The bracket tags are dense but functional rather than redundant prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover safety. But the description leaves two of six parameters completely undefined and gives no usage context, which is thin for a 6-param, no-required-field tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%; seed, question, and allowReversed are undocumented in the schema, and the description contributes no parameter semantics at all. With 6 parameters and no required ones, the description should at least clarify what question and allowReversed do, but it does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific spread and its positional meaning (Past/Present/Future) for a tarot draw. The group tag and name identify the Marseille deck, though the description body itself never restates 'Marseille' or the draw verb, leaving cross-deck distinction to the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative routing is given. With sibling spreads like draw_single, draw_cross, draw_celtic_cross, draw_love, and the parallel rider_waite/lenormand three-card tools, an agent gets no help choosing among them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_interpretMarseille: InterpretB
Read-onlyIdempotent
Inspect

Resolve list of card slugs into meanings.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/interpret] [Required: cards] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
cardsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
cardsNo
questionNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, destructive=false, openWorld=false, so the safety profile is covered. The description adds genuinely useful non-structured info: the 10-credit Tier 1 cost and the POST endpoint. It does not disclose return shape, but an output schema exists for that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action in one sentence, then packs metadata into bracketed tags with zero filler. Efficient and scannable, though the tags are more structural housekeeping than description content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema covers return values and annotations cover safety, so those gaps are fine. However, for a 5-param tool with only 1 required, the description supplies no usage context and no elaboration on the optional art/fields/precision params, leaving an agent to infer invocation intent from siblings alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%. The description clarifies the required 'cards' argument as 'card slugs' (the schema leaves cards undescribed), adding real value, but the other four params (art, fields, question, precision) receive no description-level elaboration beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Resolve list of card slugs into meanings'), which clearly conveys the operation. Deck variant (Marseille) and the interpret-vs-draw distinction are implied by the title and group tags, but the description does not explicitly differentiate from siblings like tarot_marseille_cards_slug or tarot_rider_waite_interpret.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is '[Required: cards]', which states a prerequisite but not when to use this tool versus the many draw_* siblings or the RWS interpret variant. No when-to-use context or exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_majorsMarseille: 22 MajorsC
Read-onlyIdempotent
Inspect

22 Major Arcana of Marseille deck.

[Group: Tarot: Marseille] [Endpoint: GET /v1/tarot/marseille/majors] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

C2.4/5.0
Behavior3/5

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 useful billing context ([Cost: 10 credits (Tier 1)]) and the endpoint, but discloses nothing else about behavior beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded, with metadata tags clearly separated. No wasted prose, though the brevity reflects under-specification rather than deliberate economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explanation, and direction is covered by annotations, but for a listing tool inside a dense Marseille tool family the description does nothing to help an agent choose it or understand how it differs from the full-deck 'cards' endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both 'fields' and 'precision' are fully documented in the schema, so the baseline is 3. The description contributes no additional meaning about how these parameters affect this specific listing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description '22 Major Arcana of Marseille deck' essentially restates the title 'Marseille: 22 Majors' with no verb indicating what operation occurs (list? draw? describe?). It names the resource but leaves the action ambiguous and does nothing to distinguish it from siblings like astroway_tarot_marseille_cards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance whatsoever, no mention of the related Marseille card/spread tools, and no condition under which an agent should prefer this over astroway_tarot_marseille_cards or astroway_tarot_marseille_spreads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_spreadsMarseille: All SpreadsB
Read-onlyIdempotent
Inspect

List of all Marseille spreads (incl. Jodorowsky cross).

[Group: Tarot: Marseille] [Endpoint: GET /v1/tarot/marseille/spreads] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

B3.2/5.0
Behavior3/5

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 by structured data. The description adds genuinely useful non-annotation context: the cost (10 credits, Tier 1) and the underlying endpoint, which helps with budgeting and tracing. It says nothing further about pagination or response size, so it is adequate rather than rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and waste-free, with the endpoint/group/cost metadata compactly bracketed below. Nothing is padded, though the bracketed metadata is templated and contributes less than the opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and the two optional params are fully documented in the schema. What is missing is routing context: in a catalog with 'spreads' and 'spreads_slug' sitting next to each other, the description should say which to pick, and it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both 'fields' and 'precision' are fully documented in the input schema, including examples and defaults. The description adds no parameter guidance beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('List of all Marseille spreads') and even names an included item (Jodorowsky cross), so the agent knows exactly what it returns. It does not, however, distinguish itself from the sibling astroway_tarot_marseille_spreads_slug, leaving the 'all vs. one' distinction to be inferred from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no pointer to the obvious alternative (astroway_tarot_marseille_spreads_slug) for fetching a single spread. The agent must infer usage entirely from the name and title.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_spreads_slugMarseille: Single SpreadB
Read-onlyIdempotent
Inspect

Definition of a single Marseille spread.

[Group: Tarot: Marseille] [Endpoint: GET /v1/tarot/marseille/spreads/{slug}] [Required: slug] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
slugYesSpread slug, lowercase and hyphenated.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
slugNo
cardCountNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds a genuinely useful behavioral detail in the '[Cost: see your plan — endpoint not in the public credit manifest]' line, but it doesn't disclose anything about return payload or latency, so it is a modest addition rather than rich transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single-line purpose is front-loaded and the bracketed metadata lines are terse and scannable. There is some redundancy between the endpoint line and the description, but nothing is wasteful enough to hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full input schema, an output schema, and annotations covering the safety profile, the definition only needs to add routing and cost context, which it partially does. The cost note is vague ('see your plan') and no alternative is named, leaving a small gap for an agent choosing among the numerous tarot siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so slug, fields, and precision are already documented in the schema itself. The description only repeats '[Required: slug]' and adds no syntax, format, or usage nuance beyond the structured fields, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource (a single Marseille spread) and its scope via the word 'single', which implicitly contrasts with the sibling list tool astroway_tarot_marseille_spreads. However, it uses a noun phrase ('Definition of...') rather than a verb and never explicitly names the list alternative, so the differentiation relies on inference rather than direct contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusion conditions, and no named alternative. The only usable cue is the bracketed '[Required: slug]' line, which implies you need a known slug but does not tell the agent when to prefer this tool over the spreads list or the draw_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_timingMarseille: TimingC
Read-onlyIdempotent
Inspect

Single timing card.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/timing] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.6/5.0
Behavior3/5

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 the cost (10 credits, Tier 1), which is genuinely useful behavioral context beyond the annotations, but says nothing about how the draw behaves or what determines the timing result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is short and the endpoint/group/cost blocks are well-structured metadata. But the actual purpose line is a three-word fragment that is under-specified rather than genuinely concise, leaving little for an agent to act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explanation is not required. Still, for a 6-parameter divination tool with no required fields, the definition omits the usage context, the role of the question/seed inputs, and any distinction from sibling draws, leaving the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, three parameters (seed, question, allowReversed) are undocumented in both schema and description. The description adds no meaning for any parameter, not even the central `question` field that would drive a timing reading, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Single timing card" conveys a single-card draw oriented to timing questions, which is marginally more than the title. However it gives no verb, no explanation of what a timing card answers, and no differentiation from close siblings like astroway_tarot_marseille_draw_single or astroway_tarot_rider_waite_timing. The purpose is inferable but vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use guidance, no prerequisites, and no mention of alternatives such as draw_single, clarify, or the Rider-Waite timing sibling. An agent must infer the use case entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_marseille_year_cardMarseille: Year CardB
Read-onlyIdempotent
Inspect

Year card per Greer method.

[Group: Tarot: Marseille] [Endpoint: POST /v1/tarot/marseille/year-card] [Required: date, year] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
yearYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
cardNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful operational context the annotations cannot: the POST endpoint, the required input set, and a 10-credit Tier 1 cost. It does not explain what a Greer year card represents or how the computation resolves, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line definition plus a compact bracketed metadata block is tightly front-loaded, with endpoint, requirements and cost immediately visible. No filler sentences. Slightly terse on substance but structurally efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and the cost/endpoint/required metadata round out the call mechanics. However, for a specialized esoteric calculation keyed to a named method, the description gives no indication of what the caller should expect or how it differs meaningfully from the birth-card sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 60%, and the schema itself documents art, fields, and precision in reasonable detail. The description only restates the two required parameters (date, year), which are already visible in the schema's required array, so it adds little semantic value. Baseline 3 for a moderately documented schema is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific artifact (Year card) computed per a named method (Greer) within a specific deck tradition (Marseille). It is clearly separable from the Rider-Waite sibling astroway_tarot_rider_waite_year_card by the tradition named. It stops short of explicitly distinguishing itself from its sibling, so not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no alternative tool is named. The agent must infer from the title alone that this is the Marseille-specific variant of a year-card calculation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_adviceRWS: Advice CardC
Read-onlyIdempotent
Inspect

Single advice card.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/advice] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and closed-world, so the safety profile is fully covered without the text. The description usefully adds operational facts the annotations do not carry: the endpoint, that it is a POST, and a cost of 10 credits (Tier 1). It says nothing about return shape or whether the draw is deterministic given the seed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is three short lines and the one substantive statement, 'Single advice card', is front-loaded ahead of the metadata brackets. Nothing is padded or repetitive; it is terse but well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With six optional parameters, no required fields, and a specialized domain (RWS tarot), the description does far too little: it omits usage routing, omits any explanation of the undocumented parameters, and only gestures at cost. The output schema covers return values, so that omission is fine, but the input-side gaps are substantial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: art, fields, and precision are documented in the schema, but seed, question, and allowReversed (which defaults to true) have no descriptions anywhere. The description does not compensate for that gap in any way, and 'advice card' gives no hint that a question can be supplied or that reversed cards are permitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'Single advice card' identifies both the resource (a tarot card) and the shape of the result (one card, advice-oriented), which is more specific than the name alone. However, it does not distinguish this from near-identical siblings such as astroway_tarot_rider_waite_draw_single, _clarify, or _draw_decision, so an agent cannot tell why it would pick this one over those.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: no statement of what an 'advice' reading is for, no exclusions, and no reference to the many sibling tarot drawing tools. The 'advice' label implies a context but never states one, leaving selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_birth_cardRWS: Birth CardA
Read-onlyIdempotent
Inspect

Birth card from date per Mary Greer's method (m+d+y reduced).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/birth-card] [Required: date] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
primaryNo
secondaryNo

TDQS

A3.7/5.0
Behavior4/5

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 cost (10 credits, Tier 1), the endpoint, and the required input, which are genuinely useful operational details beyond the annotations. It does not cover return format, but an output schema exists to carry that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence of purpose followed by compact bracketed metadata (group, endpoint, required, cost). Zero filler and front-loaded with the core definition; the tag block is dense but each entry carries real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety, an output schema present, and pricing/endpoint/required-input disclosed, an agent has enough to call the tool correctly. The remaining gap is sibling differentiation against the many other tarot card tools, which is only indirectly handled by the group tag.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%; the schema itself documents art, fields, and precision. The description only reinforces that date is required and adds no syntax or semantics beyond the schema. Baseline 3 is appropriate when the schema does the bulk of the parameter work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: computes a birth card from a date using Mary Greer's m+d+y reduction method. The [Group: Tarot: Rider-Waite-Smith] tag and the distinct sibling astroway_tarot_marseille_birth_card let an agent separate it from the Marseille variant, though the description body itself does not name that distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by naming a specific method (Mary Greer) and the required date parameter, but there is no explicit when-to-use, no exclusions, and no routing to alternatives such as the Marseille birth card or the RWS year_card / soul_personality_card. An agent must infer selection from the group tag alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_cardsRWS: All CardsA
Read-onlyIdempotent
Inspect

Full 78-card RWS deck listing with upright/reversed meanings, keywords, astrology, and yes/no affinity.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/cards] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

A3.5/5.0
Behavior4/5

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 value beyond them: the exact content of each card record (upright/reversed, keywords, astrology, yes/no affinity) and the operational cost (10 credits, Tier 1), which helps an agent budget calls.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is a single front-loaded sentence with no filler, and the bracketed group/endpoint/cost lines are scannable metadata. Slight deduction because the metadata block is three separate lines of overhead for a read-only listing tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 covers scope, contents, and cost. The remaining gap is sibling routing within the dense RWS family, which an agent could get wrong.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (fields, precision) are documented in the schema itself, so baseline 3 applies. The description adds nothing about parameter behavior, and notably the schema's fields/precision examples reference planets/longitudes, which look copied from a chart tool and are not reconciled here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource plus scope: 'Full 78-card RWS deck listing with upright/reversed meanings, keywords, astrology, and yes/no affinity.' An agent knows exactly what comes back. It stops short of 5 because it never distinguishes itself from close siblings like astroway_tarot_rider_waite_cards_slug, _majors, _minors, or _courts, which the agent must disambiguate by schema alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no named alternative. The agent must infer that this is a full-reference-deck lookup versus the slug/majors/minors/courts siblings. Usage is only implied by the word 'Full'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_cards_slugRWS: Single CardA
Read-onlyIdempotent
Inspect

Single RWS card lookup by slug (e.g. "the-fool", "ace-of-cups"). Returns full meaning structure.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/cards/{slug}] [Required: slug] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
slugYesCard slug, lowercase and hyphenated.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
nameNo
slugNo
uprightNo
categoryNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so the safety profile is covered. The description adds 'Returns full meaning structure' and a cost note ('endpoint not in the public credit manifest'), the latter being genuinely useful billing context, but it omits any error behavior for unknown slugs or pagination/field-selection implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the essential purpose front-loaded, followed by machine-readable bracketed metadata. Slight redundancy between the [Required: slug] line and the prose, but nothing is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, full response shape need not be described, and annotations plus 100% parameter coverage handle the rest. The definition is sufficient for correct invocation; only sibling routing guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline would be 3; the description pushes above that by giving concrete slug examples ('the-fool', 'ace-of-cups') that clarify the required identifier format beyond the schema's generic 'lowercase and hyphenated'. The optional `fields`/`precision` parameters are left entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: single RWS tarot card lookup by slug, with two concrete slug examples. It implicitly contrasts with the bulk `astroway_tarot_rider_waite_cards` sibling via 'Single', but never names that alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'single card lookup' — an agent can infer this is for retrieving one known card versus listing or drawing spreads — but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. the cards index, keywords, or interpret tools).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_clarifyRWS: Clarifier CardB
Read-onlyIdempotent
Inspect

Single clarifying card after a primary draw.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/clarify] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds cost (10 credits, Tier 1) and the endpoint, which is useful operational context, but says nothing about output format, determinism of the seed, or whether the clarifier relates to a supplied question. With annotations carrying the safety burden, a 3 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by compact bracketed metadata (group, endpoint, cost). No filler prose and nothing is buried. The bracketed blocks are a bit boilerplate but do not bloat the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. What is missing is routing among the many tarot siblings and any guidance on the undocumented parameters (question, seed, allowReversed), leaving the definition minimally adequate for a 6-param tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: seed, question and allowReversed have no schema descriptions, and the description adds no parameter guidance whatsoever. Even the covered params (art, fields, precision) get no elaboration in the description. The description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource and role: a single clarifying card drawn after a primary draw. An agent can tell it is a draw-type operation on the Rider-Waite deck. It does not, however, name or distinguish itself from closely related siblings such as astroway_tarot_rider_waite_draw_single or astroway_tarot_marseille_clarify.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"after a primary draw" implies the usage context (sequencing relative to a prior reading), which is genuinely useful. But there is no explicit when-not, no stated alternative (e.g., draw_single for a fresh draw, marseille_clarify for the Marseille deck), and no prerequisite that a primary question/context should be supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_courtsRWS: 16 Court CardsB
Read-onlyIdempotent
Inspect

The 16 Court cards (Page, Knight, Queen, King × 4 suits).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/courts] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, non-destructive, so safety is fully covered. The description adds the card composition and, via bracketed metadata, the endpoint and a credit cost (10 credits, Tier 1), which is useful operational context. It does not say whether the result is a static catalog or describe pagination, so it goes slightly beyond annotations without being rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence stating exactly what the tool returns, followed by compact group/endpoint/cost metadata. Nothing is wasted and the resource definition is front-loaded, though the sentence is arguably too terse for the routing decision an agent must make.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a zero-required-parameter reference lookup with an output schema, so return values and field shapes need no description. Composition plus endpoint and cost cover what an agent needs to call it; the only real omission, sibling routing guidance, is assessed under usage guidelines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and both parameters (fields, precision) are generic compact-mode controls documented in the schema itself. The description adds no parameter meaning beyond that, which is the expected baseline 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource and enumerates its composition ('16 Court cards (Page, Knight, Queen, King × 4 suits)'), which immediately tells an agent what dataset it returns. It does not explicitly contrast itself with siblings like astroway_tarot_rider_waite_majors or astroway_tarot_rider_waite_cards, though the count and card set differentiate it in practice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this lookup versus astroway_tarot_rider_waite_cards (all 78), _majors, _minors, _suits_suit, or _numbers_n. The agent must infer routing purely from names, and no exclusion or alternative is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_cross_sumRWS: Court Card Cross-SumC
Read-onlyIdempotent
Inspect

Birth-card meditation pair for court-card practice.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/cross-sum] [Required: date] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
meditationPairNo

TDQS

C2.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful context the annotations lack: credit cost (10, Tier 1), the required parameter, and the concrete endpoint. It still says nothing about latency, output shape, or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The bracketed metadata block is scannable and front-loads group, endpoint, required param and cost efficiently. The prose sentence, however, is short yet contentless, so brevity here reflects under-specification rather than disciplined concision.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 described, and the required param and cost are stated. The critical gap remains the opaque core purpose: an agent has no way to know what this computation does or when it applies, which is inadequate for a specialized divination endpoint in a dense tool family.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75%; art, fields, and precision are well documented in the schema itself. The description only echoes 'Required: date', which duplicates the schema's required array and the YYYY-MM-DD pattern, adding no new parameter meaning. Baseline 3 applies 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.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The line 'Birth-card meditation pair for court-card practice' contains no action verb and never explains what the 'cross-sum' actually computes or returns. An agent reading it alongside dozens of sibling RWS tools (birth_card, courts, daily, year_card) cannot tell what distinct output this produces. It reads as a thematic restatement of the title rather than a purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no selection criteria versus astroway_tarot_rider_waite_birth_card or astroway_tarot_rider_waite_courts, and no stated prerequisites. The metadata block gives 'Required: date' and cost, but that is invocation detail, not usage guidance for choosing among alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_dailyRWS: Daily CardB
Read-onlyIdempotent
Inspect

Daily card based on date seed (deterministic per day).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/daily] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
seedNo
drawnNo
spreadNo
localizedNo

TDQS

B3.3/5.0
Behavior3/5

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 genuinely useful behavior beyond that: the card is deterministically seeded per day, and the call costs 10 credits (Tier 1). It does not say whether omitting `date` defaults to today, which is the main remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence conveying the core behavior, followed by compact bracketed metadata for group, endpoint, and cost. Nothing is wasted and the operative fact (date-seeded daily card) comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and annotations cover safety. With four optional parameters, the definition is serviceable but leaves the default-date behavior and the choice against sibling draw/daily tools unspecified, which an agent would need to resolve before calling confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%, so the schema already documents `art`, `fields`, and `precision` in detail. The description's only added semantics is that the result is date-seeded, which loosely implies the role of `date` but gives no syntax, default, or timezone behavior. Baseline 3 is appropriate when the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: a daily tarot card drawn for the Rider-Waite-Smith deck, seeded deterministically by date. The group tag and endpoint reinforce the identity, so an agent knows what it returns. It stops short of distinguishing itself from lookalike siblings (astroway_tarot_marseille_daily, astroway_tarot_lenormand_daily, astroway_iching_daily) beyond the embedded group label.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not guidance. Nothing tells the agent to pick this over astroway_tarot_rider_waite_draw_single for an on-demand card, or how the fixed-per-day semantics differ from a regular draw. Usage is left entirely to inference from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_careerRWS: CareerB
Read-onlyIdempotent
Inspect

5-card career trajectory spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/career] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, and the description adds genuinely useful operational context: the endpoint and a 10-credit cost. It says nothing about randomization determinism (relevant given the seed parameter) or how allowReversed affects the draw.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Compact and front-loaded: the purpose statement comes first, followed by three short bracketed metadata lines. No wasted prose, though the metadata blocks are not themselves usage-relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and annotations carry the safety profile, which lowers the burden. Still, three of six parameters are undocumented and there is no guidance on choosing this spread over its many siblings, leaving it only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields, and precision are documented, but seed, question, and allowReversed have no schema description and no coverage in the description either. The description does not compensate for that gap at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the operation and resource precisely: a 5-card career trajectory spread, which is distinguishable from other RWS spreads by both topic and card count. It does not, however, distinguish itself from siblings like astroway_tarot_marseille_draw_career or astroway_reports_career beyond the group tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no named alternatives despite a large family of spread and career-report siblings. The '[Group: ...]' line is classification metadata, not usage instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_celtic_crossRWS: Celtic CrossB
Read-onlyIdempotent
Inspect

Classical 10-card Celtic Cross spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/celtic-cross] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo
localizedNo

TDQS

B3/5.0
Behavior3/5

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 genuinely useful non-schema context: the cost (10 credits, Tier 1) and the POST endpoint. It does not mention determinism/seed behavior or how reversed cards affect results, which is a moderate gap given `allowReversed` exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by bracketed metadata; no filler sentences. The metadata block is dense and earns its place by conveying cost and endpoint, though it substitutes for rather than supplements descriptive content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. However, with six parameters (three undocumented), no required inputs, and no usage guidance, the definition is only minimally sufficient for an agent to call it correctly with a meaningful question.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: `art`, `fields`, and `precision` are documented, while `seed`, `question`, and `allowReversed` carry no description at all. The description adds nothing about any parameter, so it fails to compensate for the undocumented half. It also leaves the copy-pasted astrological examples ('planets.longitude, houses.cusp') in the `fields` schema unexplained for a tarot tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific spread ('Classical 10-card Celtic Cross') and the group tag pins the deck system (Rider-Waite-Smith), which distinguishes it from the Marseille and Lenormand Celtic Cross siblings. The action verb is only implied by the endpoint line rather than stated in prose, but the resource and deck are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to pick this 10-card spread over the many sibling RWS draws (three_card, horseshoe, relationship, year_ahead), nor any mention of the optional `question` parameter or exclusions. The description is pure identification metadata, so an agent gets no routing help beyond the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_chakraRWS: ChakraC
Read-onlyIdempotent
Inspect

7-card chakra spread (Root → Crown).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/chakra] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so safety is covered. The description adds a cost line (10 credits, Tier 1) which is genuinely useful context an agent can't get elsewhere. Beyond that it says nothing about what's produced or how the chakra positions map to output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The spread description is a single front-loaded clause; the bracketed group/endpoint/cost lines are terse metadata rather than padded prose. Efficient overall, though the metadata occupies more lines than the actual purpose statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tarot draw in a very large sibling namespace, the description omits what the chakra positions mean, whether a question is required, and how `seed`/`allowReversed` affect the draw. The cost line is a plus, but the missing usage and parameter context leaves the agent guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; the undocumented parameters are `seed` and `question` (and the boolean `allowReversed` is only labeled by its name). The description does not explain the `seed` (determinism), `question` (free-text framing), or `allowReversed` (upright-only toggle) semantics, leaving half the surface unexplained despite an output schema existing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific spread type and deck ('7-card chakra spread (Root → Crown)') with a group tag for Rider-Waite-Smith. This distinguishes it from other RWS spreads and Lenormand/Marseille variants. It doesn't explicitly name which sibling spreads it competes with, but the spread name and deck are specific enough to be unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no indication of what question types suit a chakra spread vs a celtic cross or three-card spread, and no mention of whether a question input is expected. The endpoint/cost metadata is operational, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_decisionRWS: Yes/NoB
Read-onlyIdempotent
Inspect

Single-card draw with yes/no/maybe verdict from card affinity.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/decision] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
reasonNo
spreadNo
verdictNo

TDQS

B3/5.0
Behavior3/5

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 needs no restatement. The description adds credit cost (10 credits, Tier 1) and the endpoint, which is genuine operational context, but says nothing about how 'card affinity' is computed or whether seeding makes draws reproducible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substance is front-loaded in a single efficient sentence, followed by clearly delineated bracketed metadata lines for group, endpoint, and cost. Nothing is padded, though the bracketed block is boilerplate rather than tool-specific explanation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and annotations cover the safety profile. Still, for a 6-parameter tool the definition leaves 'card affinity' undefined and does not explain how the question parameter relates to a meaningful verdict.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields, and precision are documented in the schema, while seed, question, and allowReversed are not. The description adds no parameter meaning at all, leaving notably allowReversed (which directly affects the affinity verdict) and the question field unexplained anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Single-card draw') plus the distinguishing output ('yes/no/maybe verdict from card affinity'), which separates it in effect from astroway_tarot_rider_waite_draw_single. It does not explicitly name that sibling or explain how the decision variant differs beyond the verdict, so it falls short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Only implied guidance is available: the yes/no/maybe verdict suggests it is for decision questions, but there is no statement of when to choose it over draw_single, draw_three_card, or the Marseille decision tool, and no prerequisites or exclusions are given. Cost and endpoint metadata are supplied, but that is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_horseshoeRWS: HorseshoeB
Read-onlyIdempotent
Inspect

7-card horseshoe progression.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/horseshoe] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds genuinely useful context not in the annotations — the endpoint and the 10-credit Tier 1 cost — but says nothing about what the draw produces or how the question is used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose in one sentence, with metadata tags for group, endpoint, and cost. Compact and waste-free, though the bracketed metadata lines are boilerplate rather than descriptive content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. However, for a readings tool the spread's meaning and the role of the optional question parameter are left entirely implicit, leaving the definition minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description contributes nothing about the six parameters. With schema coverage at only 50%, seed, question, and allowReversed are undocumented in both the schema and the description, so the description fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"7-card horseshoe progression" names a specific resource (a tarot spread draw) and adds the card count beyond the bare tool name. It is clearly distinct from non-spread siblings, but it does not differentiate itself from other spread siblings like draw_celtic_cross or draw_three_card beyond the spread label.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance and no reference to alternatives, despite a large family of sibling spread tools (celtic cross, three-card, year ahead, decision). The agent gets no signal for choosing horseshoe over any other spread.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_love_triangleRWS: Love TriangleC
Read-onlyIdempotent
Inspect

6-card three-person love dynamics.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/love-triangle] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.7/5.0
Behavior3/5

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 genuinely useful non-annotation context — the POST endpoint and a 10-credit Tier 1 cost — but says nothing about determinism of the seed, how allowReversed affects the draw, or what the six card positions represent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded, with the substantive phrase first and metadata lines after. It is efficient, but the brevity crosses into under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations carry the safety profile. However, for a divination draw with three undocumented parameters and a specialized spread, the description leaves the agent without enough context on how the draw behaves or when to prefer it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields, and precision are documented in the schema, but seed, question, and allowReversed have no description anywhere. The description contributes zero parameter meaning (the '6-card' phrase is spread-level, not parameter-level), so it fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase '6-card three-person love dynamics' names the resource (a six-card love-triangle spread) with some specificity, and the group/endpoint lines confirm the domain. But there is no verb (draw/deal/interpret) and no explicit contrast with the nearby astroway_tarot_rider_waite_draw_relationship sibling, so the agent must infer the action from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no alternatives are named. An agent deciding between this, draw_relationship, and the near-duplicate astroway_trwd_love_triangle gets no help from the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_relationshipRWS: RelationshipC
Read-onlyIdempotent
Inspect

7-card relationship dynamics.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/relationship] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

C2.6/5.0
Behavior3/5

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 covered. The description does add real operational context the annotations lack: cost (10 credits, Tier 1) and the POST endpoint. It says nothing, however, about whether drawn cards are deterministic given a seed, or how reversal handling works.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is one line and front-loaded, and the bracketed group/endpoint/cost lines are terse structured metadata rather than prose. But the brevity reflects under-specification rather than economy – there is essentially nothing beyond a spread size and an endpoint.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-shape explanation is fairly excused, but for a 6-parameter divination tool the description never explains what the seven positions mean, whether an optional question is required for a meaningful reading, or how this tool differs from its numerous siblings. An agent can invoke it but not confidently choose it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50%: art, fields and precision are documented in the schema, while question, seed and allowReversed (which defaults to true) have no documentation anywhere. The description provides zero parameter information to compensate, and for a 6-parameter tool with an undocumented question field this is a meaningful gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"7-card relationship dynamics" states the resource (a relationship-oriented tarot draw) and the spread size, but omits the verb and gives no basis for choosing it over near-identical siblings such as astroway_tarot_rider_waite_draw_love_triangle or astroway_tarot_lenormand_draw_relationship. The tool family and deck are only recoverable from the bracketed metadata, not from the sentence itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative guidance at all. With dozens of sibling draw tools (draw_single, draw_three_card, draw_celtic_cross, draw_love_triangle, draw_chakra, draw_horseshoe), an agent has no stated rule for preferring the 7-card relationship spread over any of them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_shadow_workRWS: Shadow WorkB
Read-onlyIdempotent
Inspect

6-card shadow integration spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/shadow-work] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

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 usefully adds billing context (10 credits, Tier 1) and the endpoint. It does not explain how seeding/randomness works or whether a question is expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely terse and front-loaded: spread description first, then bracketed group/endpoint/cost metadata. Nothing is wasted, though the brevity edges toward under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and cost/endpoint are covered. However the undocumented parameters and absent usage guidance leave real gaps for a draw tool competing with a dozen sibling spreads.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%, with seed, question, and allowReversed carrying no descriptions, and the description adds no parameter meaning at all. For a 6-parameter draw tool this leaves half the surface undocumented in both places.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the specific spread type and card count ('6-card shadow integration spread'), which distinguishes it from the many sibling draws (single, three-card, celtic cross, horseshoe). It lacks an explicit verb but the resource is unambiguous in context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use guidance and never mentions alternatives such as the sibling shadow_card or spiritual_path spreads. An agent must infer selection purely from the spread name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_singleRWS: Single Card DrawB
Read-onlyIdempotent
Inspect

Draw 1 card from the RWS deck. Optional seed for deterministic shuffle.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/single] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo
localizedNo

TDQS

B3/5.0
Behavior3/5

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 useful context by explaining the seed's purpose ('deterministic shuffle') and disclosing cost (10 credits) and endpoint, but it says nothing about reversal behavior or how the draw is reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and the seed hint are front-loaded in one tight sentence, and the bracketed group/endpoint/cost block is compact and useful metadata. Nothing is padded, though the metadata block is somewhat formulaic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover safety. The description covers purpose, cost, and the seed's determinism, but leaves half the parameters and the reversal behavior unaddressed, which is thin for a six-parameter draw tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: seed, question, and allowReversed have no descriptions in the schema. The description rescues only one of them by explaining the seed as a deterministic shuffle control, leaving 'question' and 'allowReversed' undocumented in both places. Given six parameters and half left undefined, this does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Draw 1 card from the RWS deck') and the title reinforces the deck and single-card scope, so an agent can distinguish it from the many tarot draw siblings. It stops short of explicitly differentiating from adjacent tools like draw_three_card or the Marseille draw_single, so it is clear but not fully sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Beyond 'Draw 1 card,' there is no guidance on when to choose this tool versus the other RWS spread tools (three_card, celtic_cross, love_triangle, etc.) or the Marseille single draw. The tool's place among siblings must be inferred entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_spiritual_pathRWS: Spiritual PathB
Read-onlyIdempotent
Inspect

5-card spiritual development spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/spiritual-path] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-schema context — the 10-credit Tier 1 cost and the POST endpoint — but says nothing about whether the optional `seed` makes the draw reproducible or how `question` influences the spread.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single prose sentence is front-loaded and waste-free, with metadata lines clearly separated. It is tight, though the brevity is partly what leaves usage and parameter gaps.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover the safety profile. Still, for a tool with 6 parameters and dozens of near-identical siblings, the absence of any selection guidance or parameter elucidation leaves the definition minimally viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: `art`, `fields`, and `precision` are documented, but `seed`, `question`, and `allowReversed` are not. The description adds no parameter meaning whatsoever, so it fails to compensate for the undocumented half of the inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource and structure: a 5-card spiritual-development spread, which is more informative than a bare name restatement. It does not, however, distinguish this spread from the many sibling draws (shadow_work, chakra, Marseille draw_spiritual, trwd_spiritual_path), so an agent must infer its niche from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to select this spread versus the dozens of sibling tarot draws, nor any prerequisites or exclusions. The agent gets a spread description but no routing guidance at all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_three_cardRWS: Three-Card DrawB
Read-onlyIdempotent
Inspect

Past / Present / Future three-card spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/three-card] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
backNo
seedNo
drawnNo
spreadNo
localizedNo

TDQS

B3/5.0
Behavior3/5

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 metadata not present in annotations — the credit cost (10, Tier 1) and the concrete endpoint — but says nothing about whether the draw is randomized, whether the seed makes it reproducible, or what auth is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short lines, front-loaded with the spread's meaning, followed by bracketed group/endpoint/cost metadata. Nothing is padded, though the metadata lines are more operational than semantic.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and cost/endpoint are supplied. However, with three undocumented parameters and no guidance on how the spread pairs with the many sibling tarot tools, the description is only minimally sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: seed, question, and allowReversed are undocumented in the schema, and the description adds no meaning for any of the six parameters. For a tool where 'seed' and 'allowReversed' materially change output, this leaves real gaps unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific spread type ('Past / Present / Future three-card spread'), which lets an agent distinguish it from the sibling spreads (celtic cross, horseshoe, year ahead, etc.) in the RWS family. The verb 'draw' is implied by the tool name and the endpoint, but is not stated in the description itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to choose this three-card spread over the dozens of sibling draws (single, relationship, career, decision, celtic cross), and no prerequisites or exclusions. The agent must infer selection purely from the spread name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_draw_year_aheadRWS: Year AheadB
Read-onlyIdempotent
Inspect

13-card spread (12 months + theme).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/year-ahead] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful non-schema context — the cost (10 credits, Tier 1) and the endpoint — but says nothing about what a draw returns or how seeding affects reproducibility. With annotations carrying the safety burden, a 3 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short and front-loaded: the spread definition comes first, followed by compact metadata tags. Every element is brief, though the group/endpoint/cost tags are boilerplate scaffolding rather than prose an agent reads for meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and the cost/endpoint tags are present. However, for a 6-parameter draw tool with half its parameters undocumented and no guidance on when to choose this over sibling spreads, the definition is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; art, fields and precision are documented, but seed, question and allowReversed carry no schema description. The description adds zero parameter information, so it does not compensate for the undocumented half — notably how the seed or question affects the draw.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete artifact — a 13-card spread of 12 months plus a theme — which tells the agent precisely what this draw produces. It does not explicitly distinguish itself from the many sibling draw tools (celtic cross, career, single, etc.), relying on the name for that, but the spread structure is stated clearly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the other year-ahead or tarot-draw siblings, no prerequisites, and no exclusions. The agent must infer usage entirely from the name and the spread size.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_elements_elementRWS: Cards by ElementB
Read-onlyIdempotent
Inspect

All Minor cards mapped to fire / water / air / earth element.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/elements/{element}] [Required: element] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
elementYesElemental attribution.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo
elementNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered and the description need not repeat it. The description does add two pieces of non-schema context: the endpoint path and the billing caveat ('endpoint not in the public credit manifest'), which is genuinely useful for cost-aware agents, but it says nothing about result size or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive sentence is front-loaded and the supporting metadata is compact and scannable. The bracketed boilerplate lines are slightly formulaic but each carries a distinct fact (group, endpoint, required param, cost).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and the enum is covered by the schema. What is missing is any operational framing (result volume, how the four element buckets relate, or when this beats a full deck fetch) for a tool sitting in a very crowded tarot namespace.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the element enum is documented in the schema, so the baseline of 3 applies. The description only repeats the required parameter name in brackets and adds nothing about how 'fields' or 'precision' compact-mode parameters behave.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete resource and filter: 'All Minor cards mapped to fire / water / air / earth element', which tells an agent exactly what comes back. It does not, however, distinguish itself from close siblings such as astroway_tarot_rider_waite_minors, _suits_suit, or _numbers_n, so the boundary is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use statement and no named alternative. The only routing signal is the bracketed '[Required: element]' line, which restates the schema rather than advising the agent when elemental lookup is the right call versus a suit- or number-based lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_interpretRWS: Interpret a HandA
Read-onlyIdempotent
Inspect

Resolve a list of card slugs into structured meanings (POST /interpret/tarot writes the reading of the whole spread).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/interpret] [Required: cards] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
cardsYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
cardsNo
questionNo
narrativeStubNo

TDQS

A3.6/5.0
Behavior4/5

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 genuinely useful operational context beyond that: the cost (10 credits, Tier 1), the required parameter, and the HTTP endpoint. It does not describe response shape or limits, but the added cost/endpoint context earns above baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and waste-free, and the bracketed metadata (group, endpoint, required, cost) is scannable. The mix of prose and metadata block is slightly redundant but not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 cost/required/endpoint are covered. However, nothing states the card-count bounds, slug format expectations, or how `art` affects interpretation, leaving gaps for a 5-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%, and the description only confirms `cards` is required and characterizes them as slugs. Parameters like `art`, `fields`, `question`, and `precision` are not elaborated in the description beyond what the schema already says. Marginal added value over the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: resolve a list of card slugs into structured meanings. It also distinguishes itself from the whole-spread reading by citing POST /interpret/tarot, though it references a sibling by endpoint rather than by tool name, which is weaker for selection among the many `astroway_tarot_rider_waite_*` siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (you have card slugs and want their meanings) and the parenthetical contrast with the spread-reading endpoint hints at when to prefer the other tool. There is no explicit when-not or named alternative tool, so an agent still has to infer when to call this versus the draw/interpret siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_keywords_keywordRWS: Cards by KeywordB
Read-onlyIdempotent
Inspect

Substring search across upright and reversed keywords across all 78 cards.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/keywords/{keyword}] [Required: keyword] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
keywordYesKeyword to match. Substring match across both upright and reversed keywords.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo
keywordNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds genuine value beyond that: substring-match semantics, coverage of both upright and reversed keywords, and a cost caveat ('not in the public credit manifest'). It omits result ordering, pagination, and case sensitivity, so it is useful but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive sentence is front-loaded and the bracketed metadata block is compact and scannable, with no redundant prose. The bracket scaffolding is more housekeeping than description, but it costs little and stays out of the way.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, return values need not be explained, and the annotations cover the safety profile. For a single-keyword read-only search the description is nearly sufficient; only pagination or result-limit behavior is left unaddressed, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including keyword, fields, and precision is already documented in the schema. The description only echoes the substring-match behavior for keyword and adds nothing about fields or precision. Baseline 3 is appropriate when the schema carries the param burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource: a substring search over upright and reversed keywords spanning all 78 cards. That scope ('all 78 cards', both orientations) is distinctive enough to separate it from the many RWS siblings like cards, majors, minors, suits, or numbers. It stops short of naming a sibling 对比 alternative, so it's clear but not maximally differentiating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the search does but never states when to reach for it versus the other RWS lookup tools (cards, cards_slug, majors, minors, suits). There is no when-to-use, no exclusion, and no named alternative, so the agent must infer routing from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_majorsRWS: 22 MajorsB
Read-onlyIdempotent
Inspect

The 22 Major Arcana cards only.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/majors] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

B3.2/5.0
Behavior3/5

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 covered. The description adds genuinely useful facts not present in structured fields — the GET endpoint and the 10-credit Tier 1 cost — but explains nothing about auth or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very tight: one substantive sentence plus tagged metadata lines, with the resource statement front-loaded. Nothing is redundant, though the metadata block is the only place endpoint and cost appear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explanation, and annotations cover the safety profile. For a simple card-catalogue lookup the definition is nearly sufficient; only cross-tool routing guidance is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both optional parameters (fields, precision) are fully documented in the schema; baseline 3 applies. The description contributes nothing about parameters, and the schema examples reference planets/houses, which are incidentally irrelevant to a tarot card list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource — the 22 Major Arcana cards — and the word "only" implicitly excludes Minors and Courts, which are actual sibling tools (astroway_tarot_rider_waite_minors, astroway_tarot_rider_waite_courts). It lacks a verb (list/return), so the agent must infer this is a catalogue retrieval rather than a draw, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance and no routing to alternatives. The "only" qualifier hints that minors and courts live elsewhere, but the description never names the sibling tools an agent should pick instead, leaving selection entirely to inference from tool names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_minorsRWS: 40 MinorsB
Read-onlyIdempotent
Inspect

The 40 numbered Minor Arcana cards (Ace through 10 of each suit).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/minors] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/none-destructive, so the safety profile is covered. The description adds genuinely useful non-annotation context: the cost (10 credits, Tier 1), endpoint, and grouping, but says nothing about response payload or how the 40 cards are structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded core sentence that is lean and unambiguous, with bracketed metadata tags for group/endpoint/cost. Efficient, though the metadata brackets add little selection value for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 carrying the safety profile, the description only needs to establish scope and cost, which it does. The remaining gap is sibling disambiguation, which is minor for a straightforward catalog lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both optional params (fields, precision) are fully documented in the schema itself. The description adds no parameter meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It names a specific resource precisely: the 40 numbered Minor Arcana, Ace through 10 of each suit. That scope clearly delimits it from majors/courts siblings, though it never names those siblings explicitly to route the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs. the many sibling tarot tools (cards, majors, courts, spreads, draws). The agent must infer from the name alone that this is a browse-catalog tool rather than a reading tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_missing_infoRWS: Missing Info CardC
Read-onlyIdempotent
Inspect

Single card to surface hidden information.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/missing-info] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.8/5.0
Behavior3/5

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 usefully adds the endpoint, the 10-credit Tier 1 cost, and the group, which is real context beyond structured fields, but it says nothing about what the card result represents or how reversed cards behave.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose in the first line, then compact bracketed metadata for group, endpoint, and cost. No filler, though the metadata lines are structural rather than explanatory.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and annotations cover safety. Still, the description omits when to prefer this over its many sibling card tools and leaves three parameters undocumented, so it is only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: art, fields, and precision are documented in the schema while seed, question, and allowReversed are not. The description adds no parameter meaning at all, so it fails to compensate for the undocumented half, notably the default-true allowReversed flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb (surface) and resource (single card) with a thematic goal (hidden information), so an agent can grasp the intent. However, it does not distinguish this from similar siblings like astroway_tarot_rider_waite_draw_single, astroway_tarot_rider_waite_clarify, or astroway_tarot_rider_waite_shadow_card, leaving the specific niche of a 'missing info' card undefined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, no prerequisites, and no alternatives. Given the dense cluster of near-identical RWS single-card tools (draw_single, clarify, shadow_card, advice), the absence of routing guidance is a meaningful gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_numbers_nRWS: Cards of NumberB
Read-onlyIdempotent
Inspect

All Minor Arcana cards of a given number 1-14 (Ace=1..King=14).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/numbers/{n}] [Required: n] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
nYesCard number within a suit. 1 is the Ace, 11-14 are the courts. Majors are excluded.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo
numberNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the full safe-read profile (readOnly, idempotent, non-destructive, closed-world), so the description carries a lower burden. It usefully adds the endpoint path and a cost caveat ('endpoint not in the public credit manifest'), which is genuine behavioral context, but says nothing about response shape or filtering behavior beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence stating the purpose, followed by compact bracketed metadata. Nothing is wasted, though the bracket tags are boilerplate rather than explanatory content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and annotations cover the safety profile. The description is sufficient to invoke the tool correctly; the only missing piece is routing guidance among the many tarot siblings, which is a usage rather than completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 n, fields, and precision thoroughly. The description's '1-14 (Ace=1..King=14)' largely restates the n schema description, adding no syntax or semantics beyond what structured data already provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'All Minor Arcana cards of a given number 1-14', with a parenthetical mapping Ace=1 and King=14. An agent can tell it returns a filtered subset of the deck by number. It does not, however, explicitly distinguish itself from close siblings like courts, minors, or suits_suit, which also slice the same deck along different axes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the courts, minors, cards, or suits_suit siblings, nor any prerequisites. The only guidance is the numeric range/interpretation embedded in the parameter, which is usage-adjacent but not a when-to-use rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_outcomeRWS: Outcome CardC
Read-onlyIdempotent
Inspect

Single outcome card.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/outcome] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description usefully adds the billing context ('Cost: 10 credits (Tier 1)') and the exact endpoint, which are not in the structured fields, but it says nothing about output shape, reversal behavior, or whether a question is required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is compact and front-loaded, with the one-line purpose first and metadata grouped in brackets. Nothing is padded, though the extreme brevity borders on under-specification rather than tight writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 explained, but for a 6-parameter tool with only 50% schema coverage and no usage guidance, the description is too thin. It omits what an outcome card is, how it differs from sibling draws, and the role of the undocumented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: seed, question, and allowReversed have no schema descriptions at all, and the description supplies no meaning for them either. With half the parameters undocumented in both places, the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'Single outcome card' names a resource but supplies no verb (draw/generate/read) and gives no indication of what an 'outcome card' means relative to the many sibling tarot draws. The bracketed Group/Endpoint metadata confirms the domain, but an agent still cannot distinguish this from astroway_tarot_rider_waite_draw_single or astroway_tarot_rider_waite_daily 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of any alternative tool. The description never explains whether this is for a quick one-card outcome reading versus a full spread, leaving the agent to guess among dozens of Rider-Waite siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_shadow_cardRWS: Shadow CardC
Read-onlyIdempotent
Inspect

Shadow card pair (mirror in major arcana of personality card).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/shadow-card] [Required: date] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
shadowCardNo
personalityCardNo

TDQS

C2.9/5.0
Behavior3/5

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 covered. The description adds the cost (10 credits, Tier 1), which is genuinely useful behavioral context not in annotations, but says nothing about determinism of the derivation or how the pair is computed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded clause stating what the tool returns, followed by compact functional metadata. It is efficient and wastes little space, though the bracketed tags are boilerplate rather than descriptive prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and annotations cover safety. The remaining gap is that the domain concept ('shadow card' relative to the personality card) is only glancingly explained and no routing to related card tools is given, which for such a specialized lookup leaves the agent under-informed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%: art, fields, and precision are documented in the schema, while date has only a pattern. The description adds no parameter syntax or semantics beyond echoing that date is required, so it does not compensate for the undescribed required date. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource ('Shadow card pair') and parenthetically defines it as the mirror in the major arcana of the personality card, which is more than a tautology. However, the domain term is opaque and it does not differentiate from close siblings like astroway_tarot_rider_waite_soul_personality_card or astroway_tarot_rider_waite_birth_card, so an agent cannot confidently pick this over them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The bracketed metadata supplies required param, endpoint, and cost, but none of that tells the agent under what circumstances to select this tool versus the many other RWS tarot tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_soul_personality_cardRWS: Soul + PersonalityB
Read-onlyIdempotent
Inspect

Returns soul card and personality card pair from birth date.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/soul-personality-card] [Required: date] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
dateNo
soulCardNo
personalityCardNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds the credit cost (10 credits, Tier 1) and endpoint, but says nothing about what the soul/personality distinction means or how the pair is derived.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence followed by four bracketed metadata lines; nothing is padded and the core purpose leads. The bracket block is mechanical but compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations cover safety. What is missing is the differentiation an agent needs among the dense tarot sibling set and any hint of what the soul/personality pair represents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75%: art, fields, and precision are self-documented, while date carries only a regex pattern. The description's 'from birth date' confirms the primary input but adds no format or meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Returns') and resource ('soul card and personality card pair from birth date'), which is clear on its own. However, it does not distinguish itself from the closely related sibling astroway_tarot_rider_waite_birth_card, so an agent must infer which of the two birth-date tarot techniques to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies only mechanical metadata (required param, endpoint, credit cost) and offers no when-to-use guidance, no exclusions, and no reference to alternatives like birth_card or year_card. With hundreds of near-duplicate tarot siblings, this silence is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_spreadsRWS: All SpreadsA
Read-onlyIdempotent
Inspect

List of all 12 RWS spread definitions.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/spreads] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
countNo
itemsNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds genuinely useful operational context beyond the schema: the cost (10 credits, Tier 1), the group, and the concrete GET endpoint. It does not mention whether the listing is static or cacheable, but the cost disclosure is the kind of detail an agent needs before spending budget.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence of substance plus three bracketed metadata lines; the scope statement is front-loaded and there is no filler prose. The bracketed group/endpoint/cost block is dense but earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 detail is unnecessary, and with no required parameters the invocation surface is trivial. The description states what is returned (12 spread definitions) and the cost. The only material omission is usage routing relative to the _slug sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so fields and precision are fully documented in the schema itself, giving a baseline of 3. The description adds nothing about them, but for a zero-required-parameter list call that is acceptable rather than a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: the 12 RWS spread definitions. An agent immediately knows this is a catalog/listing call, not a drawing or interpretation call. It stops short of 5 because it does not name or distinguish itself from the sibling astroway_tarot_rider_waite_spreads_slug, which is the obvious near-neighbour.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. With a sibling like astroway_tarot_rider_waite_spreads_slug (single spread by slug) present, the description should say to call this one first to discover slugs, then that one. Nothing routes the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_spreads_slugRWS: Single SpreadA
Read-onlyIdempotent
Inspect

Definition of a single spread by slug.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/spreads/{slug}] [Required: slug] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
slugYesSpread slug, lowercase and hyphenated.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
nameNo
slugNo
cardCountNo
positionsNo
descriptionNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description earns credit for adding budget context: the endpoint is flagged as absent from the public credit manifest, which materially affects an agent's willingness to call it. The caveat is vague ("see your plan" with no figure), and no auth or rate-limit detail is added.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core statement then uses four compact bracketed tags (group, endpoint, required, cost) for machine-readable metadata. Efficient and skimmable, though the tag block is slightly template-noisy and repeats the required-parameter fact already in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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, and annotations carry the safety profile; the description supplies group, endpoint, and cost caveat. The one gap is the relationship to the sibling spreads-list tool, which an agent needs in order to know where slugs come from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already explains slug format (lowercase, hyphenated), the fields compact-mode dotted paths, and the precision range. The description only restates that slug is required, adding nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource (a single RWS spread) and the access key (by slug), which implicitly separates it from the sibling astroway_tarot_rider_waite_spreads list endpoint. The verb is weak ("Definition of") rather than an explicit "get/retrieve", but the resource and scope are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the "by slug" phrasing suggests you call this once you already hold a spread slug, versus the list tool for discovery. There is no explicit when-to-use, no statement that this is the singular counterpart to astroway_tarot_rider_waite_spreads, and no note on how a slug is obtained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_suits_suitRWS: SuitB
Read-onlyIdempotent
Inspect

All 14 cards of a suit (wands, cups, swords, or pentacles).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: GET /v1/tarot/rider-waite/suits/{suit}] [Required: suit] [Cost: see your plan — endpoint not in the public credit manifest]

NameRequiredDescriptionDefault
suitYesMinor arcana suit.
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
suitNo
countNo
itemsNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and non-open-world, so the safety profile is fully covered. The description adds the concrete endpoint and a cost note ('endpoint not in the public credit manifest'), which is genuinely useful billing context, but it does not explain return shape, pagination, or anything else beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and zero-waste, and the metadata tags are compact and scannable rather than prose bloat. The bracket block is boilerplate but not misleading or verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full output schema, rich annotations, and 100% parameter coverage, the description only needs to identify the resource and scope, which it does. The cost caveat is a helpful extra. Nothing essential for correct invocation is missing, though sibling routing remains unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with suit, fields, and precision all documented in the schema itself. The description only restates the suit values already present as an enum, adding no syntax or format meaning beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource and scope: the 14 cards of a given suit, and enumerates the four valid suits. It clearly retrieves cards rather than interpreting them, setting it apart from interpret tools. However, it does not explicitly differentiate itself from close siblings like tarot_rider_waite_minors, cards, or courts, which an agent might confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies you would call it to fetch a suit's cards, but gives no explicit when-to-use guidance, no mention of when to prefer cards/minors/courts instead, and no prerequisites. The tag block restates required fields but is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_timingRWS: Timing CardC
Read-onlyIdempotent
Inspect

Single timing card to indicate when.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/timing] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
typeNo
drawnNo
spreadNo

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, non-destructive, closed-world read, so the safety profile is covered. The description adds genuinely useful operational context the annotations do not carry: endpoint path and a 10-credit Tier 1 cost. It says nothing about determinism via seed or what allowReversed does behaviorally, but the cost disclosure is real added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: the purpose sentence comes first, followed by bracketed metadata. Nothing is padded, though the bracketed group/endpoint/cost block is boilerplate rather than explanatory prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 described, and annotations cover the safety profile. What is missing is the semantic core: what 'timing' output actually represents (a timeframe? a season?), and how this tool relates to the Marseille timing sibling and the RWS outcome/draw_single tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: art, fields, and precision are documented in the schema, while seed, question, and allowReversed have no description anywhere. The description supplies zero parameter meaning, so it fails to compensate for the undocumented half — notably `question`, which is central to a 'when will X happen' reading.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title and description convey the gist: draw one card whose meaning indicates 'when'. But 'Single timing card to indicate when' is a noun phrase with no explicit verb (draw/return) and no differentiation from siblings like astroway_tarot_marseille_timing or astroway_tarot_rider_waite_outcome. An agent must infer the action from the endpoint metadata rather than the prose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative routing guidance. Notably, a near-identical sibling (astroway_tarot_marseille_timing) exists, and the description does nothing to explain which deck/timing variant to pick. In a catalog this large, that omission forces guesswork.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_tarot_rider_waite_year_cardRWS: Year CardB
Read-onlyIdempotent
Inspect

Year card per Greer (m+d+year reduced).

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/year-card] [Required: date, year] [Cost: 10 credits (Tier 1)]

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
dateYes
yearYes
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.

Output Schema

NameRequiredDescription
cardNo
dateNo
yearNo

TDQS

B3.2/5.0
Behavior3/5

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 the genuinely useful non-schema signal of cost (10 credits, Tier 1) and the endpoint, but says nothing about response shape, deck/art behavioral effects, or computation caveats.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely tight, with the core operation front-loaded and the operational metadata bracketed at the end. Nothing is padded, though the bracketed block could be trimmed of redundant restatement of required params that already appear in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explanation, and the tool is simple (two required, three optional params). What is missing is any account of what the computed year card signifies or how the date/year interact, which an agent might need to use the result meaningfully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 60%: art, fields, and precision are documented in the schema, while date and year carry only format/range constraints. 'm+d+year reduced' does add a little meaning about how the two required inputs are combined, but not enough to interpret each parameter beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific technique ('Year card per Greer (m+d+year reduced)') for a specific resource, and the Group tag pins it to the Rider-Waite-Smith deck. It does not explicitly separate itself from the sibling astroway_tarot_marseille_year_card, which computes the same year card for another deck, so the differentiation leans on the name rather than the prose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists logistics (endpoint, required params, credit cost) but gives no guidance on when to call this versus the Marseille year card, birth card, or soul/personality card siblings. The Greer reduction method hints at the use case, but there is no explicit when-to-use or when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_trwd_love_triangleRWS: Love TriangleB
Read-onlyIdempotent
Inspect

6-card three-person love dynamics.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/love-triangle] [Cost: 10 credits (Tier 1)]

(Cursor-friendly alias for astroway_tarot_rider_waite_draw_love_triangle.)

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely useful operational context: cost (10 credits, Tier 1) and the exact endpoint. It does not disclose the draw's randomness or how seed/allowReversed affect reproducibility, which is the remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in a single line, with metadata in tidy bracketed blocks. Nothing is verbose or padded, though the endpoint/group lines are conventional noise rather than decision-relevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-required-parameter draw tool with an output schema, the definition covers purpose, cost, and endpoint adequately. It omits any auth requirement and the meaning of the spread's six positions, and gives no hint about determinism despite an idempotentHint, leaving the agent slightly under-informed about what it will actually receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50% (seed, question, and allowReversed carry no descriptions), and the description adds no parameter meaning at all. It does not explain that seed makes the draw reproducible, nor that allowReversed toggles reversed-card output. No compensation for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase '6-card three-person love dynamics' pins down the spread size (6 cards), the subject (three people), and the domain (love/relationships), which separates it from siblings like draw_relationship or draw_celtic_cross. However it is a noun fragment with no explicit verb, so the agent must infer that it draws/deals cards. The alias note further disambiguates it from astroway_tarot_rider_waite_draw_love_triangle.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Nothing states when to pick this over astroway_tarot_rider_waite_draw_relationship, the canonical non-alias love_triangle, or astroway_ai_interpret_tarot. The alias note is a dedup hint, not usage guidance. No prerequisites, exclusions, or alternative-selection logic are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

astroway_trwd_spiritual_pathRWS: Spiritual PathB
Read-onlyIdempotent
Inspect

5-card spiritual development spread.

[Group: Tarot: Rider-Waite-Smith] [Endpoint: POST /v1/tarot/rider-waite/draw/spiritual-path] [Cost: 10 credits (Tier 1)]

(Cursor-friendly alias for astroway_tarot_rider_waite_draw_spiritual_path.)

NameRequiredDescriptionDefault
artNoCard art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.
seedNo
fieldsNoCompact mode: comma-separated dotted paths to keep, relative to `data`, e.g. "planets.name,planets.longitude,houses.cusp". Omit for the whole response.
questionNo
precisionNoCompact mode: round fractional numbers to this many decimals. Longitudes carry 14 by default; 2 is finer than any chart is drawn.
allowReversedNo

Output Schema

NameRequiredDescription
seedNo
drawnNo
spreadNo

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that — a specific cost (10 credits, Tier 1) and the endpoint — but says nothing about pagination, response shape, or what the five positions represent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line, and the remaining lines are short tagged metadata rather than prose. The alias note is somewhat redundant with the tool name, but nothing is verbose or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

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 explained, and annotations carry the safety profile. However, three of six parameters are undocumented and the description never explains what the '5-card spiritual development spread' positions or options are, leaving gaps for a 6-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 50%: art, fields, and precision are documented in the schema, while seed, question, and allowReversed are undocumented in both places. The description adds no parameter meaning at all, so it fails to compensate for the uncovered half.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first line states a specific resource — a 5-card spiritual development spread — which distinguishes it from sibling draws like draw_chakra or draw_shadow_work. The verb (draw) is implied rather than stated, and the definition leans on the metadata block instead of the action itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The note that it is a 'cursor-friendly alias' for astroway_tarot_rider_waite_draw_spiritual_path is genuinely useful for routing, but no condition is given for choosing this spiritual-path spread over the chakra, shadow-work, or relationship spreads.

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.

  1. 2 tool updates
    • Changedastroway_tarot_decks1 field changed
      • changedOutput schema / properties / items / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "anyOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "art": {
        -              "anyOf": [
        -                {
        -                  "items": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": {},
        -                        "properties": {
        -                          "artist": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "back": {
        -                            "anyOf": [
        -                              {
        -                                "additionalProperties": {},
        -                                "properties": {
        -                                  "art": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "height": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "number"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "url": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "url2x": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "width": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "number"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "type": "object"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "id": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "licence": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "missing": {
        -                            "anyOf": [
        -                              {
        -                                "items": {
        -                                  "anyOf": [
        -                                    {},
        -                                    {
        -                                      "type": "null"
        -                                    }
        -                                  ]
        -                                },
        -                                "type": "array"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "name": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "note": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "preview": {
        -                            "anyOf": [
        -                              {
        -                                "additionalProperties": {},
        -                                "properties": {
        -                                  "art": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "height": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "number"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "url": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "url2x": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "width": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "number"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  }
        -                                },
        -                                "type": "object"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "source": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "year": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "type": "array"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "cards": {
        -              "anyOf": [
        -                {
        -                  "type": "number"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "deck": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "name": {
        -              "anyOf": [
        -                {
        -                  "type": "string"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "spreads": {
        -              "anyOf": [
        -                {
        -                  "items": {
        -                    "anyOf": [
        -                      {
        -                        "additionalProperties": {},
        -                        "properties": {
        -                          "cardCount": {
        -                            "anyOf": [
        -                              {
        -                                "type": "number"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "name": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          },
        -                          "slug": {
        -                            "anyOf": [
        -                              {
        -                                "type": "string"
        -                              },
        -                              {
        -                                "type": "null"
        -                              }
        -                            ]
        -                          }
        -                        },
        -                        "type": "object"
        -                      },
        -                      {
        -                        "type": "null"
        -                      }
        -                    ]
        -                  },
        -                  "type": "array"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ]
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "art": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "artist": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "back": {
        +                            "anyOf": [
        +                              {
        +                                "additionalProperties": {},
        +                                "properties": {
        +                                  "art": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "height": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "number"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "url": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "url2x": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "urlSmall": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "width": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "number"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "type": "object"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "id": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "licence": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "missing": {
        +                            "anyOf": [
        +                              {
        +                                "items": {
        +                                  "anyOf": [
        +                                    {},
        +                                    {
        +                                      "type": "null"
        +                                    }
        +                                  ]
        +                                },
        +                                "type": "array"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "name": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "note": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "preview": {
        +                            "anyOf": [
        +                              {
        +                                "additionalProperties": {},
        +                                "properties": {
        +                                  "art": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "height": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "number"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "url": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "url2x": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "urlSmall": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "width": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "number"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  }
        +                                },
        +                                "type": "object"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "source": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "year": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "cards": {
        +              "anyOf": [
        +                {
        +                  "type": "number"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "deck": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "name": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "spreads": {
        +              "anyOf": [
        +                {
        +                  "items": {
        +                    "anyOf": [
        +                      {
        +                        "additionalProperties": {},
        +                        "properties": {
        +                          "cardCount": {
        +                            "anyOf": [
        +                              {
        +                                "type": "number"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "name": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          },
        +                          "slug": {
        +                            "anyOf": [
        +                              {
        +                                "type": "string"
        +                              },
        +                              {
        +                                "type": "null"
        +                              }
        +                            ]
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      {
        +                        "type": "null"
        +                      }
        +                    ]
        +                  },
        +                  "type": "array"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedastroway_tarot_rider_waite_draw_three_card2 fields changed
      • changedOutput schema / properties / back / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": {},
        -    "properties": {
        -      "art": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "height": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "url": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "url2x": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "width": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": {},
        +    "properties": {
        +      "art": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "height": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "url2x": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "urlSmall": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "width": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / drawn / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "anyOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "card": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {},
        -                  "properties": {
        -                    "astrology": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "category": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "element": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "image": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": {},
        -                          "properties": {
        -                            "art": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "height": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "number"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "url": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "url2x": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "width": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "number"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "name": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "number": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "numerology": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "rank": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "reversed": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": {},
        -                          "properties": {
        -                            "keywords": {
        -                              "anyOf": [
        -                                {
        -                                  "items": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "type": "array"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "meaning": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "slug": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "suit": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "upright": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": {},
        -                          "properties": {
        -                            "keywords": {
        -                              "anyOf": [
        -                                {
        -                                  "items": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "type": "array"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "meaning": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "yes": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "position": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {},
        -                  "properties": {
        -                    "index": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "meaning": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "name": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "reversed": {
        -              "anyOf": [
        -                {
        -                  "type": "boolean"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ]
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "card": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "astrology": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "category": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "element": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "image": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "art": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "height": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "number"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "url": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "url2x": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "urlSmall": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "width": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "number"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "name": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "number": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "numerology": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "rank": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "reversed": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "keywords": {
        +                              "anyOf": [
        +                                {
        +                                  "items": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "type": "array"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "meaning": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "slug": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "suit": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "upright": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "keywords": {
        +                              "anyOf": [
        +                                {
        +                                  "items": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "type": "array"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "meaning": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "yes": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "position": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "index": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "meaning": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "name": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "reversed": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 52 tool updates
    • Addedastroway_ai_interpret_tarot
    • Changedastroway_lnd_celtic_cross_lenormand1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Addedastroway_tarot_decks
    • Changedastroway_tarot_lenormand_daily1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_9_card_square1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_celtic_cross_lenormand1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_grand_tableau1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_line_of_five1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_relationship1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_lenormand_draw_three_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_birth_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_clarify1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_daily1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_career1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_celtic_cross1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_cross1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_decision1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_hero1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_love1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_seven_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_single1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_spiritual1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_draw_three_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_interpret1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_timing1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_marseille_year_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_advice1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_birth_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_clarify1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_cross_sum1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_daily1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_career1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_celtic_cross1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_chakra1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_decision1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_horseshoe1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_love_triangle1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_relationship1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_shadow_work1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_single1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_spiritual_path1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_draw_three_card3 fields changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedOutput schema / properties / back
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {
        +        "art": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "height": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "url": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "url2x": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "width": {
        +          "anyOf": [
        +            {
        +              "type": "number"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        }
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / drawn / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "anyOf": [
        -        {
        -          "additionalProperties": {},
        -          "properties": {
        -            "card": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {},
        -                  "properties": {
        -                    "astrology": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "category": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "element": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "name": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "number": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "numerology": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "rank": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "reversed": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": {},
        -                          "properties": {
        -                            "keywords": {
        -                              "anyOf": [
        -                                {
        -                                  "items": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "type": "array"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "meaning": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "slug": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "suit": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "upright": {
        -                      "anyOf": [
        -                        {
        -                          "additionalProperties": {},
        -                          "properties": {
        -                            "keywords": {
        -                              "anyOf": [
        -                                {
        -                                  "items": {
        -                                    "anyOf": [
        -                                      {
        -                                        "type": "string"
        -                                      },
        -                                      {
        -                                        "type": "null"
        -                                      }
        -                                    ]
        -                                  },
        -                                  "type": "array"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            },
        -                            "meaning": {
        -                              "anyOf": [
        -                                {
        -                                  "type": "string"
        -                                },
        -                                {
        -                                  "type": "null"
        -                                }
        -                              ]
        -                            }
        -                          },
        -                          "type": "object"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "yes": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "position": {
        -              "anyOf": [
        -                {
        -                  "additionalProperties": {},
        -                  "properties": {
        -                    "index": {
        -                      "anyOf": [
        -                        {
        -                          "type": "number"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "meaning": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    },
        -                    "name": {
        -                      "anyOf": [
        -                        {
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ]
        -                    }
        -                  },
        -                  "type": "object"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            },
        -            "reversed": {
        -              "anyOf": [
        -                {
        -                  "type": "boolean"
        -                },
        -                {
        -                  "type": "null"
        -                }
        -              ]
        -            }
        -          },
        -          "type": "object"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ]
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": {},
        +          "properties": {
        +            "card": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "astrology": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "category": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "element": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "image": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "art": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "height": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "number"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "url": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "url2x": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "width": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "number"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "name": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "number": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "numerology": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "rank": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "reversed": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "keywords": {
        +                              "anyOf": [
        +                                {
        +                                  "items": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "type": "array"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "meaning": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "slug": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "suit": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "upright": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": {},
        +                          "properties": {
        +                            "keywords": {
        +                              "anyOf": [
        +                                {
        +                                  "items": {
        +                                    "anyOf": [
        +                                      {
        +                                        "type": "string"
        +                                      },
        +                                      {
        +                                        "type": "null"
        +                                      }
        +                                    ]
        +                                  },
        +                                  "type": "array"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            },
        +                            "meaning": {
        +                              "anyOf": [
        +                                {
        +                                  "type": "string"
        +                                },
        +                                {
        +                                  "type": "null"
        +                                }
        +                              ]
        +                            }
        +                          },
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "yes": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "position": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": {},
        +                  "properties": {
        +                    "index": {
        +                      "anyOf": [
        +                        {
        +                          "type": "number"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "meaning": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    },
        +                    "name": {
        +                      "anyOf": [
        +                        {
        +                          "type": "string"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ]
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "reversed": {
        +              "anyOf": [
        +                {
        +                  "type": "boolean"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedastroway_tarot_rider_waite_draw_year_ahead1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_interpret1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_missing_info1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_outcome1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_shadow_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_soul_personality_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_timing1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_tarot_rider_waite_year_card1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_trwd_love_triangle1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
    • Changedastroway_trwd_spiritual_path1 field changed
      • addedInput schema / properties / art
        Added value: +{
        +  "description": "Card art set, e.g. rws-1909, rws-restored, rws-vector. GET /v1/tarot/decks lists the sets per deck.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
  3. 84 tool updates
    • First observedastroway_account_status
    • First observedastroway_agent_tools
    • First observedastroway_cost_estimate
    • First observedastroway_lnd_celtic_cross_lenormand
    • First observedastroway_mcp_agent_debate
    • First observedastroway_mcp_agent_pool_status
    • First observedastroway_mcp_ai_chat
    • First observedastroway_mcp_ai_comparison_coach
    • First observedastroway_mcp_ai_explain_aspect
    • First observedastroway_mcp_ai_explain_transit
    • First observedastroway_mcp_multi_agent_coordinate
    • First observedastroway_mcp_multi_chart_context
    • First observedastroway_mcp_rag_search
    • First observedastroway_mcp_streaming
    • First observedastroway_mcp_tool_call_stream
    • First observedastroway_mcp_tools_list
    • First observedastroway_tarot_lenormand_cards
    • First observedastroway_tarot_lenormand_cards_slug
    • First observedastroway_tarot_lenormand_daily
    • First observedastroway_tarot_lenormand_draw_9_card_square
    • First observedastroway_tarot_lenormand_draw_celtic_cross_lenormand
    • First observedastroway_tarot_lenormand_draw_grand_tableau
    • First observedastroway_tarot_lenormand_draw_line_of_five
    • First observedastroway_tarot_lenormand_draw_relationship
    • First observedastroway_tarot_lenormand_draw_three_card
    • First observedastroway_tarot_lenormand_houses
    • First observedastroway_tarot_marseille_birth_card
    • First observedastroway_tarot_marseille_cards
    • First observedastroway_tarot_marseille_cards_slug
    • First observedastroway_tarot_marseille_clarify
    • First observedastroway_tarot_marseille_daily
    • First observedastroway_tarot_marseille_draw_career
    • First observedastroway_tarot_marseille_draw_celtic_cross
    • First observedastroway_tarot_marseille_draw_cross
    • First observedastroway_tarot_marseille_draw_decision
    • First observedastroway_tarot_marseille_draw_hero
    • First observedastroway_tarot_marseille_draw_love
    • First observedastroway_tarot_marseille_draw_seven_card
    • First observedastroway_tarot_marseille_draw_single
    • First observedastroway_tarot_marseille_draw_spiritual
    • First observedastroway_tarot_marseille_draw_three_card
    • First observedastroway_tarot_marseille_interpret
    • First observedastroway_tarot_marseille_majors
    • First observedastroway_tarot_marseille_spreads
    • First observedastroway_tarot_marseille_spreads_slug
    • First observedastroway_tarot_marseille_timing
    • First observedastroway_tarot_marseille_year_card
    • First observedastroway_tarot_rider_waite_advice
    • First observedastroway_tarot_rider_waite_birth_card
    • First observedastroway_tarot_rider_waite_cards
    • First observedastroway_tarot_rider_waite_cards_slug
    • First observedastroway_tarot_rider_waite_clarify
    • First observedastroway_tarot_rider_waite_courts
    • First observedastroway_tarot_rider_waite_cross_sum
    • First observedastroway_tarot_rider_waite_daily
    • First observedastroway_tarot_rider_waite_draw_career
    • First observedastroway_tarot_rider_waite_draw_celtic_cross
    • First observedastroway_tarot_rider_waite_draw_chakra
    • First observedastroway_tarot_rider_waite_draw_decision
    • First observedastroway_tarot_rider_waite_draw_horseshoe
    • First observedastroway_tarot_rider_waite_draw_love_triangle
    • First observedastroway_tarot_rider_waite_draw_relationship
    • First observedastroway_tarot_rider_waite_draw_shadow_work
    • First observedastroway_tarot_rider_waite_draw_single
    • First observedastroway_tarot_rider_waite_draw_spiritual_path
    • First observedastroway_tarot_rider_waite_draw_three_card
    • First observedastroway_tarot_rider_waite_draw_year_ahead
    • First observedastroway_tarot_rider_waite_elements_element
    • First observedastroway_tarot_rider_waite_interpret
    • First observedastroway_tarot_rider_waite_keywords_keyword
    • First observedastroway_tarot_rider_waite_majors
    • First observedastroway_tarot_rider_waite_minors
    • First observedastroway_tarot_rider_waite_missing_info
    • First observedastroway_tarot_rider_waite_numbers_n
    • First observedastroway_tarot_rider_waite_outcome
    • First observedastroway_tarot_rider_waite_shadow_card
    • First observedastroway_tarot_rider_waite_soul_personality_card
    • First observedastroway_tarot_rider_waite_spreads
    • First observedastroway_tarot_rider_waite_spreads_slug
    • First observedastroway_tarot_rider_waite_suits_suit
    • First observedastroway_tarot_rider_waite_timing
    • First observedastroway_tarot_rider_waite_year_card
    • First observedastroway_trwd_love_triangle
    • First observedastroway_trwd_spiritual_path

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides tarot card reading capabilities with a complete 78-card deck, multiple spread layouts (Celtic Cross, Past-Present-Future, etc.), and detailed card interpretations for divination and daily guidance.
    9
    10 npm
    5
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides professional-grade Rider-Waite tarot readings and 11 specialized spreads through a comprehensive interpretation engine featuring elemental and context-aware analysis. It enables users to perform cryptographically secure card draws, create custom spreads, and explore detailed card symbolism via MCP or HTTP protocols.
    14
    2 npm
    15
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to draw Rider-Waite-Smith tarot cards server-side and query bilingual card meanings, spreads, and guided reading prompts/resources for learning and self-reflection.
    10 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to look up tarot card meanings, search cards by keyword, draw random cards, and get yes/no answers for all 78 Rider-Waite-Smith cards with upright and reversed interpretations.
    5
    38 npm
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources