Skip to main content
Glama
SihyeonJeon

legend-saju

by SihyeonJeon

Legend Saju

This is not a wrapper that passes a few Saju characters to an LLM. It is an East Asian metaphysics engine that returns calculation formulas, schools of thought, sources, and uncertainty in a structured way.

CI License TypeScript

The same birth date is calculated across multiple traditions. There are no hidden LLM calls anywhere in the calculation path.

777 source-linked knowledge items · 720 Da Liu Ren charts · 9,495 observed Korean name hanja · 0 model calls in the calculation path

Legend Saju handles calculations from different traditions — Saju (Four Pillars) and Myeongri study, Zi Wei Dou Shu, Qi Men Dun Jia, Da Liu Ren, Cheolpan Shinsoo, and Seongmyeonghak — in a single engine. When conventions differ, it does not force them into one conclusion, and when a birth time is unknown, it does not fabricate an arbitrary time.

The fastest way to get started

The current public version provides both a local STDIO MCP and an HTTPS remote MCP. The local server runs on Node.js 20 or later with no separate API key.

Connect the remote server without installing anything

The public MCP endpoint is:

https://legend-saju-mcp-production.up.railway.app/mcp

In Codex, you can connect with:

codex mcp add legend-saju-remote --url https://legend-saju-mcp-production.up.railway.app/mcp

The remote server never stores your inputs and never calls a model API. The public endpoint enforces request size, per-minute, and concurrency limits. If you do not want to send a birth date or name to an external server, use the local option below.

Install as a plugin

In Codex and the ChatGPT desktop app, you can install a plugin that bundles the MCP connection with natural-language usage instructions. First, add this repository as a plugin source.

codex plugin marketplace add SihyeonJeon/legend-saju --ref main

Then install Legend Saju from the Plugins screen. This route uses the public remote MCP, so it needs neither Node.js nor a separate API key. Appearing in the public Plugins Directory of ChatGPT on the web requires a separate submission and review step.

Connect with one line from Codex

Run this in your terminal:

codex mcp add legend-saju -- npx -y --package=github:SihyeonJeon/legend-saju#main legend-saju-mcp

Check that it is connected:

codex mcp list

Restart Codex; when you see legend-saju under /mcp, installation is complete. From then on, you can ask ordinary questions without naming a tool or a JSON schema.

Born July 30, 2000, at 8:44 a.m., female. Take an overall look at my career, wealth, marriage, and the next three years.

Male, July 14, 1999, 11:24 a.m., and female, July 30, 2000, 8:44 a.m. Please look at compatibility and a likely marriage timing together.

My name is Kim Sang-su, and the hanja are 金相, Seo. Please analyze the nameology basis separately from Saju.

Codex CLI, the Codex IDE extension, and the ChatGPT desktop app share the same Codex MCP configuration. For details, see OpenAI's MCP guide.

Connect from other MCP clients

Any client that supports STDIO MCP can use the run configuration below. The configuration file's location differs by client.

{
  "mcpServers": {
    "legend-saju": {
      "command": "npx",
      "args": ["-y", "--package=github:SihyeonJeon/legend-saju#main", "legend-saju-mcp"]
    }
  }
}

If you want to pin a local source, build the repository and run the CLI wrapper directly.

{
  "mcpServers": {
    "legend-saju": {
      "command": "node",
      "args": ["/절대/경로/legend-saju/bin/legend-saju-mcp.js"]
    }
  }
}

For the local setup, run npm ci && npm run build once in the repository root.

Can I use it directly in ChatGPT web?

An HTTPS remote MCP server is ready. Having a public URL and being listed in the ChatGPT plugins directory, however, are two different steps. You can use the URL above in clients that offer developer mode or native remote MCP support. To expose it to regular users as an installable plugin, a separate registration and review process is still pending.

Related MCP server: mcp-luopan

What the MCP does

The MCP server provides exactly three read-only tools.

Tool

Role

legend_saju_manifest

Check which calculation methods, sources, and data ranges exist in the current engine

legend_saju_capabilities

Find calculation methods that match a natural-language question

legend_saju_resolve

Take a question and inputs, then run all relevant calculations together

Because there are three tools does not mean the metaphysics engine provides only three features. The three tools are small gateways into a large registry — they look at it, search it, and execute it, without changing its size.

사용자의 자연어 질문
        ↓
호스트 모델이 입력을 정리하고 계산법을 탐색
        ↓
Legend Saju MCP가 결정론적 계산 수행
        ↓
