# Completed document comparison example

**Checked:** 2026-09-06 (documentation and repository metadata only)  
**Question:** Which boundary fits a team deciding between a hosted Bazi calculator API, a local tool, and an owned Korean Saju web-app starting point?

## Observations

### OpenFate BaZi MCP

- **Source URL:** [OpenFate BaZi MCP README](https://github.com/openfate-ai/openfate-mcp/blob/main/README.md)
- **Boundary:** Local stdio MCP.
- **Documented evidence:** The README shows an `npx -y @openfate/bazi-mcp` MCP server configuration and a `calculate_bazi_chart` tool with date, time, minute, and gender inputs, including `calendarType`, `timezoneId`, and `dayBoundaryMode` distinctions.
- **Decision use:** Suitable for evaluating a local tool boundary. Preserve its documented calendar and time fields when comparing callers; do not treat them as a hosted HTTP contract.

### saju-api.pages.dev

- **Source URL:** [saju-api quickstart](https://saju-api.pages.dev/quickstart/)
- **Boundary:** Hosted REST documentation.
- **Documented evidence:** The quickstart describes `POST /api/v1/calculate`, an `X-API-Key` header, and date, time, gender, and language fields. Its example uses `hour: -1` for an unknown birth hour, and `lang` defaults to `ko`.
- **Decision use:** A candidate when the integration needs HTTPS and a provider key. No signup or request was made, so availability, billing, and runtime behavior remain unverified here.

### sazu.app Manse API

- **Source URL:** [Sazu Manse API documentation](https://www.sazu.app/manse-api/docs)
- **Boundary:** Hosted REST documentation.
- **Documented evidence:** The docs are dated 2026-09-01, describe a calculate endpoint and true-solar-time option, and distinguish fixed sample profiles in the free sandbox from paid real birth calculation.
- **Decision use:** A candidate for comparing hosted input and plan boundaries. The documentation alone does not settle how its semantics match another implementation.

### jaeyeonling/saju-ts

- **Source URL:** [jaeyeonling/saju-ts repository](https://github.com/jaeyeonling/saju-ts)
- **Boundary:** Local TypeScript library.
- **Documented evidence:** The repository describes a TypeScript Saju library and GitHub metadata reports an MIT license.
- **Decision use:** A candidate when the team wants code in its own runtime. Maintenance, integration work, and output behavior still need review.

### Owned Korean Saju source pack

- **Source URL:** [Korean Saju source pack](https://builderlog.net/products/saju-source/)
- **Boundary:** Buyer-owned web-app source and deployment.
- **Documented evidence:** The delivered package documentation describes local development, Korean Saju-oriented features, and buyer-owned production D1/DNS configuration.
- **Decision use:** A candidate when the team values an owned starting codebase and can perform its own deployment, privacy/legal review, and production configuration.

## Decision recorded

No single row wins by name. The first split is transport and ownership: hosted HTTP needs provider access and plan review; local MCP/library needs local runtime and integration review; an owned source pack needs buyer-owned deployment and product review. Callers should preserve documented distinctions such as unknown-hour values, language defaults, calendar type, timezone, and day-boundary mode rather than normalize them away. The next step is a human-reviewed, reversible test against the selected boundary. No provider call or purchase was made; provider tests were not rerun and accuracy or speed was not measured.
