{"_id":"@sakasegawa/ncli","_rev":"5-3b9e5ab40545fa2bd636f3a99497f2c5","name":"@sakasegawa/ncli","dist-tags":{"latest":"0.3.3"},"versions":{"0.2.0":{"name":"@sakasegawa/ncli","version":"0.2.0","keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"author":{"name":"Sakasegawa"},"license":"MIT","_id":"@sakasegawa/ncli@0.2.0","maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"homepage":"https://github.com/nyosegawa/notion-cli#readme","bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"bin":{"ncli":"dist/index.js"},"dist":{"shasum":"7a70dd4a8e7e83786485808b66c6238655c6a67c","tarball":"https://registry.npmjs.org/@sakasegawa/ncli/-/ncli-0.2.0.tgz","fileCount":6,"integrity":"sha512-sWHyu3/+EVfXq7wBAqRdlOBOCFywnaK7u+aNiR7+Hr6K1hBpsmgnCsz4C8GkAiD782OsMCbxms9RDVEiLkZVtw==","signatures":[{"sig":"MEUCIQCDwwL944lQGrtszkjMw1p/55zRM8ENJAR52YrH8IIMfgIgc652fVQT6fNVR+BxIEuI9UIIa5gviObDSVIhimaVspQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":50474},"type":"module","engines":{"node":">=18"},"gitHead":"3f04db0988bdfba7115cbb3ecfcf3ec67289d1dc","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"biome check .","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean","lint:fix":"biome check --fix .","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck && npm run lint && npm test"},"_npmUser":{"name":"sakasegawa","email":"nyosegawa@gmail.com"},"repository":{"url":"git+https://github.com/nyosegawa/notion-cli.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI wrapper for Notion's Remote MCP server","directories":{},"_nodeVersion":"22.19.0","dependencies":{"open":"^11.0.0","commander":"^14.0.3","env-paths":"^4.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","lefthook":"^2.1.4","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/ncli_0.2.0_1773893569405_0.09173427944860846","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@sakasegawa/ncli","version":"0.3.0","keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"author":{"name":"Sakasegawa"},"license":"MIT","_id":"@sakasegawa/ncli@0.3.0","maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"homepage":"https://github.com/nyosegawa/notion-cli#readme","bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"bin":{"ncli":"dist/index.js"},"dist":{"shasum":"c160ec799616a8e66694d705b7ccd4c60d33d985","tarball":"https://registry.npmjs.org/@sakasegawa/ncli/-/ncli-0.3.0.tgz","fileCount":6,"integrity":"sha512-7AyCu8++hv5trLaIRKF3trSJLr0Q7PzIKUiGYnumZzhJ1G47ffiFDg8K7Kv3XpdIYkBaTtqDzrckg06JyTyRwg==","signatures":[{"sig":"MEQCIFrrJ7FnFw3VcfFkNn75RuV5Gr7Z7cuY0oY8QBvOQ8l9AiBIriuF2gIPAEH1EUDhZ0c0gaarJm1iHytQMFwvQ1ju0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66379},"type":"module","engines":{"node":">=18"},"gitHead":"ec4fd459dd75e4fefe404d27eeffdfa7b8ad7486","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"biome check .","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean","lint:fix":"biome check --fix .","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck && npm run lint && npm test"},"_npmUser":{"name":"sakasegawa","email":"nyosegawa@gmail.com"},"repository":{"url":"git+https://github.com/nyosegawa/notion-cli.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI for Notion — MCP + REST API support","directories":{},"_nodeVersion":"22.19.0","dependencies":{"open":"^11.0.0","commander":"^14.0.3","env-paths":"^4.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","lefthook":"^2.1.4","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/ncli_0.3.0_1773985221165_0.24683371670909704","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@sakasegawa/ncli","version":"0.3.1","keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"author":{"name":"Sakasegawa"},"license":"MIT","_id":"@sakasegawa/ncli@0.3.1","maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"homepage":"https://github.com/nyosegawa/notion-cli#readme","bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"bin":{"ncli":"dist/index.js"},"dist":{"shasum":"020b83514ce6081892c43632822b2b51dd327576","tarball":"https://registry.npmjs.org/@sakasegawa/ncli/-/ncli-0.3.1.tgz","fileCount":6,"integrity":"sha512-JDEetYdT6YqSai/KsbwhJkTQstbu0JvPT8kz896QZ4m9UEzz7ddNdcOusUKyDBfSb1x5lepp9+j/xOaqD1jFlg==","signatures":[{"sig":"MEYCIQCnl44MXEhNNoPPXwY9sWj+dCP0rhph/glPgT1W1VbevQIhAO6bvbt699nzusXXE5unG0qimB8o4JM/xSDrAbmw3ZGF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66671},"type":"module","engines":{"node":">=18"},"gitHead":"cab00e2809203b658ee456920c4e6505e3c1e138","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"biome check .","test":"vitest run","build":"tsup src/index.ts --format esm --dts --clean","lint:fix":"biome check --fix .","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck && npm run lint && npm test"},"_npmUser":{"name":"sakasegawa","email":"nyosegawa@gmail.com"},"repository":{"url":"git+https://github.com/nyosegawa/notion-cli.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI for Notion — MCP + REST API support","directories":{},"_nodeVersion":"22.19.0","dependencies":{"open":"^11.0.0","commander":"^14.0.3","env-paths":"^4.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","lefthook":"^2.1.4","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/ncli_0.3.1_1773985575203_0.39450334031459766","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@sakasegawa/ncli","version":"0.3.2","keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"author":{"name":"Sakasegawa"},"license":"MIT","_id":"@sakasegawa/ncli@0.3.2","maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"homepage":"https://github.com/nyosegawa/notion-cli#readme","bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"bin":{"ncli":"dist/index.js"},"dist":{"shasum":"254835f7c2ea17d427123a497efb30e5a8e0e48c","tarball":"https://registry.npmjs.org/@sakasegawa/ncli/-/ncli-0.3.2.tgz","fileCount":6,"integrity":"sha512-BQOPaEGmYiywwPhNfaCB8hGQh1qKecQsW0Q8BTsYDzjkFjKnaiGYMcovCuZhdx04gEOZ7ytVWJpeJvj6KWcQrQ==","signatures":[{"sig":"MEUCIQDM5HkisYkZB9YsqY4lIqfUVlcrW4LoeJWh0PI6bXaTRwIgP8mHs33gkhJ/P1riPAU7Lpftp6Fm8kRdZAVkKCP15r8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66420},"type":"module","engines":{"node":">=18"},"gitHead":"185f7b169db050f820c4374ef5e91b49fa74be5c","scripts":{"dev":"tsup src/index.ts --format esm --watch","lint":"biome check .","test":"vitest run","build":"tsup","lint:fix":"biome check --fix .","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build && npm run typecheck && npm run lint && npm test"},"_npmUser":{"name":"sakasegawa","email":"nyosegawa@gmail.com"},"repository":{"url":"git+https://github.com/nyosegawa/notion-cli.git","type":"git"},"_npmVersion":"11.11.0","description":"CLI for Notion — MCP + REST API support","directories":{},"_nodeVersion":"22.19.0","dependencies":{"open":"^11.0.0","commander":"^14.0.3","env-paths":"^4.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","vitest":"^4.1.0","lefthook":"^2.1.4","typescript":"^5.9.3","@types/node":"^25.5.0","@biomejs/biome":"^2.4.7"},"_npmOperationalInternal":{"tmp":"tmp/ncli_0.3.2_1773985853190_0.10458426001821985","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@sakasegawa/ncli","version":"0.3.3","description":"CLI for Notion — MCP + REST API support","type":"module","bin":{"ncli":"dist/index.js"},"scripts":{"build":"tsup","dev":"tsup src/index.ts --format esm --watch","test":"vitest run","test:watch":"vitest","lint":"biome check .","lint:fix":"biome check --fix .","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm run typecheck && npm run lint && npm test"},"engines":{"node":">=18"},"author":{"name":"Sakasegawa"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/nyosegawa/notion-cli.git"},"homepage":"https://github.com/nyosegawa/notion-cli#readme","bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","commander":"^14.0.3","env-paths":"^4.0.0","open":"^11.0.0"},"devDependencies":{"@biomejs/biome":"^2.4.7","@types/node":"^25.5.0","lefthook":"^2.1.4","tsup":"^8.5.1","typescript":"^5.9.3","vitest":"^4.1.0"},"gitHead":"a325ac7a6527860d081581215cf4662d59b41351","_id":"@sakasegawa/ncli@0.3.3","_nodeVersion":"22.19.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-7a2NybFvvmcrfbFHA0OZL0IRigVKzy1Yy/Kc9jIRGfG3yn9keaLde1ReGBaSVOsBOARtRN8QUWF0uU4TS3Ry6Q==","shasum":"66bfbcfae44b75e14f9543a83b7cde03823a9c78","tarball":"https://registry.npmjs.org/@sakasegawa/ncli/-/ncli-0.3.3.tgz","fileCount":6,"unpackedSize":67905,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCPhST+7hDjZef8DrP9ISQ/mlaQU5es+B+ApVSCnolqvQIgZOFYHTT+4dq/szb2RJHjGofYGO3mTatRpxyv/NR7BnE="}]},"_npmUser":{"name":"sakasegawa","email":"nyosegawa@gmail.com"},"directories":{},"maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ncli_0.3.3_1773992446202_0.7685476145611569"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-19T04:12:49.277Z","modified":"2026-03-20T07:40:46.420Z","0.2.0":"2026-03-19T04:12:49.608Z","0.3.0":"2026-03-20T05:40:21.318Z","0.3.1":"2026-03-20T05:46:15.373Z","0.3.2":"2026-03-20T05:50:53.335Z","0.3.3":"2026-03-20T07:40:46.324Z"},"bugs":{"url":"https://github.com/nyosegawa/notion-cli/issues"},"author":{"name":"Sakasegawa"},"license":"MIT","homepage":"https://github.com/nyosegawa/notion-cli#readme","keywords":["notion","ncli","cli","mcp","model-context-protocol","notion-api"],"repository":{"type":"git","url":"git+https://github.com/nyosegawa/notion-cli.git"},"description":"CLI for Notion — MCP + REST API support","maintainers":[{"name":"sakasegawa","email":"nyosegawa@gmail.com"}],"readme":"# ncli\n\n[![npm version](https://img.shields.io/npm/v/@sakasegawa/ncli)](https://www.npmjs.com/package/@sakasegawa/ncli)\n[![license](https://img.shields.io/npm/l/@sakasegawa/ncli)](./LICENSE)\n[![node](https://img.shields.io/node/v/@sakasegawa/ncli)](https://nodejs.org/)\n\n> **Disclaimer:** ncli is an unofficial, community-built tool. It is not developed, endorsed, or supported by Notion Labs, Inc.\n\n**[日本語](./README.ja.md)**\n\nCLI for Notion — MCP + REST API support. Read and write Notion from the terminal.\n\nDesigned for both humans and coding agents (Claude Code, Codex, etc.). All output is structured JSON with recovery hints on errors.\n\n## Features\n\n- Full Notion workspace access: search, pages, databases, views, comments, users, teams, meeting notes\n- REST API direct access: `ncli rest` for arbitrary Notion API calls\n- File upload: `ncli file upload` for attaching files to pages\n- Dual auth: OAuth (MCP commands) + integration token (`NOTION_API_KEY` env var or `ncli rest login`)\n- OAuth 2.0 + PKCE authentication (browser-based, zero-config)\n- Agent-first design: `--json` output, structured error hints (What + Why + Hint)\n- Escape hatch: `ncli api <tool> [json]` for direct MCP tool access\n- Single bundled ESM binary, Node.js >= 18\n\n## Install\n\n```bash\nnpm install -g @sakasegawa/ncli\n```\n\n## Quick Start\n\n```bash\n# Authenticate (opens browser, one-time)\nncli login\n\n# Search and fetch\nncli search \"project plan\"\nncli fetch <id>\n\n# Create and update pages\nncli page create --title \"New Page\" --parent <page-id>\nncli page update <id> --prop \"Status=Done\"\n\n# Database workflow\nncli db create --title \"Tasks\" --parent <page-id> \\\n  --prop \"Name:title\" --prop \"Status:select=Open,Done\"\nncli page create --parent collection://<ds-id> \\\n  --title \"Task 1\" --prop \"Status=Open\"\n```\n\n### REST API\n\n```bash\n# REST API setup (integration token)\nncli rest login\n\n# Call REST API directly\nncli rest GET /users/me\nncli rest GET /pages/<page-id>\n\n# Upload a file\nncli file upload ./image.png\n```\n\n## Commands\n\n| Command | Description |\n|---|---|\n| `ncli login` | Log in to Notion via OAuth |\n| `ncli logout` | Log out from Notion |\n| `ncli whoami` | Show current Notion user info |\n| `ncli search <query>` | Search pages, databases, and users across workspace |\n| `ncli fetch <url-or-id>` | Retrieve a page, database, or data source by URL or ID |\n| `ncli page create` | Create a page (with `--title`, `--parent`, `--prop`, `--body`) |\n| `ncli page update <id>` | Update page properties or content |\n| `ncli page move <id...> --to <parent>` | Move pages to a new parent |\n| `ncli page duplicate <id>` | Duplicate a page |\n| `ncli db create` | Create a database (with `--title`, `--parent`, `--prop`, or `--schema`) |\n| `ncli db update <id>` | Update database schema or metadata |\n| `ncli db query <view-url>` | Query a database view |\n| `ncli view create` | Create a database view (via `--data`) |\n| `ncli view update` | Update a database view (via `--data`) |\n| `ncli comment create <id>` | Add a comment to a page |\n| `ncli comment list <id>` | List comments on a page |\n| `ncli user list` | List and search workspace users |\n| `ncli team list` | List and search workspace teams |\n| `ncli meeting-notes query` | Query meeting notes with filters |\n| `ncli rest login` | Save REST API integration token |\n| `ncli rest logout` | Remove saved REST API token |\n| `ncli rest <METHOD> <path> [json]` | Call any Notion REST API endpoint directly |\n| `ncli file upload <file-path>` | Upload a file (returns file_upload_id for attaching to pages) |\n| `ncli api <tool> [json]` | Call any MCP tool directly (escape hatch) |\n\nRun `ncli <command> --help` for detailed usage, examples, and tips.\n\n## Common Workflows\n\n### Search, fetch, and update\n\n```bash\nncli search \"Project Plan\"               # Find pages/databases\nncli fetch <id>                           # Get content and metadata\nncli page update <id> --prop \"Status=Done\"  # Update properties\n```\n\n### Create a database and add entries\n\n```bash\n# Create a database under a page\nncli db create --title \"Tasks\" --parent <page-id> \\\n  --prop \"Name:title\" --prop \"Status:select=Open,Done\"\n\n# Response includes data_source_id (collection://...)\n# Create entries using that ID\nncli page create --parent collection://<ds-id> \\\n  --title \"Task 1\" --prop \"Status=Open\"\n\n# Create a view and query\nncli view create --data '{\"database_id\":\"<db-id>\",\"data_source_id\":\"collection://<ds-id>\",\"type\":\"table\",\"name\":\"All\"}'\nncli db query \"https://www.notion.so/<db-id>?v=<view-id>\"\n```\n\n### Pipe content from stdin\n\n```bash\necho \"# Meeting Notes\" | ncli page create --title \"Notes\" --parent <id> --body -\n```\n\n## Global Flags\n\n| Flag | Description |\n|---|---|\n| `--json` | Output as JSON (structured, parseable) |\n| `--raw` | Output raw MCP response (full server payload) |\n| `--verbose` | Verbose output |\n| `--no-color` | Disable colors |\n\n## Agent Usage\n\nThis CLI is optimized for coding agents. Key patterns:\n\n- **Use `--json`** for structured, parseable output\n- **Errors include recovery hints**: What happened, Why, and what to do next\n- **Workflow**: `search` → `fetch` (get IDs/schema) → `create`/`update`/`query`\n- **For databases**: always `ncli fetch <db-id>` first to get `data_source_id`\n\nError example:\n```\nError: notion-create-pages failed\n  Why: Could not find page with ID: abc123...\n  Hint: If adding to a database, use --data with \"parent\":{\"data_source_id\":\"<ds-id>\",...}.\n        Run \"ncli fetch <db-id>\" to get the data_source_id\n```\n\n## Escape Hatch\n\nFor advanced use or unsupported operations, call any MCP tool directly:\n\n```bash\nncli api notion-search '{\"query\":\"test\",\"page_size\":3}'\necho '{\"query\":\"test\"}' | ncli api notion-search\n```\n\n## Requirements\n\n- Node.js >= 18\n- A Notion account (OAuth authentication via browser)\n- Notion integration token (for REST API commands — get at https://www.notion.so/profile/integrations)\n\n## Legal\n\n- [Terms of Use](TERMS.md)\n- [Privacy Policy](PRIVACY.md)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}