{"_id":"airmcp","_rev":"31-1ed8e1adbe19f796a7541def930530a4","name":"airmcp","dist-tags":{"latest":"2.16.5"},"versions":{"1.0.0":{"name":"airmcp","version":"1.0.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@1.0.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"d211d1b9a697d3c04b763d1f8b6343c8a368ca91","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-1.0.0.tgz","fileCount":186,"integrity":"sha512-tBR0Cw+E+ZzJP9Diz667GLff5LC+B+NiyI5mFA1csDapTV2BcPEFs4yL3JkwzgfCzNMIZocUwQTwW6w/crHDgg==","signatures":[{"sig":"MEUCIQCMrqEAKLA5QCBOXAhM54pUCeCN29LZgr+xxpEv9JB2pwIgRsbisC7O2RwZKa3/V7QDdhbkNaeWMr/UdoVmtE5xylI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":718889},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0ee8e96357c51bbf62a6bf83f71917c12460a0e6","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_1.0.0_1773465955805_0.683122361253415","host":"s3://npm-registry-packages-npm-production"}},"1.5.1":{"name":"airmcp","version":"1.5.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@1.5.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"fbf145c0a88b19a2c63cc9284f0a7eb39c021d84","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-1.5.1.tgz","fileCount":186,"integrity":"sha512-yzxA/ku0YSGAJ8wvI5upFIsfLeGTa1vLajIibN9zoMBdZXNH8J0/uezLztLDTY0K6NLxdj6u40HFgdKjgxZkZg==","signatures":[{"sig":"MEUCIF1PJyMc18khw7+KN0x5AGEIcx9iuC3aNJDoBsglnHhPAiEAqnifj5Mh43LowvxsF1ZTPJMFmG37kKiQBSWpuDNOsJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@1.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":738090},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"90b5b0e57abd812e35e1d9060ccf406d55755893","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_1.5.1_1773469570928_0.8461004694392249","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"airmcp","version":"1.6.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@1.6.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"972bb0793616d2a0973de33f8ac1aca08fab4aa0","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-1.6.1.tgz","fileCount":186,"integrity":"sha512-83fzXDYCdpOWELJ8xYFxEPXjdTb7RYQAVKHUurB1X4vXEOJrPOtzW57R0QTzOd4+K+A93d3DNrvsr6t0gt90gA==","signatures":[{"sig":"MEYCIQCp48LgR25Dvhwfd5otxcrqn+x73DFhRo1vkZWnVWwYbwIhAK+iL2qVw7NIFMTXoh1t0w6cMR+BLIoYT2/1XhuaKiRA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":747424},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"0274ef35c8ac3c857cc99611bc6b5a4f4793d6fb","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_1.6.1_1773472628631_0.48178346275015116","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"airmcp","version":"1.7.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@1.7.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"bd325671feb437cc251318a1c56859b94ef4c922","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-1.7.1.tgz","fileCount":225,"integrity":"sha512-WGK8Kh5Tef10lPaDLZwZUmAOqKGC+bxJS4TA7dwF8LfcxSN+v2zDBULSBa04kkfGGcyyYiI8DcqRdZh2ovQ2Rw==","signatures":[{"sig":"MEUCIQC9cx71/okdC7MbxhyJwbNs5lnavh+m/DbTu1CPcy6gLAIgNbewHv8u3HZVwKHmCdwVv8ury7ISMvDAaXmSt0hS8NI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":827095},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"e994fb2eff1037486511a2d79edc89a4937b6863","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc && cp -r src/skills/builtins dist/skills/","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_1.7.1_1773476021828_0.21524124567414882","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"airmcp","version":"1.9.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@1.9.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"a57e87745616784370ebd8d601a107c8e39aa15c","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-1.9.0.tgz","fileCount":237,"integrity":"sha512-6TbI/BssTIW1AFM3yVjA/WaQdj54L7jPBf6YUAhEghRRLp/zGAQD8gMD2z+MUZ/P3FqFlgIGExss7i1fPXf/5g==","signatures":[{"sig":"MEQCIB8wQ58xNlFse+wHHDWr689vEd1ERp3tSy/UK5I+pfJjAiBUkhf0f3hYWlHgZmhdzW70iF9xD8iqgalMPyzxLN5+YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":901205},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"5b3b162026c7a4c3d792439ae86ec45e51df940d","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc && cp -r src/skills/builtins dist/skills/","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_1.9.0_1773485008666_0.1807510374967416","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"airmcp","version":"2.0.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.0.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"db26009986076c3287e18e525a771a10572be9f8","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.0.0.tgz","fileCount":243,"integrity":"sha512-GKxLb+R79oI54ev3AUoFHa5CWNek7G2iYzQ7KCMuKWYR/FOtRaHgVHvlsqowA3VsRo8paTdkJcmiXI47w6rbgQ==","signatures":[{"sig":"MEYCIQCDDLhlCUrrS9QN0n7KapDpC+K/lKJsL81udh60kWH32gIhAK1Wgggl47yXRWdAPEEQ0wVsbOmV3C/ad1H3UhhLQIP8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":913598},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"18e8f52181b3e0b526ed3908c585538085b422d0","mcpName":"io.github.heznpc/airmcp","scripts":{"dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc && cp -r src/skills/builtins dist/skills/","clean":"rm -rf dist","start":"node dist/index.js","pretest":"npm run build","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.0.0_1773491160447_0.8447818477891011","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"airmcp","version":"2.1.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.1.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"dc55b9dc9f6fec27c7160f2b3787fc52935dad78","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.1.0.tgz","fileCount":252,"integrity":"sha512-+sYEuR/p+cSX5f6mDNkmm3tn29BKc6g9PbuEWwN8wN9a9u4f/K8R7zTAA1Ufvj2g8TCLsAiPARQucQ+9OoxRYw==","signatures":[{"sig":"MEYCIQDdPzDnZolb3ClTbGQ6d8/egUtK5qywBeWTuLuo9cUNRAIhAN61Sxq6kZ7+Inpy47ywGMo8DT2GiblL6ceXEW+vvSwY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":990235},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"05cda45ca4575b10dee2fa592d6e590c2a8f3901","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"tsc && cp -r src/skills/builtins dist/skills/","clean":"rm -rf dist","start":"node dist/index.js","qa:e2e":"node scripts/qa-e2e-test.mjs","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","swift-build":"cd swift && swift build -c release","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^3.24.0","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","eslint":"^10.0.3","globals":"^16.0.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^22.0.0","@jest/globals":"^29.7.0","@types/express":"^5.0.6","typescript-eslint":"^8.20.0"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.1.0_1773509572911_0.16980456911769792","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"airmcp","version":"2.3.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.3.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"34df7f7706a74aecfeff9a461fa5f33cdf87def5","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.3.0.tgz","fileCount":102,"integrity":"sha512-aX/ukGP8gdAuB7UP+cQFx4882IpH2Z0K58v7AL8qyJ8TGzxTC8rxcZwimWFv/gUuOR3L3fIlyn2ck3834Qc5fg==","signatures":[{"sig":"MEYCIQDeBr+OwUiN/7JXefh8vc7KzQ3cBG7YkKqxHrKVCfCjUAIhAOYYIw+ZlfP5btp6an5aamc7sRCVozHX63BCK5s3qLAN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644283},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"4285d6e694512d38d82e5aafa40cb41694ec8fa5","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.3.0_1774098721953_0.5127041523221416","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"name":"airmcp","version":"2.3.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.3.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"30fab42daa4a689806ee314e88de69f9ef619cd1","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.3.1.tgz","fileCount":102,"integrity":"sha512-KKlyp2ebUnbMQiwaeym0YyTsVCBB/dOA3LVVMnL15LgVnFoCGhhOgBotBER69GDg4fpstepmm3S0w1pMZtngxw==","signatures":[{"sig":"MEUCIAroeIFuTZgWarKy3lNPzxG6UoxTKKSGYUgnsboE84J3AiEA0g5msdaUuTglM1KX1UFqT8Az5OkK1koCocRGbzm6g18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":644283},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ab75b7c6df658d0076cffc70c92952a3a6ea6fba","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.3.1_1774100740952_0.6541487735173099","host":"s3://npm-registry-packages-npm-production"}},"2.4.1":{"name":"airmcp","version":"2.4.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.4.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"69566367b685f0cbc58157f3f83b1d26837c802a","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.4.1.tgz","fileCount":115,"integrity":"sha512-GhkDtLNRgQu+xK2O+tbbodQPRgiAyfaAJSirAI/HKBbC/5W9uZq3Nu/9vecpjAJvFgiq6VUy+B0hMGz/XEuLDQ==","signatures":[{"sig":"MEYCIQCRqAyGXsxmwe5qvnrBJhv3z2LL3RpNGb/QET0tMkKocAIhAO/0QpV0T5X16pX75KIo3UU9fDySOZVgnKap43xK2Agd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703790},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"c7a9c390e602630d69c35f4e1d5777874721aa87","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.4.1_1774189767365_0.447355782614957","host":"s3://npm-registry-packages-npm-production"}},"2.4.2":{"name":"airmcp","version":"2.4.2","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.4.2","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"a3b54f531483bc7f57a912514b6b49c064781b36","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.4.2.tgz","fileCount":115,"integrity":"sha512-5B2GEKaFfcpyWUchXi5cnqC2w4XB3Loh9hu8ik1DaqVr8kXQ8CAAunOm6aVAWqv+n7U9D7lIsFcusii5hWYz9Q==","signatures":[{"sig":"MEYCIQDeRPyLj2h3QMvMwFrMuloVFbsyEmEroQV6YEdltwHUngIhALkF0+aHKnEEDuRdrSvQCyyjCbZdV3BX23q3xGjWM3b6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":703790},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"d265a25b05197c8b30bcf575463d365b28b331a8","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.4.2_1774190991057_0.3288775306592797","host":"s3://npm-registry-packages-npm-production"}},"2.5.0":{"name":"airmcp","version":"2.5.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.5.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"28f26eb869bacf522faf38a294f4a72de3904fc8","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.5.0.tgz","fileCount":115,"integrity":"sha512-bA2W27zwT98xeOOwirPeQBKmVAkC8uReS0j9Hx0VUBvNrS6sEv9rxf6uKumb/pZRnhOwcwyU8VfnHbc8tkFV4w==","signatures":[{"sig":"MEQCIAEYlfqaYjVAuTlHT4VFbXRve5HpD7Oka9+YLWt8TulAAiADlNXWRuz7PGpGh023QzZG7wzgGINtai1yPkvKSEn1vw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707615},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"60d7061465b7bce66c169815639d89a1ec5714c8","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.5.0_1774453354469_0.24357050762691523","host":"s3://npm-registry-packages-npm-production"}},"2.5.1":{"name":"airmcp","version":"2.5.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.5.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"5bb59883a70be2d7f9ef196046c9632d250c35af","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.5.1.tgz","fileCount":115,"integrity":"sha512-buI+ePPeBRJpQY2J4xlawsBo042QyFbAQfLMkwNhjVyRsNSCi/P43/JGe7MxlZJw0hxlk77doIwqMwkOcFCrBg==","signatures":[{"sig":"MEYCIQCWwpPlmE0iecficlj/vodtOUiud+urmb0SHZkHw8WDHQIhANBZDT+hyuTNFmQqURDsNF2akgRy5zobGvBl3obI4KB7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":707615},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"114ea2fc148c86da00f7a6ce19b7dc1e135ab429","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:major":"npm version major --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:minor":"npm version minor --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","version:patch":"npm version patch --no-git-tag-version && node -e \"let s=require('./server.json');s.version=s.packages[0].version=require('./package.json').version;require('fs').writeFileSync('server.json',JSON.stringify(s,null,2)+'\\n')\"","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.27.1","@modelcontextprotocol/ext-apps":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.5.1_1774457285831_0.49878775672676334","host":"s3://npm-registry-packages-npm-production"}},"2.5.2":{"name":"airmcp","version":"2.5.2","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.5.2","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"2090fe9e037bf64aa8eb9f8f01b8d809d2767368","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.5.2.tgz","fileCount":115,"integrity":"sha512-yP2+VEetSF21WkWQz2IfDx6WdRBMF6KuEz5Bj9a+PIjFGFCCutloQzrU0Tdf3kRv1oERfK0be5CG3DBR+sv4vw==","signatures":[{"sig":"MEUCIAvRGx9llSH+qtzpR2n89RkjjgcigjpYMxMcAX+MyxdTAiEAvPkwy27p2gMRduDC48WQxJjn3mCpmdR3JTM1PxfsGgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717759},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6307a81b4e798ab5bcba3891decce256d09691c0","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.28.0","@modelcontextprotocol/ext-apps":"^1.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.5.2_1774650317238_0.6657800179986479","host":"s3://npm-registry-packages-npm-production"}},"2.6.0":{"name":"airmcp","version":"2.6.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.6.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"9531eefff317b131d5d8bcf32d3bc498a9aa2626","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.6.0.tgz","fileCount":116,"integrity":"sha512-CvqiHgaqbyLlS8ELohOXnMCSCUJhmjW76ZhhU/6XgvYPgJw5bwHH/keJUYZsHyqx4QOyn6Ckphi9uwlgLAbmDg==","signatures":[{"sig":"MEUCIFL/mWE2RjqBcVmZWIWNvvsZ8GVWzjqKPaB6QIhGfq1LAiEAn3NbejtKDonzbAicdYSMPO9YX10xCb8FTQBPvcgn9tk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":725357},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"ba5731731407030998813967164933b483133b3a","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","typecheck":"tsc --noEmit","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.6.0_1774903088473_0.43540914273535236","host":"s3://npm-registry-packages-npm-production"}},"2.6.2":{"name":"airmcp","version":"2.6.2","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.6.2","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"f366e9a2b2bc2d0ead80d05352fee48d47ca160b","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.6.2.tgz","fileCount":116,"integrity":"sha512-l7+oyiooFgLAwKaQTEPeIb3m0h+jrxbWbD2WcI9awZrS1bnDUx8SqgWHnTKCvgPqrVJxgdFWT+vy0HY1gvY06Q==","signatures":[{"sig":"MEUCIQC4W+XstDXYMealPGv1ceaTkJRa9bivtQ8vt5tc0oN8KQIgVjzaQrZGA+fsMBPJnAo2QL1USqEL3QATvqdqzUlMOj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":743045},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"5604e2bb7aade1510fcc1adba4ea6ac397154de7","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","i18n:check":"node scripts/check-i18n.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs","prepublishOnly":"npm run clean && npm run build"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.25.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.7.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.6.2_1775117116416_0.30410105825240796","host":"s3://npm-registry-packages-npm-production"}},"2.7.1":{"name":"airmcp","version":"2.7.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.7.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"f27c647ab885a0bd1fe32d9e922c5517daacd252","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.7.1.tgz","fileCount":117,"integrity":"sha512-0JJr72qNVmv4gZ003xg74xH3beJugOHalx/7vLmkZ3/7/8PBHdGCn33zJL0GzbuiqzsaKmjJFt26ec1M1PVJ7g==","signatures":[{"sig":"MEQCIHVO7loc4W53qP/JroW2hsfJz3A0xPXCLz8rVdNQ6e51AiBQEmKp5k6ynxAX/ojdb8plDEG2Fu3sDNZXaGS+oEMX8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":758256},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"d4866c13d10290d8bc8edb3391f68ef482a5ca72","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","dev:test:changed":"node scripts/dev-test.mjs --changed"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.7.1_1775851547899_0.39185970662402614","host":"s3://npm-registry-packages-npm-production"}},"2.8.0":{"name":"airmcp","version":"2.8.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.8.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"d852592a40ea483fd234c9fed23e02f4d831c5f8","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.8.0.tgz","fileCount":127,"integrity":"sha512-29uWMZ2ljukHgWtZ1KeawGdrd3V3Hwyz2Ok8HzrlHiEAujfUnLgaKtsJkvQ5AAIxV2we7KmWcdVF9Z9oIKKLOA==","signatures":[{"sig":"MEQCIBIvlkkPDe4onnKnsEfk90z5lZZqtOLefSfVib44wJIuAiAaB/DpO6A1wEebiq2OtCi2c8JefLAnEVICYSeGPsawIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":802156},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"31b350a1dfb9ecf22386486e1de1c8226d74525e","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","dev:test:changed":"node scripts/dev-test.mjs --changed"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.8.0_1776535891137_0.9849918496222405","host":"s3://npm-registry-packages-npm-production"}},"2.8.1":{"name":"airmcp","version":"2.8.1","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.8.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"69108325241475602f072419560b4e2836840383","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.8.1.tgz","fileCount":127,"integrity":"sha512-kv2/nL8g8KjBUk8OYGHU9EkvyJjl8YLRnIpD0lwufUPJ8RHi2EAgYAm8VEhS5buGO0st5qEcAil1II0326AU3A==","signatures":[{"sig":"MEYCIQCwo5MRKrVHh2gSixB4tHQUd5/QGibDD3GwO1X6XWzkDgIhAISkuKuaSio7E32DAP1oxTqkgbBlsuzlKlkj4NP/0Pi/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":802176},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"200c2eb66d5ad0beb3504faca30d26dacc9da9d6","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","dev:test:changed":"node scripts/dev-test.mjs --changed"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.8.1_1776589751858_0.05915065431341904","host":"s3://npm-registry-packages-npm-production"}},"2.9.0":{"name":"airmcp","version":"2.9.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.9.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"2840afe7dccb796861ce24dd1a9a18ad8984bb1e","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.9.0.tgz","fileCount":130,"integrity":"sha512-VlzirV39svq9IBOCPeeHuhuuYiYAh/2cmy53x9PRc4zu8Wk5KoFWOAsVhufPSexX0tYMkTxQzQeoM3oWhIE6LQ==","signatures":[{"sig":"MEYCIQCfWOEpfstdsS5XAXxvVcznZeyPHdI26mff3Ph7z8FNSgIhAP4/L9u1dv1lXBecAksf/CbYa+4+mtlJIu9cwrx5bZNw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":810561},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"d4e22c2993d25b7b65fd7a7fb2d940e3581c9c7c","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","dev:test:changed":"node scripts/dev-test.mjs --changed"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.4","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.0","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.9.0_1776594470111_0.6734654993162144","host":"s3://npm-registry-packages-npm-production"}},"2.10.0":{"name":"airmcp","version":"2.10.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.10.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"e333951635d51ae389d62e031cfc46b18f134400","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.10.0.tgz","fileCount":139,"integrity":"sha512-cJGrueAcDIKZpnT59LzNHlUuOmhRnQ/df7WG2NnhH41Ut/VMEOpqxAH4JBZZfV5gs1+wjAa+dbs9q+OhgYUZhg==","signatures":[{"sig":"MEQCIG9+ebd9X7PiQybv7t3TG9+ujGmwhLqKLG2Q58N24V+TAiAOPB1r2IB8IfKtg4ZElkqZl051yMk/nYG0bA17pvMiMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":871751},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"6f90dd1c90024d5297806f17e8423007ddeb2807","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","typecheck":"tsc --noEmit","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","dev:test:changed":"node scripts/dev-test.mjs --changed"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"~3.25.76","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.10.0_1776664008549_0.37023324782210976","host":"s3://npm-registry-packages-npm-production"}},"2.11.0":{"name":"airmcp","version":"2.11.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.11.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"5204d458a32fd9e13a6d794cda9948c7f07eb905","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.11.0.tgz","fileCount":143,"integrity":"sha512-OenE9w1kdUzbvjK+ncdAth81ebTeuHBCO/6eSpAtZ9/Xr6WtG4esS3u5qDxxCQpHJbb92xrcviuwu6O/yXT+dw==","signatures":[{"sig":"MEYCIQDPkPRRBHuHm9SBbXTajgpydWTjb2LYdJ9sjXMXQ5x90QIhAK38VFLBN6jIaWY33fQdZISoJC7PsMtVc7Ckc8++aWcr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":904613},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"44888009dac67b07d150993254d0c484a34837a8","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","build:mcpb:check":"node scripts/build-mcpb.mjs --check","dev:test:changed":"node scripts/dev-test.mjs --changed","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"overrides":{"hono":"^4.12.13","@hono/node-server":"^1.19.13"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"~3.25.76","jose":"^6.2.2","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.11.0_1776976638167_0.05673650374830075","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"airmcp","version":"2.12.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.12.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"2ed32954ff0fc1ecf5a8551bf904abe3089d85c4","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.12.0.tgz","fileCount":143,"integrity":"sha512-nSdneRmC1ZsgkR8BAgBpZL0DjVPKjG7tJ8bl/BWM3HacugFkAYqV2Z4OuGlc4Ah6Bb+SunNl4Icj3rAkhrY9cg==","signatures":[{"sig":"MEUCIQD0hQbB6HJ4bq/LXLvEyJGoB7Cppb6/6qNJCiFpLQwAbQIgQP1fSeOPbGYfx0dDpbSze+RA06zYHKx0g359d+UR7Nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":936906},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"gitHead":"559cdec50939500231617cbf2468547e467cb887","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","dev:mcp":"node scripts/dev-mcp.mjs","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"node scripts/dev-connect.mjs","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"node scripts/dev-mcp.mjs --watch","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","eval:plans:json":"node scripts/eval-plans.mjs --json","build:mcpb:check":"node scripts/build-mcpb.mjs --check","dev:test:changed":"node scripts/dev-test.mjs --changed","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"overrides":{"hono":"^4.12.13","@hono/node-server":"^1.19.13"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.7","description":"MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, and Podcasts. Connect any AI to your Mac.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.2","dependencies":{"zod":"~3.25.76","jose":"^6.2.2","yaml":"^2.8.2","express":"^5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^16.4.0","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^20.4.4","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^20.4.4"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.12.0_1778400318753_0.2580490837694389","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"airmcp","version":"2.14.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.14.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"2b8557fca295446c7e84f93b9fd2a1a927477a90","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.14.0.tgz","fileCount":164,"integrity":"sha512-/GxTX6nwAMEPo01wulZvkjoNMlfF7Y7C1BneF6hcKD+4VQ9dT7K58rYIwoETpWT333n6t/cYyQeM4FrHorXsiQ==","signatures":[{"sig":"MEYCIQDvheDodGL8Ot+N/1co79GEi5F+P+K07dO+CoXwZ0c5zAIhAOsHBOLzimx1mYJdSyi419tZ55F6Ldx9WVIYXu8F4dM1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1076633},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","premcp:validate":"npm run build","build:mcpb:check":"node scripts/build-mcpb.mjs --check","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"overrides":{"hono":"^4.12.25","@hono/node-server":"^1.19.13"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.8","description":"Approval-gated local action runtime for Apple workspaces, with profile-based modules, progressive MCP tool exposure, audit logs, HITL approval, and Mac app automation.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.3","dependencies":{"zod":"~4.4.3","jose":"6.2.3","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.7.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.14.0_1782828531481_0.45000866711573395","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"airmcp","version":"2.15.0","keywords":["mcp","model-context-protocol","apple","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.15.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"05571ded15b5020f1890538775cc5472f71a9856","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.15.0.tgz","fileCount":150,"integrity":"sha512-JYoLBBT3zkJtMKkbRCe9nyIcDY5wth9s/tuPFkLAOcNNZxlCbdJCYIqDZGWqgfSQSm247jU9ZbY4VRat2+Q5NQ==","signatures":[{"sig":"MEUCIAE6LZQWPxI4vtVdHR6oRkVp+Ht+H3Sy6XJzYXn05F48AiEA53GqSMTEL4hJ2OF4RzzIICsn/zZiWLotIOhCsUIjSc8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":945840},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"139870c632059c5a26988f82e72e5683d7c46b79","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build && npm run addons:check && node scripts/slim-root-package.mjs --apply","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","postpack":"node scripts/slim-root-package.mjs --restore","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","stats:sync":"node scripts/count-stats.mjs --sync","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","premcp:validate":"npm run build","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"node scripts/build-mcpb.mjs --check","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"heznpc","email":"heznpc@gmail.com"},"overrides":{"hono":"^4.12.25","@hono/node-server":"^1.19.13"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"10.9.8","description":"Approval-gated local action runtime for Apple workspaces, with profile-based modules, progressive MCP tool exposure, audit logs, HITL approval, and Mac app automation.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.22.3","dependencies":{"zod":"~4.4.3","jose":"6.2.3","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.29.0","@modelcontextprotocol/ext-apps":"1.7.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^25.5.0","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.15.0_1782938611779_0.6921043764690391","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"airmcp","version":"2.16.0","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.16.0","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"d81c9821461f6d531ef48fb8d8dbfb3c59cde7bd","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.0.tgz","fileCount":188,"integrity":"sha512-YsBnR9PiuoeyhbWL+QhXv+DzqNbvu6nzPbLF4RCvWj2x2SlBiPsjb7jZnjLm7Gkh/fm7bxBa+A2qEc1Y/YJLmQ==","signatures":[{"sig":"MEQCIB4XUXUBer5z/ZiASoZtVpl7HXOg/5VOai+abW55j5luAiAtghlSIHmvk1P3hoF4Uxo/RYeTvLTm3zn6kZcwnL85zA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1263988},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"12bd71027127b69eaaef5984b3600f08c4792885","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","size:check":"node scripts/verify-public-size.mjs","stats:sync":"node scripts/count-stats.mjs --sync","clean:local":"node scripts/clean-local-builds.mjs","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","swift-build:fm":"node scripts/build-swift-fm.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","gen:app-catalog":"node scripts/gen-app-catalog.mjs","premcp:validate":"npm run build","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","app:verify:governed":"./scripts/bundle-app.sh verify-governed","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"12.0.1","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.23.1","dependencies":{"zod":"~4.4.3","jose":"6.2.3","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.30.0","@modelcontextprotocol/ext-apps":"1.7.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^26.1.1","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.16.0_1785339768239_0.25936160521775653","host":"s3://npm-registry-packages-npm-production"}},"2.16.1":{"name":"airmcp","version":"2.16.1","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.16.1","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"dc9b58cd0b439fe5af81ce7e77ba516ad288becc","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.1.tgz","fileCount":188,"integrity":"sha512-a8pMPsIA3j9oI7d3wp6hy2NY0vPZ0w3lkpdg0OXb+vll7pUkn2O0uosVngqSa5JJk9tY3MuZU1XJdu7wfyHcHw==","signatures":[{"sig":"MEUCIDRJOtM0glMOkkdI825KphiIuliVDXy+JmbhXIHz8A+YAiEA+Qo2SWCDaGSOaly3uW0R/B35WOV8QT7WdjCRHuG8gaU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1263988},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"b15eadd2d8b8d4275af280fa31e74181d7dd4218","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","size:check":"node scripts/verify-public-size.mjs","stats:sync":"node scripts/count-stats.mjs --sync","clean:local":"node scripts/clean-local-builds.mjs","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","swift-build:fm":"node scripts/build-swift-fm.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","gen:app-catalog":"node scripts/gen-app-catalog.mjs","premcp:validate":"npm run build","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","app:verify:governed":"./scripts/bundle-app.sh verify-governed","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"12.0.1","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.23.1","dependencies":{"zod":"~4.4.3","jose":"6.2.3","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.30.0","@modelcontextprotocol/ext-apps":"1.7.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^26.1.1","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.16.1_1785340817791_0.3653465657131403","host":"s3://npm-registry-packages-npm-production"}},"2.16.2":{"name":"airmcp","version":"2.16.2","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.16.2","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"e810150e1d987e9cde858d4c602ba19328dd7bc5","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.2.tgz","fileCount":188,"integrity":"sha512-HYWvsDzp2TjYcyy/DvnRC376xJ/6O4K2mOv0Og/B91Bj6IdHZ9En9LxnShnWBwqKq5zOjxw/pfzCD5RjYUmbwQ==","signatures":[{"sig":"MEQCIE2aUsiBqvlpkk8L795ArUX77eaSEuZrIC/VzQ1t/HGFAiA/hKUClpvHRpU7mzKRy11PzhLfyGFeTxkRpblpv15sDA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1263988},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"784e9dcf33aa99008b1ae7371c474afb2b7f077d","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","size:check":"node scripts/verify-public-size.mjs","stats:sync":"node scripts/count-stats.mjs --sync","clean:local":"node scripts/clean-local-builds.mjs","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","swift-build:fm":"node scripts/build-swift-fm.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","gen:app-catalog":"node scripts/gen-app-catalog.mjs","premcp:validate":"npm run build","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","app:verify:governed":"./scripts/bundle-app.sh verify-governed","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"12.0.1","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.23.1","dependencies":{"zod":"~4.4.3","jose":"6.2.4","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.30.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^26.1.1","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.16.2_1785345178394_0.8087413520075764","host":"s3://npm-registry-packages-npm-production"}},"2.16.3":{"name":"airmcp","version":"2.16.3","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.16.3","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"7cbad20db425b0a5f6641a016430ac4dc243dfff","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.3.tgz","fileCount":188,"integrity":"sha512-M3AfgHChcITgVRkMGf3VSPEDAwiH9jHM0/BXk3DQ984eCHbGYCjjh4SMKx8nvupsIuiL5N8B6aNQeZPm7sH4ow==","signatures":[{"sig":"MEUCIQD+N26sWKuyNSxYojr3X73Qi3bEbPxnOnvR85GiT98WbAIgWvgF3TC8uGV93V4CkpUbKTgpSCJUAZ+6+wQlwxlWRWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1273894},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"875de150547c302a9e2d1dc8456f93c85b8cf4ab","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","size:check":"node scripts/verify-public-size.mjs","stats:sync":"node scripts/count-stats.mjs --sync","clean:local":"node scripts/clean-local-builds.mjs","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","swift-build:fm":"node scripts/build-swift-fm.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","gen:app-catalog":"node scripts/gen-app-catalog.mjs","premcp:validate":"npm run build","registry:verify":"node scripts/verify-container-introspection.mjs","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","app:verify:governed":"./scripts/bundle-app.sh verify-governed","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"12.0.2","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.23.1","dependencies":{"zod":"~4.4.3","jose":"6.2.4","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.30.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^26.1.1","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.16.3_1785494140068_0.852352592363345","host":"s3://npm-registry-packages-npm-production"}},"2.16.4":{"name":"airmcp","version":"2.16.4","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"author":{"name":"heznpc"},"license":"MIT","_id":"airmcp@2.16.4","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"os":["darwin"],"bin":{"airmcp":"dist/index.js"},"dist":{"shasum":"8c30f7a2ebffc11b8634869be61f8e8a4856039b","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.4.tgz","fileCount":188,"integrity":"sha512-oqby2QPTQ893Q+jNqwwPmhFXDsy0mnHG6+LF6HHBkzFf0hJqhc8DYHuxCF6T6Y+Q4tE900txGfcb+RzZ0sQH8Q==","signatures":[{"sig":"MEUCIQCeZt51hInwoplEMKkmZRV7ticIIBxELs7DoHf+QvDfEQIgfQzWMWSbQo4uGxFzlIij3xXeGsXqpk4vwuAl4f1Dx4o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1281710},"main":"dist/index.js","type":"module","engines":{"node":">=20.0.0"},"exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"b7f5af6ca1d9bffd6e1cbbf1529eec552b87caf5","mcpName":"io.github.heznpc/airmcp","scripts":{"qa":"node scripts/qa-test.mjs","dev":"tsx src/index.ts","lint":"eslint src/","llms":"node scripts/gen-llms-txt.mjs","test":"node --experimental-vm-modules node_modules/.bin/jest","build":"node scripts/build.mjs","clean":"rm -rf dist","debug":"node scripts/debug-pipeline.mjs","smoke":"node scripts/smoke-mcp.mjs","start":"node dist/index.js","stats":"node scripts/count-stats.mjs","format":"prettier --write src/","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","tokens":"node scripts/measure-tool-tokens.mjs","app:run":"./scripts/bundle-app.sh run","dev:mcp":"tsx src/index.ts","prepack":"npm run build","prepare":"husky","pretest":"npm run build","qa:crud":"node scripts/qa-crud-test.mjs","dev:test":"node scripts/dev-test.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","debug:all":"node scripts/debug-pipeline.mjs --all","dev:oauth":"node scripts/dev-oauth.mjs","typecheck":"tsc --noEmit","app:verify":"./scripts/bundle-app.sh verify","build:mcpb":"node scripts/build-mcpb.mjs","debug:list":"node scripts/debug-pipeline.mjs --list","eval:plans":"node scripts/eval-plans.mjs","i18n:check":"node scripts/check-i18n.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","size:check":"node scripts/verify-public-size.mjs","stats:sync":"node scripts/count-stats.mjs --sync","clean:local":"node scripts/clean-local-builds.mjs","dev:connect":"tsx src/index.ts connect","gen:intents":"node scripts/gen-swift-intents.mjs","stats:check":"node scripts/count-stats.mjs --check","swift-build":"cd swift && swift build -c release","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","format:check":"prettier --check src/","gen:manifest":"node scripts/dump-tool-manifest.mjs","mcp:validate":"node scripts/mcp-validate.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","review:audit":"node scripts/review-route.mjs --audit","review:route":"node scripts/review-route.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","widget-build":"./scripts/bundle-app.sh widget-release","compat:report":"node scripts/print-compat-report.mjs","dev:mcp:watch":"tsx watch src/index.ts","harness:check":"node scripts/verify-harness-adapters.mjs","version:check":"node scripts/sync-version.mjs --check","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","addons:publish":"node scripts/publish-addon-packages.mjs","dev:test:watch":"node scripts/dev-test.mjs --watch","prepublishOnly":"npm run clean && npm run build","profiles:check":"node scripts/verify-profiles.mjs","release:verify":"node scripts/verify-release-state.mjs","swift-build:fm":"node scripts/build-swift-fm.mjs","verify:package":"node scripts/verify-published-package.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","gen:app-catalog":"node scripts/gen-app-catalog.mjs","premcp:validate":"npm run build","registry:verify":"node scripts/verify-container-introspection.mjs","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","dev:test:changed":"node scripts/dev-test.mjs --changed","app:verify:signed":"./scripts/verify-signed-app.sh","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","release:preflight":"node scripts/release-preflight.mjs","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","widget-build:debug":"./scripts/bundle-app.sh widget-debug","app:verify:governed":"./scripts/bundle-app.sh verify-governed","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:verify-install":"node scripts/verify-addon-install.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"repository":{"url":"git+https://github.com/heznpc/AirMCP.git","type":"git"},"_npmVersion":"12.0.2","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","directories":{},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"_nodeVersion":"22.23.1","dependencies":{"zod":"~4.4.3","jose":"6.2.5","yaml":"2.9.0","express":"5.2.1","@modelcontextprotocol/sdk":"1.30.0","@modelcontextprotocol/ext-apps":"1.7.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ajv":"^8.18.0","tsx":"^4.19.0","jest":"^30.3.0","husky":"^9.1.7","eslint":"^10.0.3","esbuild":"^0.28.0","globals":"^17.4.0","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/node":"^26.1.1","lint-staged":"^17.0.5","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@commitlint/cli":"^21.0.0","typescript-eslint":"^8.20.0","eslint-config-prettier":"^10.1.8","@commitlint/config-conventional":"^21.0.0"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/airmcp_2.16.4_1785759987630_0.7899024225054121","host":"s3://npm-registry-packages-npm-production"}},"2.16.5":{"name":"airmcp","description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","version":"2.16.5","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"homepage":"https://github.com/heznpc/AirMCP","bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"repository":{"type":"git","url":"git+https://github.com/heznpc/AirMCP.git"},"license":"MIT","publishConfig":{"access":"public"},"author":{"name":"heznpc"},"mcpName":"io.github.heznpc/airmcp","type":"module","main":"dist/index.js","bin":{"airmcp":"dist/index.js"},"exports":{".":"./dist/index.js","./package.json":"./package.json","./dist/*":"./dist/*"},"scripts":{"build":"node scripts/build.mjs","addons:build":"node scripts/build-addon-packages.mjs","addons:check":"node scripts/build-addon-packages.mjs --check","addons:verify-install":"node scripts/verify-addon-install.mjs","addons:measure-split":"node scripts/measure-addon-split.mjs","addons:first-user-drill":"node scripts/first-user-addon-drill.mjs","addons:kill-test":"node scripts/modular-distribution-kill-test.mjs","addons:publish":"node scripts/publish-addon-packages.mjs","swift-build":"cd swift && swift build -c release","swift-build:fm":"node scripts/build-swift-fm.mjs","ai-status":"node scripts/ai-status.mjs","app-build":"cd app && swift build -c release","app:run":"./scripts/bundle-app.sh run","app:verify":"./scripts/bundle-app.sh verify","app:verify:governed":"./scripts/bundle-app.sh verify-governed","app:verify:intents":"./scripts/bundle-app.sh verify-appintents","app:verify:signed":"./scripts/verify-signed-app.sh","widget-build":"./scripts/bundle-app.sh widget-release","widget-build:debug":"./scripts/bundle-app.sh widget-debug","clean":"rm -rf dist","clean:local":"node scripts/clean-local-builds.mjs","clean:local:apply":"node scripts/clean-local-builds.mjs --apply","dev":"tsx src/index.ts","lint":"eslint src/","format":"prettier --write src/","format:check":"prettier --check src/","prepublishOnly":"npm run clean && npm run build","prepack":"npm run build","pretest":"npm run build","start":"node dist/index.js","test":"node --experimental-vm-modules node_modules/.bin/jest","smoke":"node scripts/smoke-mcp.mjs","registry:verify":"node scripts/verify-container-introspection.mjs","premcp:validate":"npm run build","mcp:validate":"node scripts/mcp-validate.mjs","profiles:check":"node scripts/verify-profiles.mjs","harness:check":"node scripts/verify-harness-adapters.mjs","verify:package":"node scripts/verify-published-package.mjs","size:check":"node scripts/verify-public-size.mjs","release:preflight":"node scripts/release-preflight.mjs","release:verify":"node scripts/verify-release-state.mjs","build:mcpb":"node scripts/build-mcpb.mjs","verify:mcpb":"node scripts/verify-mcpb-artifact.mjs","build:mcpb:check":"npm run build && npm run build:mcpb && npm run verify:mcpb","gen:manifest":"node scripts/dump-tool-manifest.mjs","gen:manifest:check":"node scripts/dump-tool-manifest.mjs --check","gen:app-catalog":"node scripts/gen-app-catalog.mjs","gen:app-catalog:check":"node scripts/gen-app-catalog.mjs --check","gen:intents":"node scripts/gen-swift-intents.mjs","gen:intents:check":"node scripts/gen-swift-intents.mjs --check","qa":"node scripts/qa-test.mjs","qa:crud":"node scripts/qa-crud-test.mjs","qa:e2e":"node scripts/qa-e2e-test.mjs","qa:remaining":"node scripts/qa-remaining-test.mjs","qa:seq":"node scripts/qa-sequential.mjs","debug":"node scripts/debug-pipeline.mjs","debug:all":"node scripts/debug-pipeline.mjs --all","debug:list":"node scripts/debug-pipeline.mjs --list","dev:test":"node scripts/dev-test.mjs","dev:test:changed":"node scripts/dev-test.mjs --changed","dev:test:watch":"node scripts/dev-test.mjs --watch","dev:mcp":"tsx src/index.ts","dev:mcp:watch":"tsx watch src/index.ts","dev:connect":"tsx src/index.ts connect","dev:oauth":"node scripts/dev-oauth.mjs","compat:report":"node scripts/print-compat-report.mjs","eval:plans":"node scripts/eval-plans.mjs","eval:plans:json":"node scripts/eval-plans.mjs --json","typecheck":"tsc --noEmit","version:patch":"npm version patch --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:minor":"npm version minor --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:major":"npm version major --no-git-tag-version && node scripts/sync-version.mjs && node scripts/count-stats.mjs --sync","version:check":"node scripts/sync-version.mjs --check","stats":"node scripts/count-stats.mjs","stats:check":"node scripts/count-stats.mjs --check","stats:sync":"node scripts/count-stats.mjs --sync","i18n:check":"node scripts/check-i18n.mjs","llms":"node scripts/gen-llms-txt.mjs","llms:check":"node scripts/gen-llms-txt.mjs --check","tokens":"node scripts/measure-tool-tokens.mjs","tokens:check":"node scripts/measure-tool-tokens.mjs --check","review:route":"node scripts/review-route.mjs","review:audit":"node scripts/review-route.mjs --audit","prepare":"husky"},"peerDependencies":{"@opentelemetry/api":">=1.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true}},"dependencies":{"@modelcontextprotocol/ext-apps":"1.7.5","@modelcontextprotocol/sdk":"1.30.0","express":"5.2.1","jose":"6.2.5","yaml":"2.9.0","zod":"~4.4.3"},"devDependencies":{"@commitlint/cli":"^21.0.0","@commitlint/config-conventional":"^21.0.0","@eslint/js":"^10.0.1","@jest/globals":"^30.3.0","@types/express":"^5.0.6","@types/node":"^26.1.1","ajv":"^8.18.0","esbuild":"^0.28.0","eslint":"^10.0.3","eslint-config-prettier":"^10.1.8","globals":"^17.4.0","husky":"^9.1.7","jest":"^30.3.0","lint-staged":"^17.0.5","prettier":"^3.8.1","tsx":"^4.19.0","typescript":"^6.0.2","typescript-eslint":"^8.20.0"},"engines":{"node":">=20.0.0"},"os":["darwin"],"overrides":{"hono":"^4.12.25","@hono/node-server":"^2.0.5"},"lint-staged":{"src/**/*.ts":["prettier --write","eslint --fix"]},"gitHead":"37caebdbffbb6c6b9d4703b1366c87687f209520","_id":"airmcp@2.16.5","_nodeVersion":"22.23.1","_npmVersion":"12.0.2","dist":{"integrity":"sha512-ARiAcwUOUTaABbd+2ahOYOXJy6n3Kq6XKr8UtD2PFno1KYIvyAL0Cj7i3vMDyeXNZcbvA51AGqhMCtHDKs/T4A==","shasum":"29a50f574179d1859c4ce830a551dadb3bcee5c8","tarball":"https://registry.npmjs.org/airmcp/-/airmcp-2.16.5.tgz","fileCount":189,"unpackedSize":1291285,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/airmcp@2.16.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFEFHwDvmSlPUxd6giEt+rik3aAtTiZRX3InT6JmSiFTAiAshwSek/QNWutiY/UngMIIoJbiTNWNih4pwNDqBaj9GQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:5a921278-d8fa-4c65-8852-3634d83e7c9b"}},"directories":{},"maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/airmcp_2.16.5_1786622688627_0.2792153365404286"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-14T05:25:55.717Z","modified":"2026-08-13T12:04:49.143Z","1.0.0":"2026-03-14T05:25:55.983Z","1.5.1":"2026-03-14T06:26:11.146Z","1.6.1":"2026-03-14T07:17:08.850Z","1.7.1":"2026-03-14T08:13:42.035Z","1.9.0":"2026-03-14T10:43:28.833Z","2.0.0":"2026-03-14T12:26:00.627Z","2.1.0":"2026-03-14T17:32:53.057Z","2.3.0":"2026-03-21T13:12:02.111Z","2.3.1":"2026-03-21T13:45:41.184Z","2.4.1":"2026-03-22T14:29:27.589Z","2.4.2":"2026-03-22T14:49:51.226Z","2.5.0":"2026-03-25T15:42:34.676Z","2.5.1":"2026-03-25T16:48:06.051Z","2.5.2":"2026-03-27T22:25:17.396Z","2.6.0":"2026-03-30T20:38:08.757Z","2.6.2":"2026-04-02T08:05:16.630Z","2.7.1":"2026-04-10T20:05:48.095Z","2.8.0":"2026-04-18T18:11:31.286Z","2.8.1":"2026-04-19T09:09:12.019Z","2.9.0":"2026-04-19T10:27:50.300Z","2.10.0":"2026-04-20T05:46:48.878Z","2.11.0":"2026-04-23T20:37:18.385Z","2.12.0":"2026-05-10T08:05:18.965Z","2.14.0":"2026-06-30T14:08:51.617Z","2.15.0":"2026-07-01T20:43:31.958Z","2.16.0":"2026-07-29T15:42:48.413Z","2.16.1":"2026-07-29T16:00:17.959Z","2.16.2":"2026-07-29T17:12:58.559Z","2.16.3":"2026-07-31T10:35:40.222Z","2.16.4":"2026-08-03T12:26:27.767Z","2.16.5":"2026-08-13T12:04:48.783Z"},"bugs":{"url":"https://github.com/heznpc/AirMCP/issues"},"author":{"name":"heznpc"},"license":"MIT","homepage":"https://github.com/heznpc/AirMCP","keywords":["mcp","mcp-server","model-context-protocol","apple","apple-mcp","mac-mcp","macos-automation","notes","apple-notes","reminders","apple-reminders","calendar","apple-calendar","apple-intelligence","contacts","apple-contacts","mail","apple-mail","messages","imessage","music","apple-music","finder","safari","apple-safari","photos","apple-photos","shortcuts","siri-shortcuts","clipboard","dark-mode","claude","cursor","windsurf","cline","llm","ai","applescript","macos"],"repository":{"type":"git","url":"git+https://github.com/heznpc/AirMCP.git"},"description":"Governed MCP runtime for the Apple ecosystem, available on macOS for Notes, Mail, Calendar, Reminders, Shortcuts, and more.","maintainers":[{"name":"heznpc","email":"heznpc@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"icons/airmcp-icon-256.png\" alt=\"AirMCP\" width=\"128\">\n</p>\n\n# AirMCP\n\n[![npm version](https://img.shields.io/npm/v/airmcp)](https://www.npmjs.com/package/airmcp)\n[![Tests](https://github.com/heznpc/AirMCP/actions/workflows/ci.yml/badge.svg)](https://github.com/heznpc/AirMCP/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![GitHub stars](https://img.shields.io/github/stars/heznpc/AirMCP)](https://github.com/heznpc/AirMCP/stargazers)\n\n**Your AI assistant can use the Mac apps you already use.** Ask for something in\nplain language and AirMCP does it in the real Notes, Mail, Calendar, Reminders,\nMessages, Photos, Safari, Finder, and Shortcuts on your machine — your actual\ndata, not a copy and not a sandbox. The macOS runtime is available today; the\niOS runtime is in preview.\n\n```text\n\"Brief me on today's calendar, overdue reminders, and unread mail.\"\n\"For my next meeting, pull up the related notes, contacts, files, and reminders.\"\n\"Search my Safari tabs for that article and save a summary to Notes.\"\n\"Draft replies to the urgent mail, but ask me before sending anything.\"\n\"Run my Morning Routine shortcut.\"\n```\n\nStart on macOS with Node.js 20+:\n\n```bash\nnpx airmcp init\n```\n\nThen ask your client. Works with Claude, Codex, Cursor, Raycast, Xcode agents,\nand any other MCP client. Nothing reads or changes a client's settings until you\nopt in.\n\nMore to try: [Common Workflows](#common-workflows) ·\n[every tool](llms-full.txt) · [Quick Start](#quick-start)\n\n### It does not act behind your back\n\nAirMCP is the connector and control layer, not another agent. Destructive calls\npreview before they run, approval is per-call, and the audit chain is\ntamper-evident and verifiable by you — read `airmcp://trust` and check it\nyourself. Details in [Safety Model](#safety-model).\n\n<p align=\"center\">\n  <a href=\"docs/demo.gif\"><img src=\"docs/demo.gif\" alt=\"A real AirMCP session showing the live trust verdict, a destructive delete previewed without executing, and a verified audit chain\" width=\"900\"></a>\n</p>\n\n<p align=\"center\">Generated from a real local MCP round-trip by <code>scripts/demo/governed-flow.mjs</code> — real terminal output, not a staged transcript.</p>\n\n> Multi-language project page: [heznpc.github.io/AirMCP](https://heznpc.github.io/AirMCP/)\n\n## What You Get\n\n- **Apple workspace tools** for Notes, Reminders, Calendar, Contacts, Mail,\n  Messages, Music, Finder, Safari, Photos, Shortcuts, system control, screen\n  capture, Weather, Maps, Location, Bluetooth, and more.\n- **Google Workspace tools** for Gmail, Drive, Sheets, Calendar, Docs, Tasks,\n  People, and raw `gws` CLI access.\n- **Profiles and progressive exposure** so clients start with a small front\n  door instead of every loaded tool.\n- **Skills DSL workflows** with `parallel`, `loop`, `retry`, `on_error`, runtime\n  inputs, and event triggers.\n- **App Intent action bridge** generated from the MCP manifest for macOS\n  Shortcuts, with an iOS-only App Shortcuts provider and destructive intents gated separately.\n- **Native Swift bridge** for EventKit, PhotoKit, HealthKit, Vision, on-device\n  semantic search, and FoundationModels preview builds. AirMCP.app embeds the\n  normal bridge; it is optional for npm and MCPB users, who can build it\n  separately when needed.\n- **Dual transport**: stdio for standard MCP clients, HTTP/SSE for shared\n  local runtimes, browser clients, registries, and always-on hosts.\n\n## Apple Platform Direction\n\nAirMCP is one governed action layer with platform-specific roles, rather than a\ncopy of the full Mac runtime on every device.\n\n| Platform | Status | Role |\n| --- | --- | --- |\n| macOS | Available | Full local MCP runtime and broad Apple app and system integration. |\n| iOS / iPadOS | Preview | Native Calendar, Reminders, Contacts, Health, and Location actions, plus in-process AppIntents. |\n| visionOS | Roadmap | Spatial interaction and native actions, with Mac routing for Mac-only automation. |\n| watchOS | Roadmap | Commands, notifications, and per-call approval through a paired iPhone runtime. |\n\nThe shared Swift and AppIntents layers are the portability boundary. Platform\nsandboxing and lifecycle rules still determine which actions run locally and\nwhich route to a paired Mac or iPhone.\n\n## Quick Start\n\n### Claude Desktop one-click\n\n1. Download `airmcp-<version>.mcpb` from\n   [Releases](https://github.com/heznpc/AirMCP/releases).\n2. Drag it onto Claude Desktop, or use **Settings -> Extensions -> Install from\n   file...**.\n3. Choose modules in the install form and finish setup.\n\nFull guide: [docs/mcpb.md](docs/mcpb.md).\n\n### CLI wizard\n\nInstall Node.js 20+, then run:\n\n```bash\nnpx airmcp init\n```\n\nThe wizard selects a profile and stores preferences in\n`~/.config/airmcp/config.json`. Client registration is a separate consent\nstep whose default is **No**; no Claude, Codex, Cursor, or Windsurf setting is\nread or changed until you opt in.\n\nFor Codex, Claude Code, Cursor, Windsurf, and other stdio clients, use the\ndirect runtime unless the matching GitHub Release includes a signed\n`AirMCP-<version>.zip`:\n\n```bash\nnpx airmcp init --no-clients\nnpx airmcp connect-clients --client-runtime direct --dry-run\nnpx airmcp connect-clients --client-runtime direct\n```\n\nThe app-owned runtime is available only after installing that signed app ZIP\nand explicitly choosing **Start Local Runtime**. Do not configure a client to\nwait for AirMCP.app when the release does not include the app asset.\n\nNon-interactive examples:\n\n```bash\nnpx airmcp init --profile starter --yes\nnpx airmcp init --profile communications-safe --yes\nnpx airmcp init --profile productivity --yes\nnpx airmcp init --profile productivity --yes --connect-clients\nnpx airmcp init --profile productivity --yes --connect-clients --client-runtime direct\n```\n\nCheck the install:\n\n```bash\nnpx airmcp doctor\n```\n\n## Common Workflows\n\nOnce connected, ask your MCP client in natural language:\n\n- \"Tell me today's calendar events and overdue reminders. Do not change\n  anything.\"\n- \"Brief me on today's calendar, overdue reminders, unread mail, and recent\n  notes.\"\n- \"Turn today's meetings into a prep checklist.\"\n- \"Draft replies for urgent mail, but ask before sending anything.\"\n- \"For my next meeting, find related notes, contacts, files, and reminders.\"\n- \"Search my Safari tabs for that article and save the summary to Notes.\"\n- \"Run my Morning Routine shortcut.\"\n- \"Take a screenshot and save it to my Desktop.\"\n\nMore workflow examples live in [docs/workflows.md](docs/workflows.md).\n\n## Runtime Model\n\nAirMCP is designed to keep a large local capability surface usable without\ndumping the full catalog into every client context.\n\nThe complete generated catalog currently contains 298 tools across 32 modules.\nProfiles and progressive exposure keep clients from loading it all at once.\n\n- **Profiles**: `starter`, `communications-safe`, `productivity`, `full`, or\n  `custom`.\n- **Tool exposure**: `progressive`, `profile`, or `full`.\n- **Module packs**: enable only the packs you want with `npx airmcp modules` or\n  `AIRMCP_MODULE_PACKS=core,productivity`.\n- **Task sessions**: `start_tool_session`, `discover_tools`, and `run_tool`\n  allow a broad runtime to behave like a narrow task-specific toolbelt.\n- **Opt-in network modules**: `webhooks` and `powerautomate` stay off in every\n  profile until explicitly enabled.\n\nUseful commands:\n\n```bash\nnpx airmcp modules\nnpx airmcp modules enable productivity --install\nnpx airmcp --full\nnpx airmcp workflows\nnpx airmcp workflows --readiness\nnpx airmcp workflows today-overview --prompt\n```\n\n`today-overview` is the starter-safe first workflow: it reads only Calendar\nand Reminders and never writes data. Paste the printed prompt into a connected\nMCP client for a governed first run with client authorization and AirMCP audit\ncoverage.\n\n`workflows <id> --preview` is a separate local diagnostic. It reads Apple apps\ndirectly, bypasses the MCP governance path, and creates no AirMCP audit entry;\ndo not use it as the first-success workflow. Broader diagnostics such as\n`daily-briefing --preview` report missing modules before reading live data.\n\nThe complete generated tool manifest is in\n[docs/tool-manifest.json](docs/tool-manifest.json).\n\nCurrent generated surfaces: 234 App Intent action types, 86 Interactive Snippet views,\n15 AppEnum pickers, and an iOS-only provider with 8 read-only App Shortcuts that match the preview runtime. The sessionless discovery card uses MCP schema version\n2025-11-25.\n\n## Safety Model\n\nAirMCP treats local app access as a governed action layer, not a blind shell for\nagents.\n\nThe claim is verifiable, not marketing: read the first-party `airmcp://trust`\nresource for a live `governed` verdict composed from the tamper-evident audit\nchain, the active HITL level, the rate-limit / emergency-stop state, and the\naudit key grade — available before any tool access is widened. Preview any\ndestructive call with `preview_action` to see exactly what it would record and\nwhether it would be gated, without running it.\n\n- **Per-call human approval** for destructive and sensitive actions at the\n  default `sensitive-only` HITL level.\n- **HMAC-chained audit log** at `~/.airmcp/audit.jsonl`, with tamper detection\n  covered by tests.\n- **Native Trust Center** for governed-run timelines, approval state, audit\n  integrity, emergency controls, permission probes, and redacted local export.\n  Audit history is never read in the background: **Load** or **Refresh** makes\n  one explicit `audit_log` request, and the effective HITL policy may require\n  approval for that call.\n- **Rate limits**: 60/min globally and 10 destructive/hr.\n- **Emergency stop**: `touch ~/.config/airmcp/emergency-stop` blocks destructive\n  tools without restarting the server.\n- **Inbound HTTP policy** through `AIRMCP_ALLOW_NETWORK`: loopback-only by\n  default, with token, origin, or OAuth modes available for wider exposure.\n- **OAuth 2.1 + Resource Indicators** for HTTP runtimes that need scoped access\n  control, with RS256/ES256 JWT verification.\n\nEnvironment variables are indexed in [docs/environment.md](docs/environment.md).\nHTTP policy details are in\n[RFC 0002](docs/rfc/0002-http-allow-network.md), and OAuth details are in\n[RFC 0005](docs/rfc/0005-oauth-resource-indicators.md).\n\n## Client Setup\n\nWhen the matching GitHub Release includes a signed AirMCP.app ZIP, the\napp-owned desktop pattern keeps one local runtime behind every connected\nclient. A per-install token is created only by an explicit action: **Start\nLocal Runtime** in AirMCP.app, or an opted-in app-runtime client connection\nsuch as `--connect-clients` / `connect-clients`. It is stored at:\n\n```text\n~/Library/Application Support/AirMCP/http-token\n```\n\nThe macOS Setup window is consent-driven: it appears automatically once and\nresumes its last step when reopened. Merely opening or moving through Setup\ndoes not start the runtime or edit a client, and first-run **Finish Later**\nwith no runtime saves the selection only. If an app-owned runtime is already\nrunning and the selection changed, **Finish Setup** may stop and restart that\nexact owned generation so the persisted and effective scopes match. **Start\nLocal Runtime** creates the token and opts into automatic startup; each client\nis registered only after its own **Connect** action and a fresh\nscope/readiness check.\n\nExisting Codex registrations can be inspected or disabled without deleting\ntheir settings:\n\n```bash\nnpx airmcp codex status\nnpx airmcp codex disable\n```\n\nThe `npx airmcp codex` commands follow their child Codex CLI's active user\nconfig root: `AIRMCP_CODEX_CONFIG_PATH` first, then\n`$CODEX_HOME/config.toml`, then `~/.codex/config.toml`. The explicit override\nis resolved against the invoking working directory and must be named\n`config.toml`.\n\nStdio clients can proxy into the app-owned HTTP runtime:\n\n```bash\nnpx -y airmcp connect --url http://127.0.0.1:3847/mcp\n```\n\nSet `AIRMCP_HTTP_TOKEN` to the token value when using that proxy.\n\nExamples:\n\n```bash\nclaude mcp add --env AIRMCP_HTTP_TOKEN=<token> airmcp -- npx -y airmcp connect --url http://127.0.0.1:3847/mcp\ncodex mcp add --env AIRMCP_HTTP_TOKEN=<token> airmcp -- npx -y airmcp connect --url http://127.0.0.1:3847/mcp\n```\n\nDirect stdio mode still works for development or isolated client-owned runtimes:\n\n```bash\nnpx -y airmcp\n```\n\nBrowser-based MCP clients should use HTTP mode with token and origin checks. See\n[docs/oauth-browser-pkce.md](docs/oauth-browser-pkce.md) for the browser/OAuth\npath.\n\n## App Intents and Shortcuts\n\nAirMCP generates App Intent actions from the same MCP tool manifest. On macOS,\nthose actions are available in the Shortcuts action library; Apple does not\nsupport the `AppShortcutsProvider` phrase surface on macOS. iOS preview builds\ncan additionally compile the workflow-first App Shortcuts provider.\n\nDestructive intent source generation is opt-in at build/codegen time with\n`AIRMCP_APPINTENTS_DESTRUCTIVE=true`; setting it beside an already-built app\ndoes not expand that binary's intent surface.\n`AskAirMCPIntent` and FoundationModels-backed Apple Intelligence paths are\npreview-only and require explicit Swift builds.\n\nGuide: [docs/shortcuts.md](docs/shortcuts.md). Architecture:\n[RFC 0007](docs/rfc/0007-app-intent-bridge.md).\n\n## Local Development\n\n```bash\ngit clone https://github.com/heznpc/AirMCP.git\ncd AirMCP\nnpm install\nnpm run build\nnode dist/index.js\n```\n\nUseful checks:\n\n```bash\nnpm test\nnpm run mcp:validate\nnpm run dev:test -- notes\nnpm run dev:test:changed\n```\n\nSwift bridge:\n\n```bash\nnpm run swift-build\n```\n\nFoundationModels preview builds require macOS 26+, Apple Silicon, a compatible\nSDK, and the explicit compile flag:\n\n```bash\ncd swift\nswift build -c release -Xswiftc -DAIRMCP_ENABLE_FOUNDATION_MODELS\n```\n\nLocal build artifacts can grow after Swift or app builds. To inspect or reclaim\nignored artifacts:\n\n```bash\nnpm run clean:local\nnpm run clean:local:apply\nnpm run size:check\n```\n\nTesting guide: [docs/testing.md](docs/testing.md).\n\n## Requirements\n\n- macOS for the server runtime.\n- Node.js 20 or newer.\n- macOS Automation, Accessibility, Full Disk Access, Location, Bluetooth, or\n  Photos permissions as required by the modules you enable.\n- The self-contained AirMCP.app distribution embeds its fixed Node runtime and\n  the normal Swift bridge. The npm package and `.mcpb` do not embed the Swift\n  binary; users of those artifacts build it from source for Swift-backed tools.\n- FoundationModels-backed Apple Intelligence preview requires macOS 26+, Apple\n  Silicon, and `AIRMCP_ENABLE_FOUNDATION_MODELS`.\n\nThe macOS runtime is the current supported release. The iOS runtime is a\npreview; visionOS and watchOS are roadmap targets, not released products.\n\n## Documentation\n\n- [Tool manifest](docs/tool-manifest.json): generated list of registered tools.\n- [Workflows](docs/workflows.md): target workflows and prompt catalog.\n- [Skills DSL](docs/skills.md): YAML workflow syntax and built-ins.\n- [Shortcuts](docs/shortcuts.md): macOS App Intent actions and the iOS-only App Shortcuts surface.\n- [Environment variables](docs/environment.md): all runtime knobs.\n- [MCPB install](docs/mcpb.md): Claude Desktop extension package.\n- [OAuth browser PKCE](docs/oauth-browser-pkce.md): browser client setup.\n- [RFC index](docs/rfc/README.md): design records and architecture notes.\n- [Testing](docs/testing.md): development test workflow.\n- [Project direction](docs/direction.md): product direction and positioning.\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup, code style, and PR\nguidelines.\n\nFirst-time contributors can look for\n[`good first issue`](https://github.com/heznpc/AirMCP/labels/good%20first%20issue).\n\n## Community\n\n- [GitHub Discussions](https://github.com/heznpc/AirMCP/discussions)\n- [Issues](https://github.com/heznpc/AirMCP/issues)\n- [Changelog](CHANGELOG.md)\n\n## License\n\nMIT\n","readmeFilename":"README.md"}