{"_id":"@chainframe/noatery-mcp-server","_rev":"6-2212a13c681b213a3faf9587a4a3c958","name":"@chainframe/noatery-mcp-server","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.1":{"name":"@chainframe/noatery-mcp-server","version":"0.1.1","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"author":{"name":"Nitin Shukla"},"license":"MIT","_id":"@chainframe/noatery-mcp-server@0.1.1","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"bin":{"noatery-mcp-server":"dist/index.js"},"dist":{"shasum":"79b25f37aaf67f4e7b5b6fec2dfda0e946851e94","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.1.1.tgz","fileCount":78,"integrity":"sha512-PikufP12by6KpddYbne9DkNMs+joSN2awgPBhZH6LJKcQhMt6+EEkSl3k4HCYerd7iXQgfzvAwKcbaHhmkMSaw==","signatures":[{"sig":"MEUCIHEjgJ1Q4rHG8MS26Eu2gI3c10j2DRGrnAXHFIJbn7HbAiEAlYSlcsAYbO00/fYsaqFiAfGpKH6QAmcVf5fSBx30POI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"2b877272255d48692ab26f0013338cf2ad2f61ef","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsc && chmod +x dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"repository":{"url":"git+https://github.com/nitinshukla/noatery.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.7.0","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.24.2","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"^1.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.2","@types/node":"^22.13.14","@types/better-sqlite3":"^7.6.12"},"_npmOperationalInternal":{"tmp":"tmp/noatery-mcp-server_0.1.1_1776951574263_0.2347333525198998","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@chainframe/noatery-mcp-server","version":"0.1.2","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"author":{"name":"Nitin Shukla"},"license":"MIT","_id":"@chainframe/noatery-mcp-server@0.1.2","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"bin":{"noatery-mcp-server":"dist/index.js"},"dist":{"shasum":"607a36330c8f83d303d302c6de68a326857188dd","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.1.2.tgz","fileCount":78,"integrity":"sha512-dVRzhzGmEF5snWBuP1joAPEhqneUrvOc7zrcTos2Xa/DjGhYydaMzqRX5iL0/5dliUO7MRlvvCJfRNA2wv935w==","signatures":[{"sig":"MEUCIHRQ1dBjDFiebfd5dZnw2FMZYqXowPTMVkh1eo5hfY7rAiEAp7pp57feo9crvr4UOcWhmiZMkvC9cn1SvQHfRJdzT+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111948},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"6a966f5d6f3dd542168374cdc5052ffc7aa4cf5c","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsc && chmod +x dist/index.js","test:watch":"vitest"},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"repository":{"url":"git+https://github.com/nitinshukla/noatery.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.7.0","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.24.2","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"^1.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.2","@types/node":"^22.13.14","@types/better-sqlite3":"^7.6.12"},"_npmOperationalInternal":{"tmp":"tmp/noatery-mcp-server_0.1.2_1777479304240_0.6541761622818512","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@chainframe/noatery-mcp-server","version":"0.1.3","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"author":{"name":"Nitin Shukla"},"license":"MIT","_id":"@chainframe/noatery-mcp-server@0.1.3","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"bin":{"noatery-mcp-server":"dist/index.js"},"dist":{"shasum":"afa416b97767aaff875ed8c0dd3dc00e87dcbe5e","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.1.3.tgz","fileCount":78,"integrity":"sha512-dEdzOFuxUuWZFlzeVwiiIyzDHevMNInBiiTS8gfn5VQ32zCQFVp+zAeRNoIpYTROy1LHz/TUwvW3SIdvj65X4A==","signatures":[{"sig":"MEUCIQD0XFYZGq+Jk64xu4CAnDpPR2l2nlhhTVzPKXL8jbBsdgIgUsQdeRGa1w4IzCmmesrRUq8xiV1+C/ZrpkfKBuRyAqc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113639},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e43d183c193bf5c9d749dc4e023ebecb206ae8f2","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsc && chmod +x dist/index.js","prepack":"npm run build && node scripts/verify-package.mjs","test:watch":"vitest","verify:package":"node scripts/verify-package.mjs","verify:handshake":"node scripts/verify-handshake.mjs"},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"repository":{"url":"git+https://github.com/nitinshukla/noatery.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.7.0","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.24.2","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"^1.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.2","@types/node":"^22.13.14","@types/better-sqlite3":"^7.6.12"},"_npmOperationalInternal":{"tmp":"tmp/noatery-mcp-server_0.1.3_1779900224748_0.680135729753296","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@chainframe/noatery-mcp-server","version":"0.2.0","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"author":{"name":"Nitin Shukla"},"license":"MIT","_id":"@chainframe/noatery-mcp-server@0.2.0","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"bin":{"noatery-mcp-server":"dist/index.js"},"dist":{"shasum":"9e34eae94b36816414442151a33644a8830cb0dd","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.2.0.tgz","fileCount":94,"integrity":"sha512-zm1WqcKHUViAlN29ll1SDPTsQlvEg7DizuOnu5FR3Xc76s2WmrDf+O+kS7d8Z22J6EjFbfnk9Yc0/UFtj4YKWA==","signatures":[{"sig":"MEYCIQDiu8y6dHlmNLglq4lI5Yicls83Sb3yb41yIlozaowcBQIhAIQfO1n5+WnLTupiLGqd6mnOaUrbK4xUbYJSorjn6EGO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153624},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"3867e85c0a84621d928a075586d3a447c2a5648a","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsc && chmod +x dist/index.js","prepack":"npm run build && node scripts/verify-package.mjs","test:watch":"vitest","verify:package":"node scripts/verify-package.mjs","verify:handshake":"node scripts/verify-handshake.mjs"},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"repository":{"url":"git+https://github.com/nitinshukla/noatery.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.7.0","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.24.2","picocolors":"^1.1.1","@clack/prompts":"^1.5.1","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"^1.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.2","@types/node":"^22.13.14","@types/better-sqlite3":"^7.6.12"},"_npmOperationalInternal":{"tmp":"tmp/noatery-mcp-server_0.2.0_1781001460191_0.14914172812791415","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@chainframe/noatery-mcp-server","version":"0.3.0","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"author":{"name":"Nitin Shukla"},"license":"MIT","_id":"@chainframe/noatery-mcp-server@0.3.0","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"bin":{"noatery-mcp-server":"dist/index.js"},"dist":{"shasum":"b755a84333ddc5f2b9986d7b8a133e6243f5c750","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.3.0.tgz","fileCount":94,"integrity":"sha512-jP0H54bmCjrG+EixrtvaJaJViSF7/GJJJ4l+c/QsFwTX7oi2e4vL6Wes40+L5SNYG8Thz2mG0jLgNhBymBTn2g==","signatures":[{"sig":"MEUCIDt3YUT6PK0n3STukk315JP3xef85IdUWgehV1FdL02yAiEA7yO+8q/V4qnYc7A1I2gROL/xTUrhnleY1No22jwTfnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":162528},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"14eb04328e003f54ad0548f6376775c7c4f5391f","scripts":{"dev":"tsc --watch","lint":"tsc --noEmit","test":"vitest run","build":"tsc && chmod +x dist/index.js","prepack":"npm run build && node scripts/verify-package.mjs","test:watch":"vitest","verify:package":"node scripts/verify-package.mjs","verify:handshake":"node scripts/verify-handshake.mjs"},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"repository":{"url":"git+https://github.com/nitinshukla/noatery.git","type":"git","directory":"mcp-server"},"_npmVersion":"10.7.0","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","directories":{},"_nodeVersion":"20.15.0","dependencies":{"zod":"^3.24.2","picocolors":"^1.1.1","@clack/prompts":"^1.5.1","better-sqlite3":"^11.9.1","@modelcontextprotocol/sdk":"^1.10.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^3.1.1","typescript":"^5.8.2","@types/node":"^22.13.14","@types/better-sqlite3":"^7.6.12"},"_npmOperationalInternal":{"tmp":"tmp/noatery-mcp-server_0.3.0_1781070416440_0.8519338561453698","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@chainframe/noatery-mcp-server","version":"0.3.1","description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","type":"module","bin":{"noatery-mcp-server":"dist/index.js"},"main":"./dist/index.js","repository":{"type":"git","url":"git+https://github.com/nitinshukla/noatery.git","directory":"mcp-server"},"homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","scripts":{"build":"tsc && chmod +x dist/index.js","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","bench":"vitest run --config vitest.bench.config.ts","lint":"tsc --noEmit","verify:package":"node scripts/verify-package.mjs","verify:handshake":"node scripts/verify-handshake.mjs","prepack":"npm run build && node scripts/verify-package.mjs"},"dependencies":{"@clack/prompts":"^1.5.1","@modelcontextprotocol/sdk":"^1.10.1","better-sqlite3":"^11.9.1","picocolors":"^1.1.1","zod":"^3.24.2"},"devDependencies":{"@types/better-sqlite3":"^7.6.12","@types/node":"^22.13.14","typescript":"^5.8.2","vitest":"^3.1.1"},"engines":{"node":">=20.0.0"},"keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"license":"MIT","author":{"name":"Nitin Shukla"},"publishConfig":{"access":"public"},"_id":"@chainframe/noatery-mcp-server@0.3.1","gitHead":"9d8f065c66d8108384aacca464a638f21418ea46","types":"./dist/index.d.ts","bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"_nodeVersion":"20.15.0","_npmVersion":"10.7.0","dist":{"integrity":"sha512-QkihoWhTXtQhMvVSZpm1ANiGVykc7SJN2J+u7fYMBukJlVp21Dv0Hs6uifJo8leVKhOGoy9BXvNvig/KKaTWSg==","shasum":"bc0579cba7c7d399a442eb276daa2b1590ebe90a","tarball":"https://registry.npmjs.org/@chainframe/noatery-mcp-server/-/noatery-mcp-server-0.3.1.tgz","fileCount":94,"unpackedSize":177472,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD9LnXTSvhE05HUxpYekl7GtGH6qsdApM7kC+L4GEgM1AIhANU5yi3xQWTsapT8Gc272tN5fkvw49NiV2miPw3QUp+v"}]},"_npmUser":{"name":"nitinpshukla","email":"nitin@chainframe.com"},"directories":{},"maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/noatery-mcp-server_0.3.1_1782223034795_0.6364654369831011"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-23T13:39:34.144Z","modified":"2026-06-23T13:57:15.081Z","0.1.1":"2026-04-23T13:39:34.428Z","0.1.2":"2026-04-29T16:15:04.384Z","0.1.3":"2026-05-27T16:43:44.890Z","0.2.0":"2026-06-09T10:37:40.339Z","0.3.0":"2026-06-10T05:46:56.617Z","0.3.1":"2026-06-23T13:57:14.960Z"},"bugs":{"url":"https://github.com/nitinshukla/noatery/issues"},"author":{"name":"Nitin Shukla"},"license":"MIT","homepage":"https://www.npmjs.com/package/@chainframe/noatery-mcp-server","keywords":["mcp","noatery","ai","agent","productivity","logging","model-context-protocol"],"repository":{"type":"git","url":"git+https://github.com/nitinshukla/noatery.git","directory":"mcp-server"},"description":"MCP server for Noatery — lets AI agents read and write accomplishment entries.","maintainers":[{"name":"nitinpshukla","email":"nitin@chainframe.com"}],"readme":"# @chainframe/noatery-mcp-server\n\nMCP server for [Noatery](https://github.com/nitinshukla/donelog) — lets AI agents read and write accomplishment log entries without invoking the UI.\n\n---\n\n## What it does\n\nNoatery is a local-first macOS menu-bar app for logging what you shipped each day. This MCP server exposes Noatery's SQLite database over the [Model Context Protocol](https://modelcontextprotocol.io), so AI agents (Cursor, Claude Code, Codex, and others) can create, search, update, and delete log entries on your behalf.\n\nAll agent-created entries are marked with `origin: \"mcp\"` in the database and are expected to include `#agent` (plus source and model tags) in their text so you can tell them apart in the Noatery UI.\n\n---\n\n## Prerequisites\n\n- **Noatery** must be installed and opened at least once (so it can create and migrate the database).\n- **Node.js ≥ 20**.\n- macOS (Noatery is macOS-only).\n\n---\n\n## Quick start (recommended)\n\nOpen Noatery → Settings → AI agents → \"Connect your agents\". The app detects your installed clients and configures each one for you (atomic writes, diff preview, conflict detection). After that, your agent can call `create_entry`, `search_entries`, etc. with no manual config.\n\nFor first-run users the same flow surfaces at the end of the desktop tour as \"Connect AI agents\".\n\n---\n\n## Advanced: manual setup\n\nPrefer to configure your agents by hand? Use either of the install paths below.\n\n**One-line interactive install:**\n\n```bash\nnpx @chainframe/noatery-mcp-server install\n```\n\nThis launches an interactive wizard that detects the AI tools you have installed (Claude Code, Cursor, Claude Desktop, Codex, Windsurf, VS Code Copilot, Cline, Continue) and writes the right config in the right place. Existing configs are merged, and a `.bak` of any file we touch is saved next to it.\n\n**Global install (faster server startup, manual config):**\n\n```bash\nnpm install -g @chainframe/noatery-mcp-server\n```\n\n**Manual / scripted install via npx (no wizard):**\n\n```bash\nnpx -y --package @chainframe/noatery-mcp-server noatery-mcp-server\n```\n\n> When AI clients launch this binary over stdio it runs as the MCP server. When you launch it from a terminal it runs the installer instead. Pass `install` explicitly (or `--help`) to be safe in shell scripts.\n\n---\n\n## Configuration\n\nThe installer above writes these for you. Skip ahead to *Available tools* unless you'd rather do it by hand. Replace `npx -y --package @chainframe/noatery-mcp-server noatery-mcp-server` with `noatery-mcp-server` if you installed globally.\n\n### Cursor\n\nCreate or edit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (per-project):\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  }\n}\n```\n\n### Claude Code\n\nCreate `.mcp.json` in your project root, or add to `~/.claude.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  }\n}\n```\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  }\n}\n```\n\n### Codex\n\nEdit `~/.codex/config.toml`:\n\n```toml\n[[mcp_servers]]\nname = \"noatery\"\ncommand = \"npx\"\nargs = [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n```\n\n### Windsurf\n\nEdit `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  }\n}\n```\n\n### VS Code Copilot\n\nCreate `.vscode/mcp.json` in your workspace:\n\n```json\n{\n  \"servers\": {\n    \"noatery\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  }\n}\n```\n\n### Cline\n\nEdit `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"],\n      \"disabled\": false,\n      \"autoApprove\": []\n    }\n  }\n}\n```\n\n### Continue\n\nEdit `~/.continue/config.json`:\n\n```json\n{\n  \"mcpServers\": [\n    {\n      \"name\": \"noatery\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"]\n    }\n  ]\n}\n```\n\n### Aider\n\nAdd to `.aider.conf.yml` in your project root:\n\n```yaml\nmcp-servers:\n  noatery:\n    command: npx\n    args:\n      - \"-y\"\n      - \"--package\"\n      - \"@chainframe/noatery-mcp-server\"\n      - \"noatery-mcp-server\"\n```\n\n---\n\n## Custom database path\n\nBy default, the server auto-discovers the Noatery database at:\n\n- `~/Library/Containers/com.nitinshukla.donelog/Data/Library/Application Support/com.nitinshukla.donelog/donelog.db` (Mac App Store / TestFlight)\n- `~/Library/Application Support/Noatery/donelog.db` (direct install)\n- `~/Library/Application Support/com.nitinshukla.donelog/donelog.db` (dev build)\n\nOverride with the `DONELOG_DB_PATH` environment variable:\n\n```json\n{\n  \"mcpServers\": {\n    \"noatery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"--package\", \"@chainframe/noatery-mcp-server\", \"noatery-mcp-server\"],\n      \"env\": {\n        \"DONELOG_DB_PATH\": \"/path/to/custom/donelog.db\"\n      }\n    }\n  }\n}\n```\n\n---\n\n## Available tools\n\n| Tool | Description | Key parameters |\n|---|---|---|\n| `create_entry` | Log a completed task or accomplishment | `text` (required), `date` (YYYY-MM-DD), `time` (HH:MM), `source`, `model` |\n| `list_entries` | List entries by date or date range | `date`, `start_date`, `end_date`, `tag`, `origin`, `limit` |\n| `search_entries` | Full-text search across all entries | `query` (required), `start_date`, `end_date`, `tag`, `origin`, `limit` |\n| `update_entry` | Update the text of an existing entry | `id` (required), `text` (required) |\n| `delete_entry` | Delete an entry by ID (irreversible) | `id` (required) |\n| `list_tags` | List all tags with counts and last-used dates | _(no parameters)_ |\n| `export_entries` | Export entries as markdown or JSON | `start_date` (required), `end_date` (required), `format`, `tag`, `origin`, `group_by` |\n\n---\n\n## Available resources\n\n| URI | Description |\n|---|---|\n| `noatery://schema` | Static JSON description of the Noatery data model and tagging conventions |\n| `noatery://tags` | Current tag list with entry counts and last-used dates |\n| `noatery://today` | Today's entries (same as `list_entries` with no parameters) |\n\n---\n\n## Tagging conventions\n\nWhen creating entries, AI agents should include the following tags in the `text` field:\n\n| Tag | Purpose | Example |\n|---|---|---|\n| `#agent` | **Required.** Marks the entry as AI-generated | `#agent` |\n| `#<source>` | Identifies the AI tool that created the entry | `#cursor`, `#claude`, `#codex`, `#windsurf` |\n| `#<model>` | Identifies the model used (dots → underscores) | `#sonnet_4_6`, `#gpt_5_4`, `#o3` |\n\n**Example entry text:**\n\n```\nRefactored the auth middleware to use JWT validation #agent #cursor #sonnet_4_6 #backend #auth\n```\n\nUse `list_tags` first to discover the user's existing tag vocabulary and reuse relevant tags.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}