출처·유파·충돌·누락 정보가 포함된 구조화 결과
        ↓
호스트 모델이 사람이 읽기 쉬운 한국어로 설명

Legend Saju MCP itself reads no OpenAI or Anthropic API key and calls no model. The dialog and its explanations are handled by the existing model session of the client you use — Codex, Claude, or another one.

What is the difference between MCP and the bundled plugin?

  • Connecting only MCP lets you use the registry and its three tools right away.

  • The Codex plugin in plugins/legend-saju/ bundles the MCP configuration together with natural-language usage guidelines. It strengthens the host model so users do not have to pick capability IDs or input schemas.

  • The calculation capability is not downsized into the plugin. Both MCP and plugin use the same public engine entry point.

Natural-language input

The intended interface of this project is a conversation, not a form or an intent menu. The model extracts only the unambiguous facts from the conversation, finds the required calculation, and then explains the evidence returned by the engine.

2004년 8월 3일 양력 남자고 태어난 시간은 몰라.
경기도 구리에서 태어났어. 앞으로 3년 직업과 돈을 봐줘.

If you say the birth time is unknown, the engine does not silently substitute noon. It returns the candidate charts separately, including both conventions for the day boundary at the Hour of Zi.

Reproduce for developers

git clone https://github.com/SihyeonJeon/legend-saju.git
cd legend-saju
npm ci
npm test
npm run build
npm run demo

Node.js 20 or newer is required. This repository is ESM-only and is not published to npm yet.

import { resolve } from "./dist/index.js";

const result = resolve({
  birth: {
    year: 2000,
    month: 7,
    day: 30,
    hour: 8,
    minute: 44,
    calendar: "solar",
    gender: "여",
    birthTimeAccuracy: "recorded"
  },
  question: "직업과 재물, 연애 결혼, 앞으로 3년",
  timelineRange: { startYear: 2026, endYear: 2028 }
});

console.log(result.dossier?.claims);
console.log(result.dossier?.conflicts);
console.log(result.routes);

The return value is not a final written fortune, but a structured basis for calculation and interpretation.

{
  selection: { requested: string[]; selected: string[]; unsupported: string[] };
  routes: CapabilityPreflight[];
  dossier?: {
    claims: EngineClaim[];
    conflicts: ClaimConflict[];
    synthesis: DomainSynthesis[];
    timeline?: LifeTimeline;
    blockedSystems: { capabilityId: string; reason: string }[];
  };
  evidence: SajuEvidence[];
  nameAnalysis?: KoreanNameAnalysis;
  noModelCalls: true;
  interpretationBoundary: string;
}

Why we built this

Many metaphysics-oriented AI services begin with a prompt; Legend Saju begins one level lower, with the calculation and the rationale.

  • Deterministic core: the same input produces the same numeric result without an LLM.

  • Tradition-preserving: different schools and different Zi Wei transformation tables survive as separate results.

  • Unknown birth time: an unknown time is handled as a list of candidates, never guessed as noon.

  • Source tracking: every capability records maturity levels, evidence roles, schools, source IDs, and missing dimensions.

  • No destiny score: never flatten the evidence and conflicts of several systems into one single number.

What is actually inside

This repository does not only expose a model-calling interface; it also publishes the underlying data and rules.

Asset

Scope

Multilingual metaphysics knowledge store

36 domains, 777 evidence items

Saju glossary

777 items in Korean–Hanja–Chinese–Japanese

Zi Wei Dou Shu glossary

214 items ordered by language

The Book of the Month

120 day-master × month-table cells with 66 executable exception branches

Zi Wei & palaces and stars

163 structured rules and 3 separate transformation profiles

Da Liu Ren

60 day pillars × 12 heaven Generals, a closed 720-chart transmission table

Cheolpan Shinsoo question-time path

1,500 hexagram marks, 144 pre-heaven rows, 2,028 life rows

Korean Seongmyeonghak

9,495 observed Supreme Court name hanja and 2,003 stroke-variation observations

81-number collection with explicit limits

All 81 rows with source comparisons

Dream-study dataset

988 Zhou-Gong dream-reading items, 211 Artemidorus passages, 5 cross-cultural review seeds

All auditable data lives in data/. The knowledge required at runtime is shipped with the engine and does not depend on any remote database or hidden lookup service.

The extraction outputs are frozen per file. The only optimized computation path among the Zi Wei Dou Shu arrangements matched the previous output byte for byte. See docs/PARITY.md for details.

Implementation scope

