{"_id":"@davindermahal/ai-intake-mcp","_rev":"6-9faabbd4443a5a5d62bf4835c3339e2c","name":"@davindermahal/ai-intake-mcp","dist-tags":{"latest":"0.3.2"},"versions":{"0.1.0":{"name":"@davindermahal/ai-intake-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"author":{"name":"Davinder S. Mahal"},"license":"MIT","_id":"@davindermahal/ai-intake-mcp@0.1.0","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"bin":{"ai-intake-mcp":"dist/index.js"},"dist":{"shasum":"ae75b9b9bd631e45b96f33bc4c7dd475dca41a3f","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.1.0.tgz","fileCount":95,"integrity":"sha512-z08PVpE9Vrxw5rIhchJX8TMXnjMu+gfuonOl+LtlMPBecYgqwvAuCVmVuzuj/5RG1AluKnURVU6BmRrmx8E2rw==","signatures":[{"sig":"MEQCIEbUZzCmT5I5HtBwFdrrzLxJLA8PKmfMgUK7zlBxDhlDAiBQvB239fv41kFVwV3PnFivJ18GcAtctye4kOvpK9f1QA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294741},"type":"module","engines":{"node":">=24"},"gitHead":"1ffe81b20b0abceb5ac0714aefb9c9a94631aeb3","scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src test scripts","test":"vitest run","build":"tsc -p tsconfig.json","prepare":"npm run build","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","health-check":"node --import tsx scripts/health-check.ts","automation-poll":"node --import tsx scripts/automation-poll.ts","register-project":"node --import tsx scripts/register-project.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts"},"_npmUser":{"name":"davindermahal","email":"davinder@mahal.org"},"repository":{"url":"git+https://github.com/davindermahal/ai-intake-mcp.git","type":"git"},"_npmVersion":"9.2.0","description":"On-demand ticket planning via MCP, no cron / no per-project install.","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.24.1","keytar":"^7.9.0","better-sqlite3":"^11.10.0","@modelcontextprotocol/sdk":"^1.19.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.19.0","vitest":"^3.0.4","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/node":"^24.0.0","typescript-eslint":"^8.21.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/ai-intake-mcp_0.1.0_1788649727229_0.4084538040359522","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@davindermahal/ai-intake-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"author":{"name":"Davinder S. Mahal"},"license":"MIT","_id":"@davindermahal/ai-intake-mcp@0.1.1","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"bin":{"ai-intake-mcp":"dist/index.js"},"dist":{"shasum":"55918e804ef8c3244956ee74c0079b6fd2db672b","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.1.1.tgz","fileCount":95,"integrity":"sha512-kXt3MfvcT7E5/LoHTEyKFHmTuRpItzxpqBi74tnFMjTMc3bx2WYXApByd0SfkQssLI60MsykneTF5a2A8oEn+Q==","signatures":[{"sig":"MEUCIDYiC6XX7BP4ufkIGqKXNC6WYs/aCXU03Jo+21I2EthSAiEAhtHaTvFsrfPyty/thkQVleI5rzq00wSWwOfugRYMrfY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":294741},"type":"module","engines":{"node":">=24"},"gitHead":"2b8c6b384ba47aad9cf3882ff675917ce8002d14","scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src test scripts","test":"vitest run","build":"tsc -p tsconfig.json","prepare":"npm run build","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","health-check":"node --import tsx scripts/health-check.ts","automation-poll":"node --import tsx scripts/automation-poll.ts","register-project":"node --import tsx scripts/register-project.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts"},"_npmUser":{"name":"davindermahal","email":"davinder@mahal.org"},"repository":{"url":"git+https://github.com/davindermahal/ai-intake-mcp.git","type":"git"},"_npmVersion":"9.2.0","description":"On-demand ticket planning via MCP, no cron / no per-project install.","directories":{},"_nodeVersion":"18.19.1","dependencies":{"zod":"^3.24.1","keytar":"^7.9.0","better-sqlite3":"^11.10.0","@modelcontextprotocol/sdk":"^1.19.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.19.0","vitest":"^3.0.4","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/node":"^24.0.0","typescript-eslint":"^8.21.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/ai-intake-mcp_0.1.1_1788650575518_0.5272909556471115","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@davindermahal/ai-intake-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"author":{"name":"Davinder S. Mahal"},"license":"MIT","_id":"@davindermahal/ai-intake-mcp@0.2.0","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"bin":{"ai-intake-mcp":"dist/index.js"},"dist":{"shasum":"fe4013626d518c0200327c355a24ae08e2a60db8","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.2.0.tgz","fileCount":107,"integrity":"sha512-fT35GwmRLUnipX6SWB1IB6+dJO5/6Y36OeSs/8T1PxFZXGuAndoBYaN16k8r4xB+7zyD9+Vnw3PDG1w2tWaK/g==","signatures":[{"sig":"MEUCIQC6MrFmxPQpfB91I6x1YdyC/Ipwly98bBTUWCTEk1pu6gIgB31ozNTmRxeRkVmz99O0N1Qi0tyPFvIx8LrXIhcjqz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@davindermahal%2fai-intake-mcp@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":330708},"type":"module","engines":{"node":">=24"},"gitHead":"5e93dfbacac71b7f021542611dd953eaff86d44b","scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src test scripts","test":"vitest run","build":"tsc -p tsconfig.json","prepare":"npm run build","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","health-check":"node --import tsx scripts/health-check.ts","automation-poll":"node --import tsx scripts/automation-poll.ts","register-project":"node --import tsx scripts/register-project.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d91b48ba-4d0a-4924-8648-e863a13f3570"}},"repository":{"url":"git+https://github.com/davindermahal/ai-intake-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"On-demand ticket planning via MCP, no cron / no per-project install.","directories":{},"_nodeVersion":"24.20.0","allowScripts":{"keytar":true,"better-sqlite3":true},"dependencies":{"zod":"^4.2.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.19.0","vitest":"^3.0.4","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/node":"^24.0.0","typescript-eslint":"^8.21.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/client":"^2.0.0"},"optionalDependencies":{"keytar":"^7.9.0","better-sqlite3":"^11.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-intake-mcp_0.2.0_1788894058221_0.32951507775051714","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@davindermahal/ai-intake-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"author":{"name":"Davinder S. Mahal"},"license":"MIT","_id":"@davindermahal/ai-intake-mcp@0.3.0","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"bin":{"ai-intake-mcp":"dist/index.js"},"dist":{"shasum":"d57f84d46842ba632e958b2bbb16ce59eceaf1cd","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.3.0.tgz","fileCount":110,"integrity":"sha512-eBO3nXSA8dYGhc0TVtX7iGEQgJz8jgrfNmSfRBEdFsR2VbeeV+M92WdcOF5+SoOCCxsR6XridNqh+El+DnQsaA==","signatures":[{"sig":"MEUCIH0GciOrIS/TSDE3pi8upWHYBVSKF6U29cKIwQCtmygeAiEA/9uNdBNkPT7Yz/LU6n/BpUhLJmQCcYw20nIfVt2Vhsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@davindermahal%2fai-intake-mcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":339597},"type":"module","engines":{"node":">=24"},"gitHead":"ac80b3c25bfb1fa0f038a1158fad89acce532ae9","scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src test scripts","test":"vitest run","build":"tsc -p tsconfig.json","prepare":"npm run build","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","health-check":"node --import tsx scripts/health-check.ts","automation-poll":"node --import tsx scripts/automation-poll.ts","register-project":"node --import tsx scripts/register-project.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d91b48ba-4d0a-4924-8648-e863a13f3570"}},"repository":{"url":"git+https://github.com/davindermahal/ai-intake-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"On-demand ticket planning via MCP, no cron / no per-project install.","directories":{},"_nodeVersion":"24.20.0","allowScripts":{"keytar":true,"better-sqlite3":true},"dependencies":{"zod":"^4.2.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","@davindermahal/confluence-client":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.19.0","vitest":"^3.0.4","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/node":"^24.0.0","typescript-eslint":"^8.21.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/client":"^2.0.0"},"optionalDependencies":{"keytar":"^7.9.0","better-sqlite3":"^11.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-intake-mcp_0.3.0_1788930779465_0.962148334796664","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@davindermahal/ai-intake-mcp","version":"0.3.1","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"author":{"name":"Davinder S. Mahal"},"license":"MIT","_id":"@davindermahal/ai-intake-mcp@0.3.1","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"bin":{"ai-intake-mcp":"dist/index.js"},"dist":{"shasum":"09a87b6865423aa1e424c809a4a7f2befb905c1c","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.3.1.tgz","fileCount":111,"integrity":"sha512-1Gk2Mrl+ewSRrjSpLkjtVjqIO2VJJ3WA94WJPs5WL2/XxISsNadvZyM237BCENmD6plsmaASVY/MroyLUD6IPA==","signatures":[{"sig":"MEQCIHMDDeAcZbWhUAyMsi51tzZvsAk9e5Zzfd3diAE2TsFmAiBt6J2zRkaVsyfq/+3m2rLGuK5OCmF3On7JKUEPtd6mfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@davindermahal%2fai-intake-mcp@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":342607},"type":"module","engines":{"node":">=24"},"gitHead":"221d5c434ad02218ba09b7ba566d4bafb416487f","scripts":{"dev":"tsc -p tsconfig.json --watch","lint":"eslint src test scripts","test":"vitest run","build":"tsc -p tsconfig.json","prepare":"npm run build","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","health-check":"node --import tsx scripts/health-check.ts","automation-poll":"node --import tsx scripts/automation-poll.ts","register-project":"node --import tsx scripts/register-project.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d91b48ba-4d0a-4924-8648-e863a13f3570"}},"repository":{"url":"git+https://github.com/davindermahal/ai-intake-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"On-demand ticket planning via MCP, no cron / no per-project install.","directories":{},"_nodeVersion":"24.20.0","allowScripts":{"keytar":true,"better-sqlite3":true},"dependencies":{"zod":"^4.2.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","@davindermahal/confluence-client":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","eslint":"^9.19.0","vitest":"^3.0.4","@eslint/js":"^9.19.0","typescript":"^5.7.3","@types/node":"^24.0.0","typescript-eslint":"^8.21.0","@types/better-sqlite3":"^7.6.13","@modelcontextprotocol/client":"^2.0.0"},"optionalDependencies":{"keytar":"^7.9.0","better-sqlite3":"^11.10.0"},"_npmOperationalInternal":{"tmp":"tmp/ai-intake-mcp_0.3.1_1788966880533_0.47862783665197495","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@davindermahal/ai-intake-mcp","version":"0.3.2","description":"On-demand ticket planning via MCP, no cron / no per-project install.","license":"MIT","author":{"name":"Davinder S. Mahal"},"homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","repository":{"type":"git","url":"git+https://github.com/davindermahal/ai-intake-mcp.git"},"bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"type":"module","engines":{"node":">=24"},"bin":{"ai-intake-mcp":"dist/index.js"},"publishConfig":{"access":"public"},"scripts":{"prepare":"npm run build","build":"tsc -p tsconfig.json","dev":"tsc -p tsconfig.json --watch","test":"vitest run","lint":"eslint src test scripts","health-check":"node --import tsx scripts/health-check.ts","smoke:jira":"node --import tsx scripts/jira-smoke-check.ts","smoke:jira:create-issue":"node --import tsx scripts/jira-smoke-check-create-issue.ts","register-project":"node --import tsx scripts/register-project.ts","automation-poll":"node --import tsx scripts/automation-poll.ts"},"dependencies":{"@davindermahal/confluence-client":"^0.1.0","@modelcontextprotocol/node":"^2.0.0","@modelcontextprotocol/server":"^2.0.0","zod":"^4.2.0"},"optionalDependencies":{"better-sqlite3":"^11.10.0","keytar":"^7.9.0"},"allowScripts":{"better-sqlite3":true,"keytar":true},"devDependencies":{"@eslint/js":"^9.19.0","@modelcontextprotocol/client":"^2.0.0","@types/better-sqlite3":"^7.6.13","@types/node":"^24.0.0","eslint":"^9.19.0","tsx":"^4.19.2","typescript":"^5.7.3","typescript-eslint":"^8.21.0","vitest":"^3.0.4"},"gitHead":"061fce9108de851713c7c581ddc11b130855f86a","_id":"@davindermahal/ai-intake-mcp@0.3.2","_nodeVersion":"24.20.0","_npmVersion":"12.0.2","dist":{"integrity":"sha512-4IGqayOTmtCUDLfnTkiHmOO5bblK1Dhgm7U5Oc7e8ZzSAfB6Dx3LuTqOAs6H/dWWkIwMQafQc3PM9v6tLNihZw==","shasum":"93ef861b81fdffa953fa46881312942135462543","tarball":"https://registry.npmjs.org/@davindermahal/ai-intake-mcp/-/ai-intake-mcp-0.3.2.tgz","fileCount":111,"unpackedSize":343453,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@davindermahal%2fai-intake-mcp@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCavpXEpkRXPiLz3wUq5rHgHI7LIRpUkw8Dh7fDkikhPAIgMibQBBHdWfaKIx6gTUjbpU7Yad64g8C5D2xNJV4keTA="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d91b48ba-4d0a-4924-8648-e863a13f3570"}},"directories":{},"maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ai-intake-mcp_0.3.2_1788968736035_0.9316239951309473"},"_hasShrinkwrap":false}},"time":{"created":"2026-09-05T23:08:47.070Z","modified":"2026-09-09T15:45:36.501Z","0.1.0":"2026-09-05T23:08:47.406Z","0.1.1":"2026-09-05T23:22:55.651Z","0.2.0":"2026-09-08T19:00:58.355Z","0.3.0":"2026-09-09T05:12:59.621Z","0.3.1":"2026-09-09T15:14:40.686Z","0.3.2":"2026-09-09T15:45:36.186Z"},"bugs":{"url":"https://github.com/davindermahal/ai-intake-mcp/issues"},"author":{"name":"Davinder S. Mahal"},"license":"MIT","homepage":"https://github.com/davindermahal/ai-intake-mcp#readme","keywords":["mcp","model-context-protocol","jira","ticket","ai-agent","claude"],"repository":{"type":"git","url":"git+https://github.com/davindermahal/ai-intake-mcp.git"},"description":"On-demand ticket planning via MCP, no cron / no per-project install.","maintainers":[{"name":"davindermahal","email":"davinder@mahal.org"}],"readme":"# ai-intake-mcp\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nOn-demand ticket planning **and implementation** via an MCP server: a developer, working inside a\nproject repo with an MCP-capable agent CLI already open, names a ticket and gets the same\nplan-then-build pipeline a tracker automation would otherwise run — no cron, no per-project install.\n\n**Status: experimental, feature-complete through implementation, validated end to end against a\nreal Jira board.** Interfaces, tool names, and configuration formats may still change without\nnotice.\n\n## What it does\n\nA developer runs a command like `/plan_ticket DAV-4`, reviews the plan it writes, approves it, then\nruns `/implement_ticket DAV-4` — the same plan-then-build pipeline a tracker automation would\notherwise run, entirely on demand, no cron, nothing installed in the project beyond the plan output\nand two small config files.\n\n**See [`docs/usage.md`](docs/usage.md) for the full walkthrough** — what each step actually does,\nwhat you'll see, and what to do at each point. It's written for using the tool, not for the\ninternals.\n\n## Confluence references\n\nPlanning pulls in Confluence content two ways, both cited in the resulting plan: a curated guide\ncatalog (`list_guides`/`fetch_guide`, e.g. \"following the Symfony 4→5 Upgrade guide\"), and any\nConfluence page linked explicitly in the ticket's description/comments or named mid-conversation\n(`fetch_confluence_pages`). Headless workers get the same fetched content via a pre-written file,\nnever live MCP tool access. See\n[`.ai/plans/completed/confluence-references-in-planning.md`](.ai/plans/completed/confluence-references-in-planning.md).\n\n## Headless automation\n\nThe same pipeline can also run unattended, on a cron, across one or more registered repos — no\ndeveloper present. Fully implemented and validated end to end against a real Jira board, including a\n24.5h unattended cron soak (sign-off: **GO**, see\n[`.ai/plans/completed/headless-automation-qa.md`](.ai/plans/completed/headless-automation-qa.md)).\n**See [`docs/headless-automation.md`](docs/headless-automation.md)** for the step-by-step path to try\nit yourself (dry-run first, then one manual run, then cron) — still start against a throwaway\nrepo/board, the same way the validation above did, before pointing it at anything real.\n\n## Design\n\nSee [`.ai/plans/active/ai-intake-mcp-on-demand-planning.md`](.ai/plans/active/ai-intake-mcp-on-demand-planning.md)\n(planning phase), [`.ai/plans/active/ai-intake-mcp-implementation-phase.md`](.ai/plans/active/ai-intake-mcp-implementation-phase.md)\n(implementation phase), and [`.ai/plans/completed/headless-automation.md`](.ai/plans/completed/headless-automation.md)\n(headless automation) for the full design records, and [`.ai/README.md`](.ai/README.md) for how\nthis project's `.ai/` directory is organized.\n\n## Setup\n\n### Option A — install directly, no cloning\n\nRegister the server via `npx` — no local clone or `dist/` to keep up to date by hand. Requires Node\n>=24 on the `PATH` of whatever spawns the command below (a version manager like `nvm` is fine, as long\nas it resolves before the client starts the server).\n\n**Claude Code:**\n\n```bash\nclaude mcp add --scope user ai-intake -- npx -y @davindermahal/ai-intake-mcp\n```\n\n**Gemini CLI:**\n\n```bash\ngemini mcp add --scope user ai-intake npx -y @davindermahal/ai-intake-mcp\n```\n\nOr add it directly to an MCP settings file (Claude Desktop's `claude_desktop_config.json`, or any\nother client that reads the same `mcpServers` shape):\n\n```json\n{\n  \"mcpServers\": {\n    \"ai-intake\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@davindermahal/ai-intake-mcp\"]\n    }\n  }\n}\n```\n\nWant the latest unreleased code straight from `main` instead of the last published npm version?\nSwap `@davindermahal/ai-intake-mcp` for `github:davindermahal/ai-intake-mcp` in any of the commands\nabove — `npx` fetches the repo and builds it on first launch instead of installing from the registry.\n\nYou still need Jira credentials at `~/.config/ai-intake-mcp/.env` — this path skips `install.sh`, so\ncreate it by hand:\n\n```bash\nmkdir -p ~/.config/ai-intake-mcp\ncat > ~/.config/ai-intake-mcp/.env <<'EOF'\nJIRA_SITE_URL=https://your-site.atlassian.net\nJIRA_INTAKE_EMAIL=you@your-domain.com\nJIRA_INTAKE_API_TOKEN=your-api-token-here\nEOF\nchmod 600 ~/.config/ai-intake-mcp/.env\n```\n\n(No API token available? Leave `JIRA_INTAKE_API_TOKEN` unset instead — see\n[`docs/setup.md`](docs/setup.md#3-set-up-jira-credentials) for the browser-cookie fallback.) Then\nverify with `npm run health-check` from any clone, or by asking your agent to call the `health_check`\nMCP tool directly.\n\n`npx` caches its first resolution and reuses it on later launches; to pick up a real update later,\nclear that cache (`rm -rf ~/.npm/_npx`) so the next launch re-fetches (and, for the `github:` form,\nrebuilds).\n\n### Option B — clone and install\n\n```bash\ngit clone https://github.com/davindermahal/ai-intake-mcp ~/dev/ai-intake-mcp\ncd ~/dev/ai-intake-mcp && ./install.sh\n```\n\nSee [`docs/setup.md`](docs/setup.md) for what that does and does not automate (Jira credentials\nstill need to be filled in by hand), and for the full walk-through either way.\n\n## Changelog\n\nSee [`CHANGELOG.md`](CHANGELOG.md) for release history.\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}