Skip to main content
Glama
legend-saju

legend-saju

by SihyeonJeon

Legend Saju

No es un envoltorio que pasa unos pocos caracteres de saju a un LLM. Es un motor de metafísica oriental que devuelve de forma estructurada los métodos de cálculo, las escuelas, las fuentes y la incertidumbre.

CI License TypeScript

El mismo nacimiento se calcula según varias tradiciones. En la ruta de cálculo no hay llamadas ocultas a un LLM.

Conocimiento con fuentes vinculadas, 777; Da Liu Ren, 720 configuraciones; hanja coreanos para nombres observados, 9.495; llamadas a modelos en la ruta de cálculo, 0

Legend Saju gestiona en un mismo motor los cálculos de tradiciones distintas: Saju y Myeongni, Zi Wei Dou Shu, Qimen Dunjia, Da Liu Ren, Cheolpan Sinsu, Seongmyeonghak y otras. Si las escuelas difieren, no las fuerza a converger en una única conclusión; si se desconoce la hora de nacimiento, no crea una hora arbitraria.

La forma más rápida de empezar

La versión pública actual ofrece a la vez MCP local por STDIO y MCP remoto por HTTPS. El servidor local se puede ejecutar sin necesidad de una clave de API distinta si hay Node.js 20 o superior.

Conectar a un servidor remoto sin instalar nada

El endpoint público de MCP es el siguiente.

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

desde Codex se puede conectar con el siguiente comando.

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

El servidor remoto no guarda los valores de entrada ni realiza llamadas a una API de modelos. El endpoint público está sujeto a límites de tamaño de petición, de peticiones por minuto y de ejecuciones simultáneas. Si no deseas enviar a un servidor externo la fecha de nacimiento o el nombre, usa el método local que se explica más abajo.

###Instalarlo como plugin

En Codex y en el ChatGPT CX de escritorio se puede instalar un plugin que combina la conexión MCP con las instrucciones de uso en ghiny language natural. Primero añade este repositorio como fuente del plugin.

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

Después, desde la pantalla de Plugins instala Legend Saju. Este método usa el MCP remoto público, así que no necesitas Node.js ni una clave de API aparte. El registro en el directorio público de plugins de ChatGPT web es un paso posterior de envío y revisión.

Conectar con Codex desde una sola línea

Ejecuta el siguiente comando en la terminal.

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

Para confirmar la conexión:

codex mcp list

Tras volver a iniciar Codex, si ves legend-saju en /mcp, la instalación ha terminado. Ahora basta con escribir tus preguntas con normalidad, sin tener que mencionar el nombre de la herramienta ni el JSON.

Soy una mujer nacida el 30 de julio de 2000 a las 8:44 a.m.. Por favor, analiza de forma completa mi carrera, el dinero, el matrimonio y los próximos tres años.

Un hombre nacido el 14 de julio de 1999 a las 11:24 de la mañana, y una mujer nacida el 30 de julio de 2000 a las 8:44 de la mañana. Por favor, revisa a la vez la compatibilidad de la pareja y el momento en que podrían casarse.

Mi nombre es 김상수 (Kim Sang-su), con los caracteres 金相洹. Analiza, más allá del saju, también los fundamentos de la teoría del nombre en coreano.

El CLI de Codex, la extensión de Codex para IDE y la aplicación de escritorio ChatGPT comparten la misma configuración de MCP de Codex. Para más detalles sobre la conexión, consulta la guía de MCP de OpenAI.

Conexión desde otros clientes MCP

Si el cliente admite MCP por STDIO, se puede usar la siguiente configuración de ejecución. La ubicación exacta del archivo de configuración varía según el cliente.

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

Si prefieres fijar el código fuente local, primero compila el repositorio y ejecuta directamente el wrapper CLI.

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

El método local requiere ejecutar npm ci && npm run build una vez en la raíz del repositorio.

¿Se puede usar directamente desde un la web de ChatGPT?

