Skip to main content
Glama
SihyeonJeon

legend-saju

by SihyeonJeon

Legend Saju

Это не обёртка, которая передаёт несколько знаков саджу в LLM. Это движок восточной метафизики, который возвращает структурированные расчётные формулы, школы, источники и неопределённости.

CI License TypeScript

Одни и та же дата рождения рассчитывается по нескольким традициям. В расчётном пути нет скрытых вызовов LLM.

777 знаний с привязкой к источникам · 720 бюро далюжэнь · 9 495 наблюдений корейских ханча для имён · 0 вызовов модели на расчётном пути

Legend Saju обращается с расчётами разных традиций в одном движке: саджу и минли, цзывэй доу шу, ци мэнь дунь цзя, далюжэнь, тебань шэн шу, сонмёнхак и другие. Если школы расходятся, их не загоняют в один вывод; если время рождения неизвестно, не выдумывается произвольный час.

Самый быстрый способ начать

Текущая публичная версия включает одновременно локальный STDIO MCP и удалённый MCP через HTTPS. Локальный сервер можно запустить без отдельного API-ключа, если установлен Node.js 20 или выше.

Подключение к удалённому серверу без установки

Публичная точка входа MCP находится по адресу:

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

В Codex подключиться можно следующей командой:

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

Удалённый сервер не хранит входные значения и не вызывает API модел. На публичную точку входа действуют ограничения на размер запроса, количество запросов в минуту и число одновременных выполнений. Если вы not хотите отправлять дату рождения или имя на внешний сервер, используйте локальный способ ниже.

Установка в качестве плагина

В Codex и настольном ChatGPT может установить плагин, в котором вместе объединены MCP-подключение и инструкции по использованию естественного языка. Сначала добавьте этот репозиторий как источник плагинов.

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

Затем на экране Plugins достаточно установить Legend Saju. Этот способ использует открытый удалённый MCP, поэтому Node.js или отдельный API-ключ не нужен. Регистрация в публичном каталоге плагинов ChatGPT для веба — это отдельный этап с подачей заявки и ревью.

Подключение одной строкой в Codex

Terminal terminal run the following command.

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

Проверьте, что подключение прошло.

codex mcp list

Запустите Codex заново; если в /mcp видно legend-saju, установка закончена. Теперь можно задавать вопросы обычным образом, не называя имена инструментов или JSON.

Женщина, 30 июля 2000 года, 8:44 утра. Посмотри умно карьеру, деньги, брак и ближайшие три года.

Мужчина, 14 июля 1999 года, 11:24, женщина, 30 июля 2000 года, 8:44. Посмотри Совместимость и расчёт времени свадьбы.

Имя Kim Sang Су., иероглифы 金相洙. Отдельно от саджу проанализируй также основания учения имён.

Codex CLI, расширение Codex IDE и настольное приложение ChatGPT используют один и тот же конфигурации MCP Codex. Подробнее about support see the OpenAI MCP guide.

Подключение из других MCP-клиентов

В любом клиенте, поддерживающем MCP STDIO, можно использовать следующую конфигурацию запуска. Расположение файла настроек зависит от клиента.

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

Если нужно зафиксировать локальный источник, можно собрать репозиторий и напрямую использовать CLI-обёртку.

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

Локальный способ требует один раз выполнить npm ci && npm run build в корне репозитория.

Можно ли этим сразу пользоваться в вебе ChatGPT?

HTTPS-сервер удалённого MCP был готов. Однако появление публичного URL и регистрация в каталоге плагинов ChatGPT — это разные этапы. В режиме разработачика или в клиентах, поддерживающих удалённое MCP-подключение, приведённый выше URL можно использовать напрямую. Чтобы пользователи один стар получить установочный плагин, остаётся отдельный процесс регистрации и ревью.

Related MCP server: mcp-luopan

Что делает MCP

MCP-сервер предоставляет три инструмента read-only.

Тост

Функция

legend_saju_manifest

Показывает методы расчёта, источники и состав данных текущего движка

legend_saju_capabilities

