{"_id":"inkpal","_rev":"39-fa1fd2fb90c359b3331e81eb8f880bc5","name":"inkpal","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"inkpal","version":"1.0.1","keywords":["flutter","dart","ai","mcp","claude","cursor","windsurf","code-generation","inkpal"],"author":{"name":"InkPal","email":"contact@inkpal.ai"},"license":"MIT","_id":"inkpal@1.0.1","maintainers":[{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"}],"homepage":"https://inkpal.ai","bugs":{"url":"https://github.com/InkPalAI/inkpal_npm/issues"},"bin":{"inkpal":"dist/cli.js","inkpal-mcp":"dist/server.js"},"dist":{"shasum":"d6b72f603bd62702e68819936f2871c11d41600f","tarball":"https://registry.npmjs.org/inkpal/-/inkpal-1.0.1.tgz","fileCount":19,"integrity":"sha512-rzhtAhd3Fu1AxUeVG1AJXonkipGOB2UECL6kIENQ/HLwkYeSXAmRrRWW1LZrKw2AmUE30A8dEbcwlP5DjFZF7Q==","signatures":[{"sig":"MEYCIQDcmupYOY/snCDJ5PuGMAEKg04p0TeMNNySe1QSJOeXiAIhAIBuMf5/BX6B/EX4/aC2+qOzfeVh7zkq7CSa36xHIMNf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/inkpal@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":416170},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"321fb1af868e6b33e6708677f4f8b663f1e780d6","scripts":{"test":"npm run build && vitest run","build":"tsc --sourceMap false --declaration false && cp src/tool-schemas-bundled.json dist/","moat-guard":"node scripts/moat-guard.mjs","test:watch":"vitest","build:binary":"bash build.sh","prepublishOnly":"npm run build && npm run moat-guard"},"_npmUser":{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"},"repository":{"url":"git+https://github.com/InkPalAI/inkpal_npm.git","type":"git"},"_npmVersion":"10.8.2","description":"InkPal — AI-powered Flutter development tools for Claude Code, Cursor & Windsurf","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pngjs":"^7.0.0","pixelmatch":"^6.0.0","@types/pngjs":"^6.0.5","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/inkpal_1.0.1_1778943662209_0.5053415638301288","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"inkpal","version":"1.0.2","keywords":["flutter","dart","ai","mcp","claude","cursor","windsurf","code-generation","inkpal"],"author":{"name":"InkPal","email":"contact@inkpal.ai"},"license":"MIT","_id":"inkpal@1.0.2","maintainers":[{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"}],"homepage":"https://inkpal.ai","bugs":{"url":"https://github.com/InkPalAI/inkpal_npm/issues"},"bin":{"inkpal":"dist/cli.js","inkpal-mcp":"dist/server.js"},"dist":{"shasum":"9e257a7f9421b1be8c5f318b39ae472d7b8d3693","tarball":"https://registry.npmjs.org/inkpal/-/inkpal-1.0.2.tgz","fileCount":19,"integrity":"sha512-HHuF60+vHxAbs7Np6fID9JWOEv/cqPd/hjwp5ZM77tD6rGYDTmNS0IYim7+fAg+kmyDDKHNdb7r5YairXWesmw==","signatures":[{"sig":"MEUCIADjWtLOW3rPNXckba6G/QeDNBTq7Ud5eDXx8A/PY+FMAiEA+BdbXSP098ILOcSPuEVauaOJGuxpmT15GvQyWjtvVKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/inkpal@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":341094},"type":"module","engines":{"node":">=18.0.0"},"gitHead":"ad1f103f1b6c3e9ca545a6ddc9e521d3dc3892db","scripts":{"test":"npm run build && vitest run","build":"tsc --sourceMap false --declaration false && cp src/tool-schemas-bundled.json dist/","test:watch":"vitest","prepublishOnly":"npm run build && npm run prepublish-check","prepublish-check":"node scripts/prepublish-check.mjs"},"_npmUser":{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"},"repository":{"url":"git+https://github.com/InkPalAI/inkpal_npm.git","type":"git"},"_npmVersion":"10.8.2","description":"InkPal — Flutter MCP server for Claude Code, Cursor, Windsurf, Codex, and Copilot.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pngjs":"^7.0.0","pixelmatch":"^6.0.0","@types/pngjs":"^6.0.5","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.6","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/inkpal_1.0.2_1778945753440_0.8524897008608108","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"inkpal","version":"1.0.3","description":"InkPal — Flutter MCP server for Claude Code, Cursor, Windsurf, Codex, and Copilot.","type":"module","bin":{"inkpal-mcp":"dist/server.js","inkpal":"dist/cli.js"},"scripts":{"build":"tsc --sourceMap false --declaration false && cp src/tool-schemas-bundled.json dist/","test":"npm run build && vitest run","test:watch":"vitest","prepublish-check":"node scripts/prepublish-check.mjs","prepublishOnly":"npm run build && npm run prepublish-check"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.0","@types/pngjs":"^6.0.5","pixelmatch":"^6.0.0","pngjs":"^7.0.0"},"devDependencies":{"@types/node":"^22.0.0","typescript":"^5.7.0","vitest":"^4.1.6"},"engines":{"node":">=18.0.0"},"license":"MIT","author":{"name":"InkPal","email":"contact@inkpal.ai"},"homepage":"https://inkpal.ai","repository":{"type":"git","url":"git+https://github.com/InkPalAI/inkpal_npm.git"},"bugs":{"url":"https://github.com/InkPalAI/inkpal_npm/issues"},"keywords":["flutter","dart","ai","mcp","claude","cursor","windsurf","code-generation","inkpal"],"_id":"inkpal@1.0.3","gitHead":"3d92e63da6e72a96b28caaee851165236e17fa4a","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-vdJpgfJwgKU1tZD4ziNjkdHB+0zGNkgVMqxIpC5AA09pZEnf+hZ1qlhxRyDzMJdzyWyJas1O8xyRRAGM0Gt6hw==","shasum":"51b0f6574769979c98dff91d472ef38a6d4645fb","tarball":"https://registry.npmjs.org/inkpal/-/inkpal-1.0.3.tgz","fileCount":19,"unpackedSize":342096,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/inkpal@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD/f7RTfK3eZrAxCiu8jehatrYHkRSnxbXMmbw7EaZpsAIhAOszxCxQWNVdyA9Zmz8hlCD96bCYl/yGdxYhLyDRvf6o"}]},"_npmUser":{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"},"directories":{},"maintainers":[{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/inkpal_1.0.3_1779015210645_0.3764733242175571"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-16T15:01:02.002Z","modified":"2026-05-17T10:53:31.044Z","18.2.2":"2026-04-02T17:50:36.690Z","0.1.0":"2026-04-04T10:26:41.197Z","0.2.0":"2026-04-07T17:16:21.837Z","0.3.0":"2026-04-07T17:21:36.113Z","0.3.1":"2026-04-07T19:12:00.145Z","0.4.0":"2026-04-07T20:54:40.012Z","0.5.0":"2026-04-08T14:09:40.097Z","0.5.1":"2026-04-08T14:33:44.749Z","0.6.0":"2026-04-08T19:51:19.144Z","0.7.0":"2026-04-08T20:24:18.791Z","0.8.0":"2026-04-29T15:55:46.560Z","0.8.1":"2026-04-29T16:43:26.644Z","0.8.2":"2026-05-01T09:24:00.616Z","0.8.3":"2026-05-01T09:48:35.574Z","0.8.4":"2026-05-01T17:05:36.047Z","0.8.5":"2026-05-01T18:06:24.058Z","0.8.6":"2026-05-01T19:00:06.950Z","0.8.7":"2026-05-02T09:53:22.488Z","0.8.8":"2026-05-02T10:21:09.062Z","0.8.9":"2026-05-02T12:09:43.049Z","0.8.10":"2026-05-02T12:33:07.412Z","1.0.1":"2026-05-16T15:01:02.337Z","1.0.2":"2026-05-16T15:35:53.591Z","1.0.3":"2026-05-17T10:53:30.784Z"},"bugs":{"url":"https://github.com/InkPalAI/inkpal_npm/issues"},"author":{"name":"InkPal","email":"contact@inkpal.ai"},"license":"MIT","homepage":"https://inkpal.ai","keywords":["flutter","dart","ai","mcp","claude","cursor","windsurf","code-generation","inkpal"],"repository":{"type":"git","url":"git+https://github.com/InkPalAI/inkpal_npm.git"},"description":"InkPal — Flutter MCP server for Claude Code, Cursor, Windsurf, Codex, and Copilot.","maintainers":[{"name":"inkpalai","email":"tejpalsingh01588@gmail.com"}],"readme":"# inkpal\n\n> **AI-powered Flutter development tools for Claude Code, Cursor, Windsurf & Codex.**\n\nInkPal is an MCP (Model Context Protocol) server that gives AI coding agents deep capabilities for Flutter development: layered architecture audits, accessibility checks, layout-issue detection, navigation pattern enforcement, runtime error reproduction, widget tree inspection, design-system pulls, and more — all behind a context-aware rulepack engine that loads only what your project needs.\n\n## Install\n\n```bash\n# One command — auto-detects your editor and sets everything up\nnpx inkpal start\n```\n\nThat's it. `inkpal start` will:\n- Detect your Flutter project + MCP host (Claude Code / Cursor / Windsurf / Codex)\n- Add `inkpal_bridge` to `pubspec.yaml` and patch `lib/main.dart` (AST-safe, idempotent)\n- Auto-claim a free-tier license (no signup, no card)\n- Configure the MCP server for your editor\n- Run a structured health check\n- Trigger a first-success loop\n\nSet up time: under 3 minutes.\n\n## What you get\n\n| Skill | What it does |\n|---|---|\n| `/inkpal:debug` | Reproduce runtime error → root cause → fix → verify (visual + log) |\n| `/inkpal:audit` | Static + accessibility + architecture + layout audit, context-aware |\n| `/inkpal:build` | Spec → plan → code generation, policy-aware |\n| `/inkpal:test` | Test execution + test-quality scan |\n| `/inkpal:ship` | Pre-merge gate + auto-commit + PR |\n\nPlus 170+ MCP tools for direct invocation (analyze_project, lookup_error, screenshot, tap/scroll/text, generate_widget, fabricate, css_to_flutter, visual_test, and more).\n\n## Try it free\n\n**24-hour full-access trial. Every tool, every check, every workflow.\nEmail only — no card, no auto-charge.**\n\n```bash\nnpx inkpal trial your@email.com\n```\n\nOr `npx inkpal start` does both in one step (claims the trial, wires\nyour editor).\n\nTake it for a real spin: debug a runtime error, generate a screen from\na sentence, audit a project, ship a PR through the pre-merge gate.\nAfter 24 hours your trial expires — that's the end. No payment dialog,\nno marketing emails, no follow-up. If it earned its keep, see your\noptions at [inkpal.ai/pricing](https://inkpal.ai/pricing).\n\n### Free for students + OSS contributors\n\n- Verified `.edu` email → 12 months free, renewable: [inkpal.ai/students](https://inkpal.ai/students)\n- Active contributors to Flutter, Dart, or top-100 pub.dev packages → free indefinitely: [inkpal.ai/oss](https://inkpal.ai/oss)\n- Teams (5+ seats) → [inkpal.ai/team](https://inkpal.ai/team)\n\n## Doctor + status\n\n```bash\nnpx inkpal status     # Per-editor install status\nnpx inkpal doctor     # Environment health (Flutter, ADB, license, server)\nnpx inkpal upgrade    # Re-run install on every detected editor\nnpx inkpal clean      # Scrub stale install artifacts\n```\n\n## Compatibility\n\n| Editor | Status | Config path |\n|---|---|---|\n| Claude Code | ✅ supported | `~/.claude.json` |\n| Cursor | ✅ supported | `.cursor/mcp.json` |\n| Windsurf | ✅ supported | `~/.codeium/windsurf/mcp_config.json` |\n| GitHub Copilot (VS Code) | ✅ supported | `.vscode/mcp.json` |\n| OpenAI Codex CLI | ✅ supported | `~/.codex/mcp.json` |\n\n| OS | Status |\n|---|---|\n| macOS | ✅ tested |\n| Linux | ✅ supported |\n| Windows | 🟡 v1.1 target (use WSL for now) |\n\n## Privacy + telemetry\n\nInkPal sends **anonymized, aggregated** telemetry by default to help us prioritize fixes:\n- Tool invocations (name, success/failure, latency) — never the args or response content\n- Client version + platform\n- A device hash (SHA256 of hostname, never reversible)\n\n**To opt out**, set in your MCP server env:\n\n```json\n\"env\": {\n  \"INKPAL_LICENSE_KEY\": \"ink_…\",\n  \"INKPAL_TELEMETRY\": \"off\"\n}\n```\n\nTelemetry never includes:\n- Your code\n- Your file contents\n- Your license key\n- Your prompts\n- Anything detected by local checks (stays on your machine)\n\nThe endpoint that receives events is documented at [inkpal.ai/privacy](https://inkpal.ai/privacy).\n\n## Architecture\n\n```\nYour AI assistant   ⇄   inkpal   ⇄   your running Flutter app\n```\n\nThe npm package is the local connector your editor talks to. It runs on\nyour machine, validates your license, and routes work between your\neditor and the InkPal backend (and, if you're driving a running app,\nthe in-app `inkpal_bridge` package).\n\n## Links\n\n- Website: [inkpal.ai](https://inkpal.ai)\n- Pricing: [inkpal.ai/pricing](https://inkpal.ai/pricing)\n- Bridge package: [pub.dev/packages/inkpal_bridge](https://pub.dev/packages/inkpal_bridge)\n- Docs: [inkpal.ai/docs](https://inkpal.ai/docs)\n- Issues: [github.com/InkPalAI/inkpal_npm/issues](https://github.com/InkPalAI/inkpal_npm/issues)\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n","readmeFilename":"README.md"}