El servidor remoto MCP por HTTPS está preparado. Aun así, el que exista una URL pública y el que esté registrado en el directorio de plugins de ChatGPT son pasos distintos. En la pasaje “desarrollo” o en clientes que admitan conexión MCP remota puedes usar directamente la URL anterior; para que el usuario normal lo vea como plugin instalable, queda un proceso de registro y revisión aparte.

Related MCP server: mcp-luopan

Lo que hace el MCP

El servidor MCP ofrece tres herramientas de solo lectura.

Herramienta

Función

legend_saju_manifest

Comprueba los métodos de cálculo, las fuentes y el alcance de los datos del motor actual

legend_saju_capabilities

Encuentra los métodos de cálculo adecuados a la pregunta en lenguaje natural

legend_saju_resolve

Recibe la pregunta y los datos de entrada y ejecuta juntos los métodos de cálculo pertinentes

Que haya tres herramientas no significa que haya tres funciones de la metafísica. Las herramientas son el pequeño punto de acceso en el que se revisa, se busca y se ejecuta un gran registro de funcionalidades.

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

El MCP de Legend Saju no lee las claves de API de OpenAI ni Anthropic, ni llama a un modelo. La conversación y las explicaciones usan la sesión de modelo ya existente del cliente que está en uso: Codex, Claude u otro.

Diferencia entre MCP y el plugin adjunto

  • Con solo conectar el MCP, puedes utilizar directamente el motor de cálculo y las tres herramientas.

  • El Plugin Codex de plugins/legend-saju/ incluye la configuración del MCP junto con instrucciones de uso en lenguaje natural. Así complementa el proceso de trabajo del modelo anfitrión, para que la persona no tenga que elegir un ID de capacidad ni un esquema de entrada.

  • La capacidad de cálculo no se distribuye copiada y adaptada dentro del plugin. Tanto el MCP como el plugin usan el mismo punto de entrada al motor público.

Entrada en lenguaje natural

La interfaz pretendida en este proyecto no es un formulario de inscripción o un menú de intenciones, sino la conversación. El modelo extrae de la conversación solo cierta información sólida, encuentra el método de cálculo necesario y explica los motivos que devuelve el motor.

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

Si se dice que la hora de nacimiento se desconoce, el motor no pone las 12 del mediodía de forma arbitraria. Devuelve a cartas separadas por candidatos, e incluye también las dos formas de tratar el cambio de día dentro de la hora Zi.

Ejecútalo como programador

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

Se necesite Node.js 20 o superior. Este repositorio es exclusivamente ESM y todavía no se publica en 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);

El valor de retorno no es una frase oraculada ya redactada, sino los datos de base para el cálculo y la interpretación.

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

Por qué he creado

Muchos servicios de IA astrológicos atribuyen un gran peso al promput. Legend Saju empieza desde una capa más abajo: cálculo y evidencias.

  • Núcleo determinista: los mismos datos de entrada producen el mismo resultado de cálculo, sin necesidad de un LLM.

  • Escuela preservada: cada la variante de lectura y acupuntura ideal o de las cuatro transformaciones del Zi Wei Dou Shu se guardan en su propio resultado.

  • Tratamiento de la hora de nacimiento desconocida: cuando se desconoce la hora se calcula como candidato, y no se inventa el mediodía.

  • Trazabilidad de las fuentes: cada función indica la dependencia de las fuentes, el nivel de madurez, el rol del criterio, la escuela, el ID de la fuente y las dimensiones que faltan.

  • No hay una puntuación del destitEssen: los fundamentos y los conflictos de sistemas distintos no se comprimen en combinación de un solo número.

Activos que se incluyen de verdad

Este repositorio no solo abre la interfaz de llamada a modelos; también publica el trabajo de datos y reglas difícil.

Activo

Selección

Repositorio de conocimiento clásico multilingüe

7369 áreas, 77 ítem con fuente

Glosario de terminología del saju =