System

Current implementation boundary

Almanac & Saju natal chart

Gregorian–lunar–intercalary-month conversion, four pillars, ongoing luck cycles, day boundaries

Myeongri

month, roots, hidden stems, ten gods, combinations–clashes–punishments, 3 ways to select the favorite god, and the 120-column month table

Zi Wei Dou Shu

12 palaces, triangles, and multidimensional narrative, multiple “four transformations”, flying star, overlapping luck periods

Da Liu Ren

closed 60 day–pillar → 12 sphere table and explicitly outlined transmission method

Quin Men Dun Jia

hour-pan, nine palaces, nine stars, eight gates, eight poles, under angle / under envoy, and voids

Cheolpan Shinsoo

three versions of the imperial cycles, a separate 14-series question-hour table, pre-natal numbers, and the 10-year container

Korean Seiikura

2, comma 9, story of name hanja, unicode & style decomposition, five-grid for the user's stated stroke rule, and the explicit 81-number boundaries

Rather than trusting the fixed number of capabilities in the README, call getEngineManifest() to inspect the current registry.

Birth times are interpreted as local civil time. timezone and longitudeE are preserved as birth-place metadata, but the baseline chart does not silently apply an approximate true-solar-time adjustment. That missing features is recorded in the capability and input-audit metadata.

If the birth data is invalid, the engine responds via a structured blocked path so a correction can be requested along with other results. A nonexistent targetDate or questionDateTime makes date-based calculations impossible to run safely, so those requests are rejected outright.

One open entry

import { resolve } from "./dist/index.js";

resolve({ question, ...inputs }) queries the current registry, routes the question, triggers the runnable calculators, and returns the missing inputs without hiding them. requestedCapabilities accepts an open string rather than a closed enum, so adding a new module does not compel changing every client's schema.

If you pass a name as name to resolveAsync, a separate full Korean orthographic path opens. It compares the actual first and last hanja against a snapshot of 9,745 name-character observations, and keeps legal usage, assigned readings, candidate stroke counts, Unicode and style decomposition, the user-specified five-grid method, and the 81-number comparison in distinct layers of evidence.

The existing synchronous resolve remains compatible for computation-only consumers. The async version lazy-loads the large Korean-name dataset only when a name is given, so it neither adds startup overhead nor alters the ordinary Saju flow.

analyze(input) is the typed birth-details API. query({ intent, ... }) is a 26-intent compatibility surface used by earlier content bots. Content writing, calling, prompt generation, and publishing automation do not mix with the calculation core.

Performance

A reproducible benchmark is included.

npm run benchmark

On current Apple Silicon hardware running Node 26, the measured optimization baseline is a median of 1.13 ms for a natal-chart query, about 600 ms median for a full specification that includes the birth time, and 63.1 ms median for a cold-import in a fresh process. These are environmental numbers, not single-value guarantees. See PERFORMANCE.md for the latest benchmarks and methodology.

If you do not know the birth time

const result = analyze({
  birth: {
    year: 2004,
    month: 8,
    day: 3,
    calendar: "solar",
    gender: "남",
    birthTimeAccuracy: "unknown"
  },
  question: "전체 인생"
});

The engine outputs the stable element, the poles that change, and every candidate hour/chart separately. It may compare candidates against known backward events, but it never arbitrarily labels a single birth time as the “correct” one.

Methodology, not mysticism

The project distinguishes:

  1. Calendrical and natal-chart calculation

  2. Structural observation

  3. Interpretation according to a tradition

  4. Synthesis across systems

  5. Human- or LLM-written narration

Before presenting it to a user as a determinable prediction, you should read both the methodology and the capabilities.

The repository also includes "how it was actually built" with the development order, multilingual research queries, and reproducible agent-work instructions. Maintainers will find a public GitHub release checklist in docs/RELEASING.md.

Public release status