Находит подходящий метод расчёта для запроса на естественном языке

legend_saju_resolve

Принимает запрос и входные значения и запускает подходящие методы

Три инструмента не три функции. Это маленький входной вход в большой реестр функции: его просмотр, поиск и запуск.

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

Legend Saju MCP сам по себе does not read OpenAI or Anthropic API-ключ and does not call models. Для разговора и пояснительных текстов используется существующая модельная сессия текущего клиента — Codex, Claude или другого.

Отличие MCP от прилагающего плагина

  • Если подключить т и базовое движение и три инструмента станут доступны сразу.

  • В Codex-плагине plugins/legend-saju/ собраны MCP-настройки и инструкции по естественному способу. Он улучшает обработку на сторону модели-хозяина, чтобы пользователю не вынуждать выбрать capability ID или входную схему.

  • Расчётные возможности внутри плагина не сильно утоньшены. MCP и плагин use одну и ту же публичную точку входа в движок.

Естественно-языковой ввод

Интерфейсом, который продуман в этом проекте, является диалог, а не форма приёма или меню интентов. Модель извлекает из диалога только надёжную информацию, находит нужный метод расчёта и объясняет основания, которые вернул движок.

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

Если вы сказали, что не знаете время рождения, движок не подставит полдень. Он вернёт варианты отдельно, включая две традиции границы дат для часа.

Запуск как разработчик

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 или новее. Репозиторий только ESM и пока не опубликован в npm.

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);

Возвращается не готовый текст гадания, а данные-основание для расчёта и интерпретации.

{
  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;
}

Зачем это создано

Многие AI-сервисы в area динамики start с промпта. Legend Saju начинает на уровень ниже есть calculations and foundations.

  • Детерминированное ядро: одинаковый вход даёт одинаковый результат без LLM.

  • Сохранение школ: Different view in Mingli or the Saho chips in Zhivei Doushu сохраняются как отдельные результаты.

  • Обработка неизвестного времени рождения: unknown hour is computed as a set of candidates and не выдумывается в полден.

  • Отслеживание sources: для каждой функции ставится зрелость, роль доказательства, школа, идентификатор источника and missing dimensions.

  • Никакого сокращённого «балла судьбы»: не объединяют основания и конфликты разных систем в единую цифру.

Фактические опубликованные данные

Репозиторий должен публиковать не только интерфейс для вызова моделей, но и письменную работу над сложными данными и правилами.

Запас

Диапазон выкладки

Многоязычная база знаний по восточной метафизике

36 fields, 777 evidence items

Глоссарий по минли

777 слов, including Korean · Hanja · Japan

Глоссарий по шанвэй Душу

214 слов (отсортированы по языкам)

by language

Проренв г Дуюн баоджан

"日日⨯月月" 120 cells + 66 executable exceptions

Теория дворцов и звёзд Шанцвей Душу

163 structured rules and 3 different systems of Sihua computed separately

ДалюЖж

60 day-stem × 12 heavenly branch, closed 720-transmitted table

"Железным верным" время?

1,500 wall, 32? 144 first, 2,028 in Life

Korea name study

9 495 observций юридических канча "Изучение имени" регулярно и 2 003 strokes shape, 2 003 observations

81 "числа" with specified range of origin

all 81 rows and primary source comparison

Исследования снов

《Zhou Gong》 988 dreams, Artemidorus 211 fragments, cross-cultural audit seeds 5

Проверяемые исходные данные лежат в отдельных открытых datasets.

В Мое repository, transfer everything as source, data/ [data/README.md].

Raw extraction result fixed by file; single optimized computation path совпадал побайтово с прежними result на 144 комбинациях Цаньвэй Душу. Details are in docs/PARITY.md.

Объём реализации

Система

Актуальные границы реализации

Календарь, натальная карта Saju

конвортация solar/lunar/leap, восемь иероглифов, большой периода, границы дат

命理

месячная сила, основания, hidden обрасти, десяти столпов? signals, three methods "божественного" корня, 120 cells of "Цзюнтун баоцзян"