777 entradas en coreano, chino, chino japonés

Glosario del Zi Wei Dou Shu.

2.214 entradas organizadas por idioma

Gungdongbogam

120 cajas de día × elar de la Luna y 66 cláusulas ejecutables de nivel inferior

Teoría de los Palacios y Estrellas del Zi Wei Dou Shu

163 reglas estructuradas y 3 marcos de transformación de los “Shir.hua” que se calculan de forma independiente

Da Liu Ren

tabla fija y cerrada de 60 días × 12 “cielos” y 719 configuraciones de transferencia

El "Tieban Shinsu" experiencia del tiempo de la pregunta

1.500 y hexagramas, 144 filas del cielo preostensible y 2.028 filas de la vida

Onomología corea

9.495 observaciones de hanja para nombre legal y 2.003 observaciones de variantes de trazo

Los 81 números con ámbito de las fuentes

81 filas completas con contador y recontra to con las fuentes primarias

Datos sobre el estudio de los sueños

988 sueños de Zhou el príncipe de... y el fragmento del sueño de Artemidoro y 5 semillas de control transcultural

Los datos verificables del escrito están en data/. The knowledge needed for execution is included in the runtime, so it does not depend on an external database or a hidden search service.

Las extracciones se fijan por archivo, y la única ruta de cálculo optimizada coincidió byte a byte con los resultados recogidos en las 144 vietos de Zi Wei Dou Shu. Los detalles se plantean en docs/PARITY.md.

Implementación de los límites

Sistema

Estado actual de implementación

El calendario y la base de saju

Conversión entre calendario solar, lunar y lunar, el "cuatro pilares", los períodos + de suerte y los límites del día

Myeong

mando del mes, la base de la escapada, las direcciónes ocultas, las diezechos, las combinaciones y choques atrás, 3 escuelas de la preselección del dios de función y los 120 espacios del Gongtong

El mikro

12 palacios, el esquema de la cuadrica y de las tres direcciones, múltiples marcos del “cuatro cambios”, las conexión de las “líneas de vuelo” y las capas de la copa de la suerte superpuestas

El Da Liu Ren

La tabla cerrada de los 60 sistemas por × 12 “mesas” del “cielo” y el método de las transformaciones con universo definido

El Qimen Dun Jia

los los del periodo temporal, el y los 9 palacios, las 9 extremidades, las 8 puertas, los 8 espíritus, los “duizhu” al y el vacío

El cheolpas

las cadenas del “Huang Ji” de las 3 ediciones, la tabla libre: 14 del tiempo de la pregunta, los números del cielo anterior y las 108 filas del árbol de vida

Onomología corea

El 9. generación, el desglose de letras y de Unicode, el cálculo de la diferencia de tipo (五格) en el sistema the user has told and the 81 -número de la tabla with its source

Es más preciso comprobar el elenco actual con getEngineManifest() que confiar en las cifras fijadas de este README.

La hora de nacimiento se interpreta como hora civil local. timezone y longitudeE se conservan como metadatos del lugar de nacimiento, pero la carta no estados aplica un ajuste de “huso horario” de forma implícita. Esta falta de ajuste queda registrada en el metadato de función y de auditoría de entrada.

Los datos de nacimiento que no son válidos se devuelven mediante la ruta estructurada blocked, para que puedas solicitar una corrección junto con el resto de resultados. If a targetDate or questionDateTime does not exist, the whole calculation based on dates cannot be done at all, so the request itself is refused.

Una sola puerta de entrada:

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

resolver({question, ...inputs}) busca en el registro actual, dirige la pregunta al método apropiado, ejecuta los soluciones con cálculo, y devuelve el resultado con los datos faltantes sin ocultarloplos. requestedCapabilities admite cadena de texto general, no un enum restringido. Por lo tanto, agregar un nuevo módulo al motor no obliga a actualizar de todos los esquemas de los clientes.

