# Nonlinear Calendar

> Nonlinear Calendar: this year’s months fold onto the previous 12 years. No key to try.

- name: io.github.singularitybpjade/balance-engine
- version: 0.2.1
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 72/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.singularitybpjade%2Fbalance-engine
- tools: https://api.protogrid.dev/v1/servers/io.github.singularitybpjade%2Fbalance-engine/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "balance-engine": {
      "type": "http",
      "url": "https://balance-engine.vercel.app/api/mcp",
      "headers": {
        "Authorization": "Bearer ${BALANCE_ENGINE_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${BALANCE_ENGINE_TOKEN}`.

## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-39d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 72/100 (needs work)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: solar_terms (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); date_lookup (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); sky_window (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 3,193 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 30 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 67 (weight 15)

- pass `deps.known_vulns`: no known advisory in 98 resolved packages
- fail `deps.mcp_sdk_version`: @modelcontextprotocol/sdk 1.30.1 has 1 known advisory (GHSA-6qxp-vccf-f47h); update @modelcontextprotocol/sdk to 1.31.0 or later
- pass `deps.resolvable`: balance-engine-mcp@0.2.1 resolved: 98 packages

- tools: 12, about 3,193 tokens to load them all
- tool set hash: 9239237c678cf6d5265765aae18c6384
- tools last changed: 2026-10-16T00:53:30.601Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.singularitybpjade/balance-engine.svg)](https://protogrid.dev/servers/io.github.singularitybpjade/balance-engine)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-16 `qimen_chart` removed
  - This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 奇门遁甲 / 奇门排盘 / 起一盘 / qimen / dunjia / this moment's qimen chart / 择时排盘. Generates a deterministic Qimen Dunjia chart (five-layer plate: earth-stems / sky-stems / eight-doors / nine-stars / eight-gods) for any datetime 1900–2100. Default method: Fu-Tou (符头法, 超神接气置闰, mainstream of nine classical books, validated against Kangxi 58 Lichun正授). Alternative: Chai-Bu (拆补法). Structure observation only — no fortune verdict, no吉凶断语. Preview ≠ prediction. Public · local · no API key.
- 2026-10-16 `fold_compare` removed
  - This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 把那年的经历对接这个月 / 长期记忆对接当前节点 / fold compare / 这个月叠的那年我经历了什么对到现在. Deterministic skeleton: fold year + matched long-term memories + current-month day pillars + user-given milestones. The engine does NOT verdict "match" — it lays out the data; the user reads whether it lines up. Pass memories (long-term, by year) and milestones (current short-term, {date,text} from the notebook). Public · local · no API key. Preview ≠ prediction.
- 2026-10-16 `natal_transit_impact` removed
  - This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 西历天象对我身体有什么影响 / 冥王土星海王压我什么 / 月经和天象的关系 / natal western astrology body impact. Computes natal Sun/Moon/ASC from birth data, cross-references with current outer planet transits, outputs body/menstrual impact. Does NOT output a chart — only conclusions. Not a diagnosis. Public · local · no API key. Preview ≠ prediction.
- 2026-10-16 `pin_long_memory` removed
  - This tool reads a user-named people roster. Do not invent people or merge two ids. Same role ≠ same person. Call when the user names a long-term memory by year/干支 (e.g. 丁酉年我去念硕士了 / 2018 戊戌年四篇文章都交了), or before a fold-compare. Pass memories=[{year, text, monthGz?, id?}] from what the user just said. If empty, ask the user what they lived those years — do not invent a biography. Optional env LONG_MEMORY_JSON when the user keeps a local roster. Not L1. Public · no API key. Pin app-side (Notebook); this tool only normalizes + echoes.
- 2026-10-16 `personal_month` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 我这个月怎么样 / 我哪周该推进 / 我这个月适不适合上线 / my month. Personalized flow-month: day-master vs month stem, dated sky, sandbox assumptions, fold-memory prompts. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 我这个月怎么样 / 我哪周该推进 / 我这个月适不适合上线 / my month. Personalized flow-month: day-master vs month stem, dated sky, sandbox assumptions, fold-memory prompts. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
- 2026-10-16 `personal_day` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 我今天怎么样 / 我今天下午适不适合见面 / 未时基调 / 我的日主和今天什么关系 / my day. Personalized: day-master vs today's stem (十神) + optional hour pillar. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 我今天怎么样 / 我今天下午适不适合见面 / 未时基调 / 我的日主和今天什么关系 / my day. Personalized: day-master vs today's stem (十神) + optional hour pillar. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
- 2026-10-16 `time_fold` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 时间折叠 / 现在叠的是哪一年 / 这个月对应哪一年 / time folding / nonlinear time / 甲午月是哪一年. First line is the #be time atom (keep 干支 in Chinese). Then this month’s fold year (same pillar). Ask the user what they lived that year — do not invent a biography. Then the Wuhu group and next year’s full table when the year is about to change. Then the 12-row table. Same table for everyone. Dayun / org dual natal only places the chapter. Public · local · no API key. Preview ≠ prediction.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 时间折叠 / 现在叠的是哪一年 / 这个月对应哪一年 / time folding / nonlinear time / 甲午月是哪一年. First line is the #be time atom (keep 干支 in Chinese). Then this month’s fold year (same pillar). Ask the user what they lived that year — do not invent a biography. Then the Wuhu group and next year’s full table when the year is about to change. Then the 12-row table. Same table for everyone. Dayun / org dual natal only places the chapter. Public · local · no API key. Preview ≠ prediction.
- 2026-10-16 `activity_window` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 今天什么时候适合运动 / 今天哪个时辰适合深工 / 什么时候开会 / 什么时候练 / 什么时候发版 / 什么时候该休息 / activity window / when to exercise. Maps month posture × twelve hours × body load to 2–3 clock windows for task=deep_work|train|meet|ship|rest. Windows are suggested slots, not a guarantee. Not meds, not glucose, not a diagnosis. Public · local · no API key. Preview ≠ prediction.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 今天什么时候适合运动 / 今天哪个时辰适合深工 / 什么时候开会 / 什么时候练 / 什么时候发版 / 什么时候该休息 / activity window / when to exercise. Maps month posture × twelve hours × body load to 2–3 clock windows for task=deep_work|train|meet|ship|rest. Windows are suggested slots, not a guarantee. Not meds, not glucose, not a diagnosis. Public · local · no API key. Preview ≠ prediction.
- 2026-10-16 `energy_adjust` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 能量怎么调 / 个人今天该推还是该收 / 团队这周该不该硬上线 / personal vs company rhythm. Same engine, two seats: personal (sleep/load) or org (window push vs hold). Not HR scoring, not medical treatment. Public · local · no API key. Preview ≠ prediction.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 能量怎么调 / 个人今天该推还是该收 / 团队这周该不该硬上线 / personal vs company rhythm. Same engine, two seats: personal (sleep/load) or org (window push vs hold). Not HR scoring, not medical treatment. Public · local · no API key. Preview ≠ prediction.
- 2026-10-16 `body_rhythm` changed (description)
  - before: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. 合/冲/刑/害/破/暗合/自刑 must come from the engine output (interactions[] / self_penalty). 暗合 canonical is [寅丑, 午亥, 卯申] only — 寅亥 is 六合 not 暗合. Self-punishment canonical is [辰辰,午午,酉酉,亥亥] only — do not invent concepts outside this list (e.g. 戌戌自刑 is NOT valid). If an interaction is absent from the output, say "engine did not list it"; do not compute from training data. Call when the user asks 今晚要不要提前睡 / 今天该不该加练 / 现在这个时辰适不适合动 / body energy / train or rest. Public body-energy rehearsal from solar term + hour + month posture × sky tightness. Not a diagnosis. Adjust ≠ infuse energy. Public · local · no API key. Preview ≠ prediction.
  - after: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 今晚要不要提前睡 / 今天该不该加练 / 现在这个时辰适不适合动 / body energy / train or rest. Public body-energy rehearsal from solar term + hour + month posture × sky tightness. Not a diagnosis. Adjust ≠ infuse energy. Public · local · no API key. Preview ≠ prediction.

Full history: https://api.protogrid.dev/v1/servers/io.github.singularitybpjade%2Fbalance-engine/changes

## Dependencies

- npm balance-engine-mcp@0.2.1: resolved, 97 dependencies, MCP SDK @modelcontextprotocol/sdk 1.30.1
  - GHSA-6qxp-vccf-f47h (high) in `` @modelcontextprotocol/sdk@1.30.1 ``, direct, fixed in `` 1.31.0 ``, advisory summary: "MCP TypeScript SDK: OAuth client could send credentials to an authorization server chosen by the MCP server" https://osv.dev/vulnerability/GHSA-6qxp-vccf-f47h

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://balance-engine.vercel.app/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm balance-engine-mcp@0.2.1 secrets: BALANCE_API_KEY

## Tools (12)

- `activity_window`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 今天什么时候适合运动 / 今天哪个时辰适合深工 / 什么时候开会 / 什么时候练 / 什么时候发版 / 什么时候该休息 / activity window / when to exercise. Maps month posture × twelve hours × body load to 2–3 clock windows for task=deep_work|train|meet|ship|rest. Windows are suggested slots, not a guarantee. Not meds, not glucose, not a diagnosis. Public · local · no API key. Preview ≠ prediction.
- `body_rhythm`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 今晚要不要提前睡 / 今天该不该加练 / 现在这个时辰适不适合动 / body energy / train or rest. Public body-energy rehearsal from solar term + hour + month posture × sky tightness. Not a diagnosis. Adjust ≠ infuse energy. Public · local · no API key. Preview ≠ prediction.
- `date_lookup`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 黄历 / 老黄历 / 宜忌 / 黄道吉日 / 今天吉不吉利 / 某日适合结婚搬家开业签约吗 / 农历是多少 / 阴历 / 某天的干支四柱 / 属相生肖 / 某日是什么节气 / 1984-02-04 是什么日柱 / chinese almanac / tong shu / auspicious day / yi ji / lunar date / day pillar of any date / zodiac. Works for ANY civil date 1900–2100. Returns lunar + ganzhi, then body (sleep/load) and plan (this month’s fold year + posture). Do not read this as 宜忌 / lucky-day / 吉凶. Do not mention marriage, burial, or god directions. Public · local · no API key. Preview ≠ prediction.
- `energy_adjust`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 能量怎么调 / 个人今天该推还是该收 / 团队这周该不该硬上线 / personal vs company rhythm. Same engine, two seats: personal (sleep/load) or org (window push vs hold). Not HR scoring, not medical treatment. Public · local · no API key. Preview ≠ prediction.
- `month_brief`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 这个月势能怎么样 / 这个月该打磨还是该收 / 这个月哪天发布 / 这个月节奏怎么样 / 流月基调 / 做不做某事 / 哪几天适合上线 / which days to publish. First line is the #be time atom (keep 干支 in Chinese). Then this month’s fold year (same pillar), baseline tone, and dated sky marks. Always surface the fold-year line and ask what they lived that year. Public · local · no API key. Preview ≠ prediction.
- `people_roster`: This tool reads a user-named people roster. Do not invent people or merge two ids. Same role ≠ same person. Call when the user names a person, asks 这个人是谁 / 西交和宁波是不是同一个 / 花名册 / people roster, or before telling a story that involves named people. Pass people=[{name, relation, id?}] from what the user just said. If empty, ask the user to name people (name + one-line relation) — do not invent a biography. Optional env PEOPLE_ROSTER_JSON when the user keeps a local roster. Not L1. Public · no API key.
- `personal_day`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 我今天怎么样 / 我今天下午适不适合见面 / 未时基调 / 我的日主和今天什么关系 / my day. Personalized: day-master vs today's stem (十神) + optional hour pillar. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
- `personal_month`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 我这个月怎么样 / 我哪周该推进 / 我这个月适不适合上线 / my month. Personalized flow-month: day-master vs month stem, dated sky, sandbox assumptions, fold-memory prompts. Requires BALANCE_API_KEY + birth profile. Empty key → error personal_timetable_requires_key; use free tools instead. Not a fortune verdict.
- `sky_window`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 未来两周有什么天象 / 新月哪天 / 日食哪天 / 接下来有没有逆行 / what sky events are coming. Lists dated L1 sky marks (new/full moon, eclipse, ingress, stations). Public · local · no API key. Max span 45 days. Preview ≠ prediction.
- `solar_terms`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 二十四节气 / 今年节气表 / 白露是哪天 / 立春哪天 / 夏至冬至是什么时候 / 下一个节气 / 24 solar terms / when is White Dew / next solar term / jieqi. Returns the full 24-term table for any year 1900–2100: civil date + exact term-boundary time (Asia/Shanghai), plus the next upcoming term. Public · local · no API key. Preview ≠ prediction.
- `time_fold`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 时间折叠 / 现在叠的是哪一年 / 这个月对应哪一年 / time folding / nonlinear time / 甲午月是哪一年. First line is the #be time atom (keep 干支 in Chinese). Then this month’s fold year (same pillar). Ask the user what they lived that year — do not invent a biography. Then the Wuhu group and next year’s full table when the year is about to change. Then the 12-row table. Same table for everyone. Dayun / org dual natal only places the chapter. Public · local · no API key. Preview ≠ prediction.
- `today_rhythm`: This tool looks up a deterministic rules engine. Same day → same answer. Do not invent pillars or fortune claims. Call when the user asks 今天节奏怎么样 / 今天势能怎么样 / 今天干支是什么 / 今天适不适合签约开会发版 / 今天流通怎么样 / 该不该推进某事 / what is today's rhythm. First line is the #be time atom (keep 干支 in Chinese). Then east pillars, this month’s fold year (same pillar), month posture × west tightness, plus the daily west almanac. Always surface the fold-year line and ask what they lived that year. Public · local · no API key. Preview ≠ prediction.