Цзывей Доу Шу

Двенадцать дворцов, Три стороны и четыре угла, multiple Sihua profile, chain star connection, stacked layers

Daniel

closed table 60 day branches × 12 godly branch + boundary explicitness

Ци мэнь

"Метод"?" early decomposition all

"Cycles" (sext)

"Хuanji" long chains for three board + 14 series of personal wan si, 108-year chart

Корейская наука имен

9 549 hanja immutable, unicode and glyph decontext, horizontal "five" arithmetic stated by user, 81 with source

Better than trusting fixed numbers in README, call it getEngineManИровать() for the current "current registry" — it is more accurate.

The time of birth is treated as local civil time. timezone and longitudeE are saved in the birth metadata, but the base chart doesn't silently apply a correction of approximate true solar time. This lack is recorded in the function and input audit metadata.

"Wrong birth data" are returned through a structured blocked path, so that request can be changed together with other results. Non-existent targetDate or questionDateTime cannot safely run all date-based calc, so the request is rejected.

One open entry point

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

resolve({ question, ...inputs }) searches the current registry, routes the question, calls executable calculators and returns all needed but not missing entries. requestedCapabilities accepts not closed enum, but general strings. Therefore adding a new module to the engine doesn't require rewriting all client schemas.

If you pass a name to the name argument of resolveAsync, a separate Korean name-study path opening. The actual name Han characters are compared against 9,495 observed snapshots. It keeps in separate evidence layers: legal usability, assigned reading, observed stroke count, each Unicode, glyph decomposition, explicitly chosen five-frame calculation, cross-check with 81 "fortune numbers".

The existing synchronous resolve is compatible with users who only need calculations. The async variant lazily loads large name-study data only when a name is passed, so it does not increase startup cost for common saju tasks.

analyze(input) is an API with typed "born" specification. query({ intent, ... }) is the 26-intent compatibility interface used by legacy content bot. Content creation, prompt and publishing automation are not mixed into the compute core.

Performance

Reproducible benchmarks included.

npm run benchmark

On the current Apple Silicon dev machine/Node 26, the optimized current values were: median time for natal chart query 1.13 ms, median for full detailed natal chart with known birth time approx. 600 ms, median for New Process 63.1 ms import. These are engineering observations that can vary with hardware/environment. The current environment and method are given in PERFORMANCE.md.

When birth time is unknown

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

The engine returns separately the fixed pillar, changing relation, and all candidate hour pillars. It can compare candidates against past events, but it never decides one birth time by itself.

Скорее методология, чем мистика

Проект различает следующие этапы.

  1. расчёт календаря и натальной карты

  2. изучение структуры

  3. interpretation in separate school

  4. synthesis of multiple systems

  5. Описание, written by human or LLM

Прежде чем претендовать на product-level, прочти Methodology and Feature Limits.

Actual development process: development order, multilingual queries, executable agent "tasks". For maintainers, the GitHub release checklist is in docs/RELEASING.md.

Release status

Supported generation object is public GitHub source. package.json is marked private to avoid publishing to npm. npm run release:check checks that the public files match image in source and no common secret patterns appear. Data sources and publishing scope are described in DATA_LICENSES.md and release-boundary.json.

Next steps

  • Optional input screen for those not using MCP clients

  • strengthening remote MCP stability and optional authentication

  • Standalone input screen that works non-public "default private"

  • Separate license on dream interpretation data package

  • additional reference fixed values with independent review for each school

Responsible use

Legend Saju lets the traditional doctrinal systems be reproduced and compared. "Passes validation" means it reproduces the documented calculations, not that the prediction of accuracy is proven in the scientific sense. Do not use it as a replacement for medical, legal, financial, or psychological experts.

License

Project code is Apache-2.0. External libraries and data sets are subject to licensing. 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

ActivitySlowing
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
    41 npm
    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
    B
    maintenance
    Enables AI agents to cast deterministic BaZi, Zi Wei Dou Shu, and Western astrology natal charts from birth details, with no setup or API key.
    1
    39 npm
    MIT