Si pasas el nombre a la entrada con name de resolveAsync, se abre un recorrido completo de onomología corea independiente. Realiza el apellido y el nombre propietario reales con el snapshot de observación de 9.495 hanungg and los resultados de legalidad posible, la ortografía asignada, los candidatos de trazo observados, la fuente (“Unicode”), la descomposición glifos, la fórmula de la 5 casillas del sistema del usuario y la tabla de 81 Letras, todo ello se guarda en capas distintas de fundamentación.

El símbolo presentado para resolve. Async loops not used, la carga diferida del gran data onométeo only if there is a nombre, así que no aumenta el coste de arranque de un cálculo de saju normal.

analyze(input) es una API de información de nacimiento con un tipo. query({intent, ...}) es la interfaz de la interfaz de compatibilidad de las 26 intenciones que utilizaban los bots. La automatización de la creación y la publicación de contenidos no se mezcla con el núcleo de cálculo.

Rendimiento

Se incluyen referencias comparables reproducibles.

npm run benchmark

En el hardware de desarrollo Apple Silicon actual y con Node 26, los valores de referencia optimizados fueron: en la consulta de la base del saju, la mediana de 1.13 ms; en una especificación total con hora de nacimiento conocida, mediana de alrededor de 600 ms; en la importación de un nuevo proceso, mediana de 63,1 ms. Estos valores técnicos pueden variar según el equipo y el variable. Los últimos valores y métodos de medida se dan en el PERFORMANCE.md.

Cuando no se conoce la hora

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

Las estructuras fijas, las relaciones variables y todos los xxxxxx de la hora que es devuelven por separado. Los acontecimientos pasados se pueden comparar con los candidatos, pero el motor nunca decide por sí pequeño la hora de nacimiento correcta.

Metodología por delante de los misterios

Este proyecto separa las siguientes etapas:

  1. Cálculo del calendario y del cruce de destino

  2. Observación del estructura

  3. Interpretación según la Escuela

  4. Síntesis de los diferentes sistemas

  5. Escritura hecha por un ser humano o un LLM

Antes de realizar afirmaciones de nivel product, hay que leer Metodología y Capacidades.

En Cómo se construye se incluye y desarrollo real, las consultas en diferentes idiomas y las instrucciones de trabajo reproducibles con el agente. La lista de distribución pública para los contribuidores está en docs/RELEASING.md.

Estado de la publicidad

El ámbito de distribución compatible es la fuente pública de GitHub. package.json está marcada como private para evitar su publicación en npm. npm run release:check comprueba que los archivos públicos coinciden con la instantánea del código fuente y que no hay ningún patrón de signo secreto común. Las fuentes de los datos y el alcance de la cita pública se documentan en DATA_LICENSES.md y en el archivodel.

Próximos pasos

  • Pantalla de entrada opcional para quien no usa clientes MCP

  • Estabilidad de la ejecución del MCP remoto y autenticación opcional

  • Pantalla separada de datos de naocts que funciona con datos privados por defecto

  • Paquete de datos de atención bajo licencia separada

  • Valores fijos de fuentes originales y revisión independiente por escuelas

Uso responsable

Legend Saju reproduce y comparan varios sistemas de astrología tradicional. Superar la validación de software significa reproducir los cálculos documentados; no significa que haya probado una capacidad predictiva científica. No se utilice en lugar de profesionales de salud, médicos, abogados, asesores financieros ni de salud mental.

Autoridad y forma de uso

El código del proyecto es Apache. Las bibliotecas externos de bibliotecas y los demás conjuntos de datos siguen sus propias condiciones de uso. Vea DATA_LICENSES.md y 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.

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

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.

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

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.

NameRequiredDescriptionDefault
limitNo
queryNo
systemsNo

Output 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.

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

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.

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

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.

NameRequiredDescriptionDefault

No parameters

Output 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.

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

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.

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

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.

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

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

ActivityNo data
ResponsivenessSyncing

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
    75 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
    C
    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
    68 npm
    MIT