Reported issues for airmcp
Pod holds 14 of 14 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to airmcp.
Most discussed
bug: "custom" profile unrecognized at runtime — falls back to "starter", ignoring disabledModules
Description
When a user selects a custom set of modules via npx airmcp init (one that doesn't match any predefined profile), config.json is saved with "profile": "custom" and a disabledModules list. At runtime, however, "custom" is not recognized as a valid profile name, causing normalizeProfileName("custom") to return null. The fallback logic in parseConfig() then sets activeProfile = "starter", which overrides the disabledModules from the config file and only enables th
Read the thread · 2026-06-30 · closed · external user · 2 comments
list_notes, search_notes, list_reminders, search_reminders fail with output validation error; update_note approval prompt never surfaces
Environment
AirMCP: latest via npx airmcp macOS: 26.3.1 Node.js: 25.8.2 MCP Client: Claude Desktop (Cowork mode) npx airmcp doctor: 19 passed, 2 warnings (Swift bridge not built, npm registry check)
Bug 1: Output validation errors on list/search tools list_notes, search_notes, list_reminders, and search_reminders all fail with: MCP error -32602: Output validation error: Tool [tool_name] has an output schema but no structured content was provided These tools declare an output schema, but the se
Read the thread · 2026-03-28 · closed · external user · 2 comments
docs: refresh CONTRIBUTING.md against the current registration and drift workflow
Problem
CONTRIBUTING.md describes an older development contract in several places:
- it tells contributors to register tools with
server.tool(), while current modules useserver.registerTool() - it hard-codes an old aggregate catalog count in the review section
- its new-tool steps point contributors at manual count and landing-page updates.
README.mdand thedocs/site/**pages listed inscripts/count-stats.mjsare now owned by generated drift guards, so those manual steps shoul
Read the thread · 2026-07-29 · closed · 1 comment
docs: keep contribution templates in sync with MODULE_MANIFEST
Problem
The public bug/feature forms and PR checklist have drifted from src/shared/modules.ts.
Examples:
- the issue forms omit
speech,health,memory,audit,spatial_prep,webhooks, andpowerautomate - the PR checklist omits several current modules and still contains the older
Semanticlabel
A contributor reporting or changing a current module cannot select the right area.
Scope
- Update both issue-form module dropdowns and the PR template so every entry in `MODULE
Read the thread · 2026-07-29 · closed · 1 comment
Add get_wifi_status tool to system module
What
Add a `get_wifi_status` tool to the system module that returns Wi-Fi network name, signal strength, and connection state.
How
- Add a script to `src/system/scripts.ts`: ```javascript // Use networksetup or system_profiler via doShellScript app.doShellScript('networksetup -getairportnetwork en0') ```
- Register tool in `src/system/tools.ts` with `readOnlyHint: true`
- Add test in `tests/system-scripts.test.js`
Acceptance Criteria
- Returns `{
Read the thread · 2026-03-15 · closed · 1 comment
Document all environment variables in README
What
Add an "Environment Variables" section to the README listing all `AIRMCP_*` and `GEMINI_API_KEY` variables with descriptions and defaults.
Why
The variables are defined in `src/shared/constants.ts` and `src/shared/config.ts` but there's no user-facing reference. Users have to read source code to discover configuration options.
How
- Grep `src/shared/constants.ts` and `src/shared/config.ts` for all `process.env` references
- Create a table in README with: Vari
Read the thread · 2026-03-15 · closed · 1 comment
Improve error messages when macOS permissions are missing
What
When a tool fails because of missing macOS permissions (Automation, Full Disk Access, etc.), the error message should clearly tell the user which permission is needed and how to grant it.
Current Behavior
JXA throws generic errors like `osascript error: Application isn't running` or `-1743` (permission denied).
Expected Behavior
Catch common JXA error codes and return actionable messages:
- `-1743`: "Permission denied. Grant Automation access: System Settings > Privacy
Read the thread · 2026-03-15 · closed · 1 comment
Add get_battery_status tool to system module
What
Add a get_battery_status tool to src/system/tools.ts that returns battery level, charging state, and power source.
Why
Users frequently want AI to check battery before starting long operations. This is one of the most requested system info tools.
How
- Add a JXA script to
src/system/scripts.ts:const app = Application.currentApplication(); app.includeStandardAdditions = true; const raw = app.doShellScript('pmset -g batt'); // Parse battery p
Read the thread · 2026-03-15 · closed · 1 comment
Most recent
bug(finder): recent_files always returns 0 results — $time is shell-expanded inside the mdfind query
Summary
recent_files returns {"total": 0, "files": []} for every input, including an explicit absolute folder. The mdfind query is malformed before it reaches mdfind.
This is separate from the folder default problem (filed separately); fixing that one alone does not fix this.
Environment
- airmcp 2.16.5 (installed via
npm install -g airmcp) - macOS 26.5 (Darwin 25.5.0), Apple Silicon
Reproduction
| arguments | result |
|---|---|
{"days": 2, "limit": 3} |
total: 0 |
Read the thread · 2026-08-21 · open · external user · 0 comments
test(finder): add script ↔ outputSchema shape contract (*_EXAMPLE) for finder JXA scripts
Problem
tests/script-shape-contract.test.js guards against a silent drift class: scripts.ts changing the JSON it emits without the matching outputSchema update (or vice versa). Runtime tests mock runJxa, so the mock return value becomes structuredContent verbatim — they cannot catch this drift.
That contract currently exists only for messages, shortcuts, and health. The finder module has outputSchema-bearing tools (list_directory, search_files, recent_files, get_file_info) w
Read the thread · 2026-07-29 · closed · 0 comments
test(reminders): add script ↔ outputSchema shape contract (*_EXAMPLE) for reminders JXA scripts
Problem
tests/script-shape-contract.test.js guards against a silent drift class: scripts.ts changing the JSON it emits without the matching outputSchema update (or vice versa). Runtime tests mock runJxa, so the mock return value becomes structuredContent verbatim — they cannot catch this drift.
That contract currently exists only for messages, shortcuts, and health. The reminders module has outputSchema-bearing tools (list_reminders, search_reminders, read_reminder, list_rem
Read the thread · 2026-07-29 · closed · 0 comments
test(calendar): add script ↔ outputSchema shape contract (*_EXAMPLE) for calendar JXA scripts
Problem
tests/script-shape-contract.test.js guards against a silent drift class: scripts.ts changing the JSON it emits without the matching outputSchema update (or vice versa). Runtime tests mock runJxa, so the mock return value becomes structuredContent verbatim — they cannot catch this drift.
That contract currently exists only for messages, shortcuts, and health. The calendar module has outputSchema-bearing tools (list_events, read_event, search_events, get_upcoming_event
Read the thread · 2026-07-29 · closed · 0 comments
docs: repair stale testing-guide paths and dependency guidance
Problem
The documentation-site testing guide has stale examples that no longer match the repository:
- it lists
tests/scripts.test.js, which does not exist - several example filenames no longer describe the current suite layout
- the TypeScript OOM section says AirMCP pins Zod 3.24, while the project now uses Zod 4
- some Jest command examples should be checked against the installed Jest CLI
The root testing guide and the site guide consequently give contributors different instructions.
Read the thread · 2026-07-29 · closed · 0 comments
Calendar tools can return empty results after permission grant because EventKit store is not refreshed
AirMCP Version
2.11.0
Module
calendar
What happened?
Summary
First is first: I am not a programmer or use github. I asked Hermes to fix the issue a generate a report. So this is it. If you find it useful I can report another bug it detected.
On macOS, AirMCP calendar access can appear to succeed, but list_calendars returns an empty list ([]) even though the user has multiple calendars, including normal local and remote/subscribed calendars.
This appears to be a Swift/
Read the thread · 2026-04-24 · closed · external user · 0 comments
The remaining reports are on the project's issue tracker.