N.I.L.O. Docs

CLI API

この文書は、現在の public nilo CLI surface、hidden compatibility entries、Core call boundaries を記録します。CLI は terminal user experience を担当し、business behavior は Core services から取得します。

Entrypoint

Core boundary

CLI -> Core または Runtime
MCP -> Core または Runtime

CLI は Notion SDK を直接呼ばず、MCP adapter も import しません。共有 business behavior は Core、共有 process/execution behavior は Runtime に置きます。Core/Runtime は CLI/MCP を import してはいけません。新しい command を追加する前に共有 capability を確認し、CLI modules には CLI-specific parsing、presentation、interaction だけを定義します。

Public root commands

projectlocal、root statusconfig global/localconfig set/get/unset/list は hidden compatibility entries です。public command surface ではありません。

CLI は Git/gh-style scope を使います。global commands はどの directory からでも動作し、project commands は current directory から user home まで上位探索して最も近い .notion_mcp/ context を解決します。

Short alias contract

すべての public canonical command path には、6 文字以内の明示的な alphabetic alias があります。canonical names が文書上の primary interface で、alias は同じ callback を実行します。通常の help を簡潔にするため aliases は hidden です。

Root examples:

Canonical Alias
init ini
version ver
config cfg
pwd cwd
page pg
block blk
database db
data-source ds
server srv

Leaf examples は retrieve -> getcreate -> newupdate -> updtrash -> delserver run -> server start です。完全な validated mapping は src/nilo/cli/aliases.py にあります。

Function Calling error contract

invocation のどこかに --json がある場合、Click/Typer usage errors は exactly one compact JSON line で出力されます。stable envelope は ok=false と、typecodemessagedetails.exit_code を持つ error object を含みます。stable usage codes は cli_missing_parametercli_invalid_parametercli_unknown_optioncli_usage_error です。--json のない human invocation は通常の help/error rendering を維持します。

Project context

Core が project context を提供します。

ProjectResolver
ProjectConfigStore
AttachmentStore
ContextResolver

Resolution order:

explicit id > attached state > error

Project-local configuration:

.notion_mcp/config.json

Attachment state:

.notion_mcp/state/page.attach.json
.notion_mcp/state/database.attach.json

Project-local configuration と attachment state は token を保存してはいけません。

Project configuration が override できるのは non-sensitive Core settings だけです。global credentials は常に global configuration に残します。project initialization は user home を project root として拒否し、root .gitignore.notion_mcp/ を増分追加します。

Page CLI

Page ID inputs は src/nilo/core/identifiers.py で normalize されます。Public <page_id> arguments は raw IDs、Notion URLs、Notion URL を含む Markdown links を受け取れます。

Public commands:

Hidden compatibility entries は旧 aliases 用に残しますが、public user commands として文書化しません。

Block CLI

Public commands:

insert-before は stable public command ではありません。block remove は trash behavior の hidden compatibility alias です。

Database and DataSource

Semantic model:

database = container
data_source = table under database
page = page or data source entry
block = page content node

Container-level operations には database を使います。Table-level schema、query、templates、entry creation には data-source を使います。Database shortcuts は attached database の active data source に対してのみ使います。

Database container commands

database create は database container と initial data source を作成します。database update は container-level fields だけを更新し、data source schema は変更しません。

Database shortcut commands

Attached database の active data source にだけ作用します。

Explicit data source operations は data-source を使います。Page property updates は page update を使います。

DataSource commands

Other object domains

Raw API は advanced fallback entrypoint であり、通常の page/database editing path ではありません。

Removed legacy entrypoints

次の old root commands は public CLI entries ではありません。

Configuration には nilo config --global ... を使い、MCP server lifecycle には nilo server ... を使います。