The supported distribution target is the open GitHub source. packages/* is dependent but blocked from npm publishing. npm run release:check ensures that the public files match the source snapshot and that no hard-coded secrets have leaked. License and data re-distribution boundaries are documented in DATA_LICENSES.md and release-boundary.json.

Roadmap

  • An optional input form for people who avoid MCP clients.

  • Stabilize the hosted remote MCP and add optional authentication.

  • A dedicated birth-onboarding screen that is private by default.

  • A separate licensed dream-data pack.

  • New primary sources and exact splits for extra lineage.

Responsible use

Legend Saju reproduces and compares traditional systems. Passing the software tests only means the documented calculations are reproduced — not that the science they originate from is proven predictive. Do not use it as a substitute for medical, legal, financial, or mental-health professionals.

License

The project code is Apache-2.0. External libraries and datasets have their own terms. See DATA_LICENSES.md and THIRD_PARTY_NOTICES.md.

Available Tools

9 tools
legend_saju_analyze_compatibilityAnalyze two-person compatibilityA
Read-only
Inspect

Use this when the user asks 궁합, 결혼 가능성, relationship compatibility, or wants two birth charts compared. Requires both people's birth data.

ParametersJSON Schema
NameRequiredDescriptionDefault
birthYes
questionYesWhat the user wants to know about the relationship.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
lifeEventsNo
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
targetDateNo
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
partnerBirthYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A3.8/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 this is clearly a safe, non-mutating analysis. The description adds a minor behavioral constraint ('Requires both people's birth data') but no additional side-effect or runtime behavior disclosure is necessary.

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?

The description is one tightly scoped sentence that front-loads the trigger phrases, with no filler or repeated schema information. Every word contributes to routing the agent correctly.

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 tool has a complex nested schema with 8 parameters, and the description only covers identification and a high-level data requirement. It does not clarify how the agent should phrase or compose the question, whether missing birth info should trigger follow-up questions, or why some optional parameters matter. The output schema helps fill the return-value gap, but the overall guidance remains thin for a tool of this complexity.

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 does little to compensate. It names the requirement for both birth datasets but adds no explanation of the question, lifeEvents, targetDate, detailLevel, or outputMode parameters. The schema does some of the work, but the description should surface more about the two required nested birth objects.

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?

The description names precise trigger scenarios (궁합, 결혼 가능성, relationship compatibility) and the comparison of two birth charts, which clearly distinguishes this from single-person tools like legend_saju_read_fortune or legend_saju_analyze_name. The verb and resource are specific and recoverable from context.

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?

It explicitly says when to use the tool and even provides example Korean intent. The requirement that both birth datasets are needed is a useful precondition. However, it does not mention when not to use it or explicitly name alternative tools for relationship-related queries.

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

legend_saju_analyze_nameAnalyze a Korean nameA
Read-only
Inspect

Use this for 작명, 성명학, 81수, 이름 한자, 인명용 한자, 획수, or 파자 questions. It keeps legal Hanja observations, declared stroke standards, and birth-based naming guidance separate.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
birthNo
questionYesName, Hanja, stroke-count, or naming question.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
givenStrokesNo
surnameStrokesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by stating a concrete behavioral contract: it keeps legal Hanja observations, declared stroke standards, and birth-name guidance separate. This is beyond the annotations and is useful for setting agent expectations about how the tool organizes its output.

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?

Two sentences, front-loaded with the core usage instruction and then a precise behavioral note. Every sentence contributes meaning and there is no redundancy.

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?

Given the tool's complexity (nested name/birth objects and many optional parameters), the description provides the right high-level guidance without duplicating the schema. The output schema and numerous parameter descriptions cover invocation details, although the sparse coverage of some stroke parameters keeps this from a 5.

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%, so the description must compensate for undocumented parameters like givenStrokes and surnameStrokes. It does not mention any parameter names, types, or composition rules beyond general domain keywords. The schema itself carries most of the parameter burden, but half of the parameters remain not described.

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?

The description names a specific verb ('Use this for') and lists concrete question types: 작명, 성명학, 81순, 이름 한자, 인명용 한자, 획수, and 파자. It also explains what the tool separates (legal Hanja observations, declared stroke standards, and birth-based naming guidance), making it clearly distinct from sibling tools like compatibility or fortune reading.

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?

The opening phrase 'Use this for' gives an explicit when-to-use instruction, and the listed Korean keywords define the exact domain. However, it does not explicitly say when not to use it or point to an alternative sibling, so it stops short of a full when-not/alternative guide.

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

legend_saju_capabilitiesFind a calculation methodA
Read-only
Inspect

Use this when a user asks which Saju, Myeongri, Zi Wei, Qimen, Daliuren, I Ching, Tieban, Dang Saju, Tojeong, Feng Shui, naming, dream, or other traditional calculation method fits a specialized question. Do not use it for an ordinary fortune reading.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
systemsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
hitsNo
errorNo
queryNo
capabilityCountNo
requestedCapabilityContractNo

TDQS

A4.2/5.0
Behavior3/5

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

The annotations already signal a safe, read-only, non-destructive operation. The description adds scope context by separating specialized method selection from ordinary fortune reading, but it does not describe the actual operation, outputs, or any edge 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.

Conciseness5/5

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

The description is two sentences, each purposeful and immediately front-loaded with the trigger condition and a clear exclusion. The long list of domains is efficient because it defines the tool's full intended scope.

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?

Given that the schema is simple, annotations cover safety, and an output schema exists, the description is mostly complete for an agent. The only real gap is the lack of direct parameter guidance, but the domain list and exclusion statement make the intended use sufficiently clear.

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?

With 0% schema description coverage, the description needed to explain the parameters, and it partially does: the long list of system types hints at what the 'systems' parameter can contain and 'specialized question' hints at the query. However, it never mentions 'limit' nor explicitly maps the systems list to the schema property, so the compensation is incomplete.

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?

The description states a clear action: find a calculation method that fits a specialized question, while enumerating the covered systems. It differentiates itself from ordinary fortune reading, which is enough to distinguish it from sibling tools like legend_saju_read_fortune.

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 says 'Use this when a user asks which ... calculation method fits' and gives a when-not: 'Do not use it for an ordinary fortune reading.' This gives clear positive and negative selection criteria, even though it does not name the exact alternative tool.

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

legend_saju_cast_divinationCast a traditional divination chartA
Read-only
Inspect

Use this for 기문둔갑, 대육임, 주역, 점괘, or a concrete decision cast from a question time or six line values. Do not use it for a general natal fortune reading.

ParametersJSON Schema
NameRequiredDescriptionDefault
birthNoOptional natal input when the requested method needs it.
questionYesThe concrete decision or divination question.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
lineValuesNoSix I Ching line values, bottom line first.
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
questionDateTimeNoCasting moment for Qimen, Daliuren, or Tieban question-time calculations.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only and non-destructive, so the description only needs to add behavioral context. It does that by specifying that the chart is cast from a question time or six line values and that it targets specific divination methods rather than general natal interpretation. This adds meaningful operational clarity beyond the annotations.

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

Conciseness5/5

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

The description is two sentences with no filler, placed at the start and front-loaded with the intended use case. The exclusion is stated directly and economically.

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?

The description, schema, and annotations together provide enough information for correct invocation. The main missing element is that for someone seeking a general natal reading, there is no explicit pointer to the appropriate sibling 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 description coverage is 100%, with rich per-property descriptions for questionDateTime, lineValues, birthTimeAccuracy, and others. The description reinforces the relevant inputs, such as 'a question time or six line values', but does not meaningfully add to what the schema already documents.

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?

The description uses a specific action ('Cast') with a clear resource ('a traditional divination chart') and scope: 기문둔갑, 대육임, 주역, 점괘, or a concrete decision from a question time or six line values. It also directly distinguishes itself from general natal fortune reading.

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?

The description explicitly says when to use the tool and gives a clear exclusion: 'Do not use it for a general natal fortune reading.' However, it does not name the alternative sibling tool that should be used instead for natal readings, so the routing is slightly incomplete.

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

legend_saju_interpret_dreamInterpret a dream from audited traditionsA
Read-only
Inspect

Use this for 해몽, 꿈풀이, or dream interpretation. It currently handles five cross-culturally audited concepts and returns both shared motifs and conflicting conditions with primary-source excerpts; it does not turn the remaining raw corpus into invented meanings.

ParametersJSON Schema
NameRequiredDescriptionDefault
dreamYesThe dream narrative. Preserve the user's details instead of reducing it to one symbol.
questionYesWhat the user wants to understand about the dream.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
dreamContextNoOnly context the user actually supplied, such as emotion, setting, relationships, work, or health.
maxDreamMatchesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description explains the scope: it handles five cross-culturally audited concepts and returns shared motifs plus conflicting conditions with primary-source excerpts. It also explicitly discloses a serious limitation—it does not turn the remaining raw corpus into invented meanings—which is valuable behavioral context for an agent.

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?

The description is two sentences, front-loads the primary use case, and includes only high-signal constraints about scope and hallucination avoidance. Every sentence provides useful guidance, with no filler or redundancy.

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?

Given the rich input schema, annotations, and output schema, the description is sufficiently complete. It tells the agent what the tool does, what it returns, and how far its coverage extends, and the parameter and output details are already handled by the structured schema.

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 high at 86%, and the schema already explains most parameters including dream, question, outputMode, detailLevel, and dreamContext. The description itself does not add parameter-level semantics, but it does not need to because the schema carries the load; only maxDreamMatches remains undocumented.

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?

The description clearly identifies the tool's purpose: interpreting dreams via Korean-specific terms (해몽, 꿈풀이) and English, and specifies the output type: shared motifs and conflicting conditions with primary-source excerpts. This distinguishes it from the sibling fortune, name analysis, and date-selection tools without ambiguity.

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?

The description opens with 'Use this for 해몽, 꿈풀이, or dream interpretation,' giving explicit when-to-use guidance for the target scenario. It does not explicitly name alternative sibling tools or exclusion conditions, but the intended use case is clear enough for an agent to route dream-interpretation requests correctly.

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

legend_saju_manifestInspect Legend SajuA
Read-only
Inspect

Return the live, source-traceable deterministic engine manifest. No model or network call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNo
namingNo
versionNo
knowledgeNo
sourceCountNo
capabilitiesNo
deterministicNo
capabilityCountNo
legacyIntentCountNo
publicationSideEffectsNo

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses meaningful behavioral details: it returns live state, is deterministic, source-traceable, and makes no model or network call. This gives an agent confidence that the operation is safe and side-effect-free without requiring structure inspection.

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?

The description is two short sentences, each earning its place. The first fronts the primary function, and the second removes any concern about network or model latency, making the text both efficient and immediately useful.

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?

With a zero-parameter schema and an output schema present, very little needs to be stated. The description covers what the tool returns, the core property 'deterministic', and the safety guarantee 'no model or network call', which is sufficient for an agent to correctly select and invoke it.

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 tool has zero parameters and the schema coverage is 100%, so there is no parameter meaning for the description to add. The absence of parameters is already fully represented by the empty schema, and the description appropriately focuses on behavior instead.

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?

The description uses a specific verb ('Return') and a specific resource ('deterministic engine manifest'), and adds clarity with 'live' and 'source-traceable'. This distinguishes it from the predictive/estimation flavors implied by sibling tools like legend_saju_read_fortune and legend_saju_analyze_compatibility.

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?

'No model or network call' gives clear context that this is an inspection tool, not a generation or prediction tool. It implies when an agent should select it — to view the engine manifest rather than obtain a reading — but it does not explicitly name alternative tools or exclusion conditions.

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

legend_saju_read_fortuneRead a Saju fortuneA
Read-only
Inspect

Use this when the user says 사주 봐줘, 운세 봐줘, 올해 운세, 재물운, 사업운, 직업운, 연애운, 결혼운, 건강운, 개운법, 구체적 액션, or asks what to do over a future period. Read structuredContent, especially recommendations for action requests. Use detailLevel=expert for a deep one-call analysis; do not search capability IDs first.

ParametersJSON Schema
NameRequiredDescriptionDefault
birthYes
asOfYearNo
questionYesThe user's original request, such as 올해 재물운과 사업운을 봐줘.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
lifeEventsNo
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
targetDateNoThe date whose current or future fortune is being read. Supply the current local date for requests such as 올해 운세 or 현재 운세.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
timelineRangeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A4/5.0
Behavior4/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 useful behavioral context by telling the agent to read structuredContent, look for recommendations, use a deep one-call expert mode, and not search capability IDs first. This goes beyond what annotations alone provide.

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?

The description is compact and front-loaded with trigger phrases, then moves directly into the most important behavioral guidance. Every sentence earns its place; there is no filler or repetitive schema restating.

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?

Given the nested schema, output schema, and annotations, the description covers the key call-shaping details: when to invoke, what to read from the result, which detailLevel to use, and the no-capability-search workflow. The remaining gap is that with eight sibling tools, an explicit line about which sibling is NOT appropriate would make the choice fully unambiguous.

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 56%, so a meaningful share of parameter behavior is already documented in the schema, e.g., hour ambiguity, calendar defaults, and birthTimeAccuracy. The description adds a useful directive for detailLevel=expert, but it does not meaningfully enrich other parameters like asOfYear, timelineRange, or lifeEvents.

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?

Title and trigger list make clear this reads a Saju/운세 fortune: it covers 사주 봐줘, 운세 봐줘, 재물운, 사업운, 연애운, etc. The description is specific about the resource and intent, but it never contrasts itself with the sibling tools, so the differentiation is implicit rather than explicit.

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?

The description gives explicit triggering conditions with concrete Korean examples and adds workflow guidance like using detailLevel=expert for a deep one-call analysis. It does not give when-not-to-use guidance or name which sibling tool to choose instead, so it stops short of a full routing contract.

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

legend_saju_run_methodsRun specific or mixed traditional methodsA
Read-only
Inspect

Use this for expert, mixed-system, or named-method requests. It covers Myeongri details such as 십성·지장간·투간·통근·합충형파해·삼합·방합·육합·월령·격국·조후·억부·통관·병약·궁통보감·적천수·삼명통회·연해자평·종격·화격·특수격; Zi Wei 12궁·삼방사정·대한·유년·유월·유일·유시·생년사화·궁간사화·자화·비성·흠천사화·중주파; and Qimen, Daliuren, I Ching, Tieban, Dang Saju, Tojeong, Feng Shui, naming, 81-number, Hanja decomposition, and dream traditions. Pass discovered capability IDs together in requestedCapabilities, or let the server plan from the question. Use focused tools for ordinary single-goal requests.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoActual Korean name characters for the separate 9,495-entry official-name analysis path.
birthNo
dreamNoDream narrative for the source-bounded cross-cultural dream engine.
purposeNo
asOfYearNo
questionYesOpen-ended question. Built-in routing terms cover Korean plus common English, Chinese, and Japanese metaphysics vocabulary.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
rangeDaysNo
lifeEventsNo
lineValuesNo
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
targetDateNoDate or range anchor being analyzed.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.
dreamContextNoOptional emotion, setting, relationship, work, health, or other context explicitly supplied by the user.
givenStrokesNo
partnerBirthNo
timelineRangeNo
surnameStrokesNo
maxDreamMatchesNo
questionDateTimeNoMoment a Qimen, Daliuren, or question-time calculation is cast.
maxAutoCapabilitiesNo
requestedCapabilitiesNoOptional runtime IDs from legend_saju_capabilities. This is intentionally not an enum.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so safety is well covered outside the description. The description adds the useful behavioral note that the server can plan from the question when requestedCapabilities is empty, but it does not disclose other non-obvious behavior such as return shape or expert-mode composition, which are left to 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?

The opening sentence is action-oriented and the long list of named traditions genuinely supports the tool's purpose. The description is dense and would be clearer with short groupings or bullets, but every sentence earns its place and the critical usage conditions are front-loaded.

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?

For a complex 22-parameter tool, the description is unusually complete: it gives the capability scope, the trigger conditions, the difference from focused tools, and the two valid invocation styles. The output schema fills most remaining return-semantics gaps, and the required question parameter is minimal enough to call the tool safely.

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 only 45%, so the description must compensate for parameter meaning, but it fully explains only requestedCapabilities and vaguely references the question. It clarifies that capability IDs are optional and the server can infer from the question, which is useful given the 22 optional parameters, but most parameters still rely on their own schema descriptions.

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?

The description explicitly states 'Use this for expert, mixed-system, or named-method requests' and then enumerates the exact traditions covered, from Myeongri and Zi Wei to Qimen and dream traditions. It clearly identifies a concrete scope and distinguishes this broad tool from the focused sibling tools.

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?

It gives explicit trigger conditions ('expert, mixed-system, or named-method requests'), explains the capability-ID path versus letting the server plan from the question, and says to use focused tools for ordinary single-goal requests. It does not name the focused sibling tools explicitly, which would make the routing guidance fully explicit.

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

legend_saju_select_datesSelect auspicious datesA
Read-only
Inspect

Use this only when the user explicitly asks for 택일, 좋은 날, 계약일, 이사일, 개업일, 수술일, or another date-selection task. Do not use it merely because a fortune request mentions this year.

ParametersJSON Schema
NameRequiredDescriptionDefault
birthYes
purposeNo
questionYesThe event and constraints for choosing a date.
maxClaimsNoMaximum interpretation points and raw claims returned outside debug mode.
rangeDaysNo
outputModeNoBackward-compatible developer projection override. Ordinary callers should use detailLevel instead.
targetDateYesStart date for the candidate range.
detailLevelNoPreferred depth. brief is shortest, standard is the default readable answer, expert automatically composes question-relevant deep methods and evidence in one call, and raw is the complete developer record.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeNo
errorNo
claimsNo
routesNo
blockedNo
dossierNo
sourcesNo
evidenceNo
questionNo
sectionsNo
timelineNo
conflictsNo
selectionNo
inputNotesNo
detailLevelNo
limitationsNo
nameAnalysisNo
noModelCallsNo
dreamAnalysisNo
executionPlanNo
methodAnalysisNo
readingSummaryNo
recommendationsNo
calculationSummaryNo
omittedTimelineYearsNo
interpretationBoundaryNo
publicationSideEffectsNo

TDQS

A4/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, covering the safety profile. The description adds context about the intended invocation trigger and avoids misapplication, but it does not disclose further behavioral details such as how candidate dates are returned or constrained beyond schema and output schema.

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

Conciseness5/5

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

Two sentences with no wasted filler, and the most decisive usage rule is stated up front. The Korean examples add practical precision without padding.

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?

Given the rich input schema, output schema, and safety annotations, the description provides the essential missing piece: when the tool should be selected and when it must not be. It is slightly thin on what the returned results represent, but the output schema mitigates that 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?

The description adds no parameter-level meaning; all parameter knowledge is carried by the schema, which covers 63% of parameters. Since the schema already documents some fields like calendar defaults, timezone handling, and hour ambiguity, a baseline 3 is appropriate.

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?

The description clearly defines the tool's scope: it is for date-selection tasks (택일, 좋은 날, 계약일, 이사일, 개업일, 수술일), not for ordinary fortune readings. This specificity distinguishes it from read_fortune and other fortune-related siblings.

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?

It gives explicit when-to-use criteria with concrete examples and a clear exclusion ('Do not use it merely because a fortune request mentions this year'). It does not name the alternative sibling tool to use instead, so it is slightly less helpful than it could be.

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. 10 tool updatesv0.4.0
    • Addedlegend_saju_analyze_compatibility
    • Addedlegend_saju_analyze_name
    • Changedlegend_saju_capabilities1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "capabilityCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "error": {
        +      "type": "string"
        +    },
        +    "hits": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "requestedCapabilityContract": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedlegend_saju_cast_divination
    • Addedlegend_saju_interpret_dream
    • Changedlegend_saju_manifest1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "capabilities": {
        +      "additionalProperties": {},
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "capabilityCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "deterministic": {
        +      "type": "boolean"
        +    },
        +    "error": {
        +      "type": "string"
        +    },
        +    "knowledge": {},
        +    "legacyIntentCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "naming": {},
        +    "publicationSideEffects": {
        +      "type": "boolean"
        +    },
        +    "sourceCount": {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "version": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Addedlegend_saju_read_fortune
    • Removedlegend_saju_resolve
    • Addedlegend_saju_run_methods
    • Addedlegend_saju_select_dates
  2. 3 tool updatesv0.1.0
    • First observedlegend_saju_capabilities
    • First observedlegend_saju_manifest
    • First observedlegend_saju_resolve

TDQS

A4.1/5.0

Scored across 9 tools

Disambiguation4/5

Each focused tool has a clear primary intent: fortune readings, compatibility checks, date selection, divination, name analysis, and dream interpretation. The only real ambiguity is among the metadata/router tools (manifest, capabilities, and run_methods), which can be confused when an agent needs to distinguish listing capabilities from executing a specialized method.

Naming Consistency4/5

Seven of the nine tools follow a consistent verb_noun pattern: read_fortune, analyze_compatibility, select_dates, cast_divination, analyze_name, interpret_dream, and run_methods. The two noun-only names, manifest and capabilities, are a small deviation, but the shared legend_saju_ prefix keeps the overall naming recognizable.

Tool Count5/5

Nine tools is well-scoped for a server with such a broad traditional-calculus surface. It provides one focused entry point per major user intent plus introspection and expert-runner tools, without turning the tool list into an overwhelming flat API.

Completeness5/5

The surface covers discovery, ordinary fortune reading, relationship compatibility, date selection, divination, naming, dream interpretation, and mixed expert methods. There is no obvious missed lifecycle step: about every major request route lands on a dedicated tool or the catch-all run_methods tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables Korean Saju (Four Pillars of Destiny) calculation and myeongni-hak glossary lookup via MCP, allowing AI clients to compute accurate saju analysis and look up fortune-telling terms.
    4
    28
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides tools for Bazi (Chinese astrology) chart calculation and analysis, enabling LLMs to generate accurate birth charts, determine patterns, and answer follow-up questions based on actual calculations rather than model knowledge.
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform Chinese metaphysics calculations including BaZi charts, Tong Shu indicators, solar terms, and more, using a verified engine with 740+ tests.
    8
    8
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides traditional Chinese astrology (Bazi, Ziwei) and divination (Liuyao, Meihua, Qimen, etc.) calculations as MCP tools for AI assistants.
    17
    403
    108
    Apache 2.0