apple-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@apple-mcpwhat are my reminders due today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
apple-mcp
MCP server for macOS Apple apps. Provides 28 read/write tools across Notes, Reminders, Calendar, Contacts, and Safari -- all running locally on your Mac via SQLite and JXA (JavaScript for Automation).
Install
Claude Code
claude mcp add apple -- npx @roebot0/apple-mcpClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"apple": {
"command": "npx",
"args": ["@roebot0/apple-mcp"]
}
}
}Related MCP server: Apple Notes MCP
Tools
Notes (8 tools)
Tool | Description |
| List notes with title, snippet, folder, and dates (paginated) |
| Search notes by keyword in title and snippet |
| Get full plaintext body of a note by exact title |
| List all folders with note counts |
| Get N most recently modified notes |
| Get all notes in a specific folder |
| Create a new note in a specified folder |
| Aggregate stats: total notes, per-folder counts, date range |
Reminders (6 tools)
Tool | Description |
| List all reminder lists with counts |
| Get reminders in a specific list |
| Get reminders due today, this week, or overdue |
| Search reminders by keyword across all lists |
| Create a new reminder with optional due date and priority |
| Mark a reminder as complete by name |
Calendar (5 tools)
Tool | Description |
| Get today's events across all calendars |
| Get events in a date range |
| List all calendars |
| Search events by title |
| Get next N upcoming events |
Contacts (5 tools)
Tool | Description |
| Search contacts by name, email, or company |
| Get full contact details by ID (emails, phones, etc.) |
| Get recently modified contacts |
| List contacts at a specific company |
| Contact count and top companies |
Safari (4 tools)
Tool | Description |
| Get recent browsing history |
| Search history by URL or page title |
| List bookmarks, optionally filtered by folder |
| Get all Reading List items |
Requirements
macOS (uses native SQLite databases and JXA automation)
Node.js >= 18
Full Disk Access required for Safari history -- grant it to your terminal app in System Settings > Privacy & Security > Full Disk Access
Notes, Reminders, Calendar, and Contacts work without Full Disk Access
How it works
Notes, Calendar, Contacts, Safari history: Read directly from local SQLite databases (read-only)
Notes create, Reminders (all), Notes get: Use JXA (
osascript -l JavaScript) to interact with the native appsSafari bookmarks/reading list: Parse the Bookmarks.plist file
No network requests. No API keys. Everything stays on your Mac.
Development
git clone https://github.com/AaronRoeF/apple-mcp.git
cd apple-mcp
npm install
npm run buildTo test locally with Claude Code:
claude mcp add apple -- node /path/to/apple-mcp/start-mcp-server.jsLicense
MIT
Available Tools
28 toolsapple_calendar_calendarsA
List all calendars.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must bear full burden. 'List' implies a read-only operation, which is appropriate, but the description does not explicitly state that no modifications occur or clarify any behavioral traits beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise at 3 words, front-loaded with the core purpose. Every word is necessary and adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool with no output schema, the description is complete. It tells exactly what the tool does, and sibling context makes its role clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, and schema description coverage is 100% (trivially). The description adds no parameter-level details, but none are needed. Baseline 4 for zero-parameter tools applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description 'List all calendars.' clearly states the action (list) and resource (calendars). It distinguishes from sibling tools that deal with events (e.g., apple_calendar_range, apple_calendar_search) by focusing on calendars themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. The simplicity implies usage for retrieving all calendar names, but no exclusions or context about siblings are provided, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_calendar_rangeC
Get events in a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (ISO 8601, e.g. 2025-03-01) | |
| end_date | Yes | End date (ISO 8601, e.g. 2025-03-31) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'Get events in a date range.' It does not disclose whether the operation is read-only (likely), any limits on event count, sorting order, or timezone handling. The description carries the full burden for behavioral disclosure and fails to do so.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no wasted words. It is appropriately concise for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two basic parameters, the description omits important context like pagination, result structure, timezone handling, or whether the date range is inclusive/exclusive. No output schema exists to compensate. The description is incomplete for an agent to fully understand behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, with ISO 8601 format hints. The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get events in a date range,' specifying verb, resource, and scope. However, it does not differentiate from sibling tools like apple_calendar_search or apple_calendar_upcoming, which also retrieve events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not clarify when to use this over apple_calendar_search for specific queries or apple_calendar_upcoming for a predefined future window.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_calendar_searchB
Search events by title.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword for event title | |
| limit | No | Max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It does not disclose behavior such as whether searches span all calendars, default limit, sorting, or result scope. The limit parameter is in schema but not mentioned in description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no waste. However, it is somewhat under-specified; adding structure (e.g., listing key parameters) would improve usability without reducing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input schema (2 params) and no output schema, the description is too minimal. It omits scope (all calendars?), default behavior, and co-usage with other calendar tools. More context is needed for effective agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters ('query' and 'limit'). The description's 'by title' matches 'query' but adds no new meaning beyond the schema's 'Search keyword for event title'. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search events by title' clearly identifies the verb (search), resource (events), and filter criterion (by title). It distinguishes from sibling tools like apple_calendar_range which focus on date-based retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like apple_calendar_range or apple_calendar_upcoming. The description lacks context for selection, leaving the agent to infer usage from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_calendar_todayA
Get today's events across all calendars.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states a simple retrieval operation without detailing aspects like sorting, timezone handling, or whether all-day events are included. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is front-loaded and communicates the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, output schema, and complexity, the description is functional but lacks details on return format, completeness, or edge cases. It is adequate for a simple tool but could provide more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%. The description adds meaning beyond the empty schema by specifying the temporal scope ('today') and cross-calendar scope. This justifies above baseline, though minimal param info is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'today's events', and the scope 'across all calendars'. It effectively distinguishes from sibling tools like apple_calendar_range or apple_calendar_upcoming by specifying the exact time frame and scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving today's events but does not explicitly state when to use this tool versus alternatives. No exclusion criteria or comparative guidance is provided, which is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_calendar_upcomingB
Get next N upcoming events from now.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of upcoming events (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It only states retrieval of upcoming events but does not mention default count, order, exclusion of past events, timezone handling, or whether current events are included. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence with no unnecessary words. Perfectly front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (single optional parameter, no output schema, no annotations), the description is too minimal. Lacks definition of 'upcoming', default behavior for count, and any behavioral notes. Incomplete for full understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds 'next N' which aligns with the count parameter but does not add meaning beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get next N upcoming events from now' clearly states the verb (Get), resource (upcoming events), and scope (from now, with count N). It distinguishes well from siblings like apple_calendar_range (date range) and apple_calendar_today (today's events).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings. Does not specify when not to use it or mention alternatives. The description provides no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_contacts_companyA
List contacts at a specific company.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes | Company/organization name | |
| limit | No | Max results (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It implies a read-only listing but does not disclose any behavioral traits like permissions, pagination, or ordering. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is direct and free of extra words. Every word serves the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacking output schema and annotations, the description is sparse. It does not indicate the return format or any behavior like default limits, but it's still functional for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers both parameters (100% coverage). The description does not add meaning beyond the schema; it only restates the company filter. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List contacts') and the scope ('at a specific company'), distinguishing it from sibling tools like apple_contacts_get or apple_contacts_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., apple_contacts_search for broader queries or apple_contacts_get for a specific contact).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_contacts_getA
Get full contact details by ID (Z_PK), including emails and phone numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Contact ID (Z_PK) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description states what is returned but lacks details on error behavior or access requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with front-loaded verb and resource, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple get-by-ID tool with one param and no output schema; mentions included fields, but could specify what 'full details' encompasses.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single 'id' parameter with 100% schema coverage; description reinforces 'Z_PK' but adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Get', resource 'contact details', identifier method 'by ID (Z_PK)', and included fields 'emails and phone numbers'. Distinguishes from siblings like search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage when contact ID is known, but no explicit when-to-use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_contacts_recentB
Get recently modified contacts.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of recent contacts (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like what 'recently' means (time window), whether the tool is read-only, and what the output looks like. It fails to do so, offering only a minimal statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that is efficient. However, it may be too terse given the lack of other information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description fails to specify the return format (e.g., list of contact objects or IDs) or ordering. The tool is simple, but the description should provide basic completeness for an agent to understand the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter 'count' is already fully described in the input schema (100% coverage), so the description adds no extra semantics. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves recently modified contacts, which is a specific verb-resource pair that distinguishes it from sibling tools like apple_contacts_get, apple_contacts_search, and apple_contacts_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives such as apple_contacts_search or apple_contacts_get. The description does not indicate prerequisites or explicit use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_contacts_searchB
Search contacts by name, email, or company.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (matches name, email, or company) | |
| limit | No | Max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the search fields but omits key traits: whether it is read-only (presumed), what is returned (list of contacts? specifics?), pagination behavior, case sensitivity, or ordering. For a search tool, these are important for the agent to understand the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundancy. Every word carries meaning, and it is as concise as possible while communicating the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with two parameters and no output schema, the description is minimally adequate. It covers what fields are searched. However, it does not specify the return format, empty-result behavior, or any filtering nuances. Given the tool's low complexity, this is a marginal score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both 'query' and 'limit' have descriptions in the schema). The description adds no new meaning beyond the schema: 'search by name, email, or company' is already captured by the schema's 'matches name, email, or company' for the query parameter. The limit parameter is self-explanatory. Baseline 3 is appropriate as the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Search contacts by name, email, or company' clearly states the verb (search), resource (contacts), and specific searchable fields. It distinguishes from siblings like apple_contacts_get (which retrieves a specific contact) and apple_contacts_company (which likely filters by company), making the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like apple_contacts_get, apple_contacts_company, or apple_contacts_recent. It lacks any when-not-to-use or prerequisite information, which is needed for proper selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_contacts_statsA
Contact count and top companies by contact count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only discloses the output (count and top companies). It omits behavioral details like whether this is a live query, a snapshot, or requires specific permissions, leaving behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is appropriately concise for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers the basic purpose, it lacks specifics such as the format of the output, how many top companies are returned, or whether the count is total or grouped. Given no output schema, these details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty (no parameters), and schema description coverage is 100% vacuously. The description adds meaning by explaining the output semantics, which goes beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns 'contact count and top companies by contact count,' which is a specific verb+resource (stats on contacts) and distinguishes it from sibling tools like search or get.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidance is provided. The description does not indicate when to use this tool versus alternatives such as apple_contacts_search or apple_contacts_get, leaving the agent to infer context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_by_folderA
Get all notes in a specific folder by folder name.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes | Folder name | |
| limit | No | Max results (default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the operation is reading all notes in a folder, but omits details like whether it returns full note content, sorting order, pagination behavior, or error handling for invalid folder names. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence (10 words) with no redundancy. However, it could be slightly more informative without sacrificing conciseness, e.g., mentioning it returns a list of notes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 2 params, no output schema, and no annotations. The description explains the primary function but does not specify return format, constraints (e.g., 'only notes from default account'), or behavior when the folder is empty. Adequate for an agent but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described ('Folder name', 'Max results (default 50)'). The description adds no extra meaning beyond the schema; it does not clarify folder name case-sensitivity or limit boundary. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get all notes'), resource ('notes'), and scope ('in a specific folder by folder name'). It effectively distinguishes from siblings like apple_notes_list (no folder filter) and apple_notes_search (search by content).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a folder name is known but provides no explicit guidance on when to use this tool versus alternatives like apple_notes_search or apple_notes_get. No 'when not to use' or mention of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_createB
Create a new note in Apple Notes. Uses JXA.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Note title | |
| body | Yes | Note body text | |
| folder | No | Target folder name (default "Notes") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only states 'Uses JXA' without behavioral details like side effects, permissions, or failure modes. For a write operation, more transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose. The second sentence ('Uses JXA') is minor but not wasteful. Overall concise and structured well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple create operation and complete schema, the description is minimal but sufficient. However, it lacks info on return values or folder requirements, reducing completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). The description adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Create a new note in Apple Notes', specifying the verb (create) and resource (note). Differentiates from sibling read tools like apple_notes_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly indicates when to use (to create a note) but lacks explicit guidance on when not to use or alternatives. The name and description make the purpose clear, so it's adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_foldersA
List all Apple Notes folders with note counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states it lists folders with counts, omitting behavioral traits such as output format, sorting, authentication needs, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no wasted words, front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple, but description lacks details about output structure (e.g., names, IDs, counts) and does not mention pagination or limits, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%; description adds no parameter info, but baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'list' and resource 'folders' with detail 'note counts', clearly distinguishing from siblings like apple_notes_list which likely list notes, not folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like apple_notes_by_folder or apple_notes_list; lacks context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_getA
Get the full plaintext body of a note by its exact title. Uses JXA to read from Apple Notes app.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Exact title of the note |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description mentions JXA but fails to disclose whether operation is read-only, requires app access, or has latency implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous information, efficiently conveying core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple getter with one parameter, but missing details on return format and potential failure cases like missing notes or app unavailability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already defines 'title' with description; tool description reinforces exact match requirement but adds no new semantic value beyond schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves the full plaintext body of a note by exact title, distinguishing it from search or list tools that don't return full content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates exact title is required, but doesn't specify when to use alternatives (e.g., search if title is unknown) or provide preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_listB
List notes with title, snippet, folder name, and dates. Returns a paginated JSON array.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max notes to return (default 20) | |
| offset | No | Number of notes to skip (default 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only mentions pagination but does not disclose other behaviors like rate limits, auth needs, or any side effects. The burden falls entirely on the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, directly to the point, no filler. Efficiently conveys core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with two parameters and no output schema. However, could specify date format or pagination details. With many sibling tools, more context would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description adds no additional parameter context beyond what schema provides, so baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists notes with specific fields (title, snippet, folder name, dates) and returns a paginated JSON array. It distinguishes from siblings like apple_notes_search and apple_notes_get, but does not explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like apple_notes_search (filtered) or apple_notes_by_folder. No mention of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_recentB
Get the N most recently modified notes.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of recent notes (default 10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states functionality. It does not disclose what data is returned (e.g., metadata, content), potential limits, or impact of the tool, leaving significant behavioral traits unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is appropriately concise for a simple tool. It front-loads the action and resource, but could benefit from slightly more detail without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description does not explain what the tool returns (e.g., note titles, content, modification dates). For an agent to use it correctly, more information about the output is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'count' already described as 'Number of recent notes (default 10)'. The description's mention of 'N' adds no additional meaning, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get the N most recently modified notes' clearly states a specific verb 'Get' and resource 'notes' with a distinct filter 'most recently modified', differentiating it from sibling tools like apple_notes_list or apple_notes_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for recent notes but provides no explicit guidance on when to use it instead of alternatives, nor any exclusions. Context from sibling tools helps, but the description itself lacks direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_searchA
Search notes by keyword in title and snippet text.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword | |
| limit | No | Max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It explicitly states that search is limited to 'title and snippet text,' which is a significant behavioral constraint. However, it does not mention default limit behavior or result ordering, which would enhance transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It efficiently conveys the core purpose and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description adequately explains the search function and scope. However, it lacks details on output format and the impact of the limit parameter, which are not covered by the schema (no output schema) and would benefit from elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for both parameters (query and limit) with 100% coverage. The description adds no additional semantic value beyond the schema, so it meets the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'notes', and the scope 'by keyword in title and snippet text', which effectively distinguishes it from sibling tools like 'apple_notes_list' (listing all notes) and 'apple_notes_get' (retrieving a specific note).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (keyword search) but provides no explicit guidance on alternatives or when not to use it. Siblings like 'apple_notes_by_folder' or 'apple_notes_recent' are not mentioned, leaving the user to infer the best tool for their context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_notes_statsA
Get aggregate statistics: total notes, notes per folder, date range.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits such as read-only nature, permissions required, or performance characteristics. For a stats tool, it omits crucial transparency beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently conveys the tool's output without unnecessary words. Perfectly structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and the simple nature of a stats tool, the description sufficiently covers what the tool returns. Could be expanded with a note about data scope, but adequate for its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters with 100% schema coverage. Description adds no parameter info because none exist, but the baseline for 0 params is 4. No additional meaning is needed beyond the purpose statement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states specific verb ('Get') and resource ('aggregate statistics') and lists exactly what is returned: total notes, notes per folder, date range. This clearly distinguishes it from sibling tools like 'apple_notes_list' (lists notes) and 'apple_notes_by_folder' (notes by folder).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage: use when aggregate statistics are needed. No explicit when-to-use or when-not-to-use guidance, nor comparison to alternatives. Lacks direction for AI agent to differentiate among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_completeA
Mark a reminder as complete by name. Optionally narrow search to a specific list.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Reminder name to mark complete | |
| list_name | No | List name to narrow search (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states the action but does not mention side effects (e.g., modification of state), error behavior (e.g., if reminder not found), or whether the operation is reversible. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. Every word serves a purpose. The structure is front-loaded with the core action and then the optional nuance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description is adequate but could be improved. It lacks information on return values, error handling, or behavior for edge cases (e.g., duplicate names). No output schema means the description should clarify what the agent can expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal value beyond the schema. It clarifies that list_name is optional for narrowing search, but this is already implied by its optionality in the schema. No additional semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Mark a reminder as complete') and the resource ('reminder by name'). It effectively distinguishes from sibling tools like apple_reminders_create, apple_reminders_due, and apple_reminders_search, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (when you want to complete a reminder) but does not explicitly state when not to use or provide alternatives. It lacks guidance on scenarios like marking already-complete reminders or handling non-existent names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_createB
Create a new reminder in Apple Reminders.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Reminder name/title | |
| list_name | No | Target list name (default: first list) | |
| due_date | No | Due date as ISO 8601 string (optional) | |
| priority | No | Priority: "high", "medium", "low", or "none" (default "none") | |
| body | No | Notes/body text (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only says 'Create' but does not disclose side effects, required permissions, or behavior for invalid inputs. With no annotations, more behavioral detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but could be improved with additional context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks details on return value, error handling, or integration with Apple Reminders. With no output schema, the description should provide more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have clear descriptions in the schema (100% coverage). The description adds no additional meaning beyond what is already in the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new reminder in Apple Reminders'). It distinguishes from sibling tools like apple_reminders_complete and apple_reminders_search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it does not explain when to create vs. complete or search reminders.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_dueA
Get reminders due today, this week, or overdue. Only returns incomplete reminders.
| Name | Required | Description | Default |
|---|---|---|---|
| range | No | Date range: "today", "week", or "overdue" (default "today") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that only incomplete reminders are returned, which is useful. However, without annotations, it does not detail other behavior like response format, pagination, or whether it returns all fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, lean sentence with no unnecessary words, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is reasonably complete. It explains the purpose and the filtering criteria. Minor gaps remain, such as not specifying the return fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter with a clear description. The tool description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves reminders due in specific time ranges (today, week, overdue) and only returns incomplete reminders. It distinguishes from siblings like apple_reminders_list (which likely lists all) but could explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when needing due reminders), but provides no explicit guidance on when not to use it or which alternatives to consider, such as apple_reminders_search for flexible queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_listA
Get all reminders in a specific list. Returns name, completed, due date, priority, and notes for each.
| Name | Required | Description | Default |
|---|---|---|---|
| list_name | Yes | Name of the reminder list | |
| include_completed | No | Include completed reminders (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It indicates that the tool retrieves data (read operation) and lists specific fields, but does not elaborate on behavior like sorting, pagination, or whether only active reminders are returned by default (though include_completed parameter is documented). For a simple read tool, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and return value. Every word is meaningful; no filler or redundancy. It is highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema, no nested objects), the description covers the primary purpose and return fields. However, it omits the optional parameter 'include_completed' in the description, which would improve completeness. No mention of result limits or sorting. Adequate for a basic list tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters documented). The description does not add any additional semantics beyond what the schema already provides. It does not mention the 'include_completed' parameter, which is an optional but important control. Since schema already covers basics, score at baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Get', the resource 'all reminders in a specific list', and lists the returned fields (name, completed, due date, priority, notes). It distinguishes from sibling tools like apple_reminders_complete or apple_reminders_create, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for listing reminders in a specific list, but does not provide explicit guidance on when to use this tool versus alternatives such as apple_reminders_search for filtered results or apple_reminders_due for due-dated reminders. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_listsA
List all reminder lists with reminder counts. Returns a JSON array of {name, count}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It states it returns a JSON array of {name, count}, which is read-only behavior, but does not explicitly label it as read-only or mention any potential side effects. For a list operation, this is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two clear sentences, no wasted words. It is front-loaded with the core purpose and includes essential return type information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and no annotations, the description covers the essential behavior: listing all reminder lists with counts. Minor gaps exist (e.g., no mention of ordering, empty list behavior, or user scope), but it is largely complete for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the input schema is fully covered. Per rubric, baseline is 4. The description adds value by specifying the return format, which aids the agent in understanding output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all reminder lists with reminder counts' and specifies the return format. The verb 'List' and resource 'reminder lists' are specific, and it distinguishes from sibling tools like apple_reminders_list (which likely lists reminders within a list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like apple_reminders_list, apple_reminders_search, or apple_reminders_due. It does not mention context, prerequisites, or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_reminders_searchA
Search reminders by keyword across all lists (case-insensitive name match).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword | |
| include_completed | No | Include completed reminders (default false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry the burden. It mentions case-insensitive name matching but does not disclose other behavioral aspects like read-only nature, potential pagination, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence front-loads the core purpose. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no output schema, the description is adequate but lacks details like return format or example usage. Completeness is minimally acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters (query, include_completed) with descriptions. The description adds no new parameter semantics beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (search), resource (reminders), scope (across all lists), and a key behavioral detail (case-insensitive name match). It effectively distinguishes from sibling tools like apple_reminders_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description simply states functionality without providing context for selection among siblings like apple_reminders_due or apple_reminders_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_safari_bookmarksA
List Safari bookmarks. Optionally filter by folder name.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No | Filter by folder name (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the basic operation (list and optional filter) but does not mention the return format, whether it's read-only, or any behavioral traits like pagination or performance. Adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that immediately conveys the purpose. It is front-loaded and contains no redundant or superfluous information. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is fairly complete but lacks details on the return value structure. The agent must infer the output format from context, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the parameter 'folder' as 'Filter by folder name (optional)'. The description repeats this verbatim, adding no new meaning. With 100% schema coverage, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Safari bookmarks', with an optional filter by folder. This distinguishes it from sibling tools like apple_safari_history and apple_safari_reading_list, which are for different Safari data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not advise when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. The differentiation is only implied through the tool name and sibling naming.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_safari_historyB
Get recent Safari browsing history. Returns URLs, titles, visit times.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max entries to return (default 30) | |
| days | No | How many days back to look (default 7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only mentions return fields. Does not disclose read-only nature, permissions, or any side effects. For a read operation, minimal but acceptable given schema coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences are efficient and front-loaded. No filler, but could benefit from bullet points for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers basic purpose and return fields, but lacks usage context, alternative suggestions, or behavioral details. Adequate for a simple parameter set with full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds no extra meaning beyond the schema comments. Both 'limit' and 'days' are self-explanatory with defaults given in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets recent Safari browsing history and returns URLs, titles, and visit times. It distinguishes from siblings like bookmarks, reading list, and search history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use versus alternatives such as apple_safari_search_history. The description is purely declarative without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_safari_reading_listA
Get all items from Safari Reading List.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It only says 'get all items', but does not mention read-only nature, output format, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no waste, front-loaded with action and target.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple no-param tool, but lacks details like order, format, or limitations that could be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, so schema coverage is 100%. Baseline is 4; description adds no parameter details but is sufficient given zero params.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get all items from Safari Reading List' with a specific verb and resource, and it is distinct from sibling tools like bookmarks and history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as safari bookmarks or search history. The description is too minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apple_safari_search_historyB
Search Safari browsing history by URL or page title keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keyword (matches URL, domain, and title) | |
| limit | No | Max results (default 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavior. It accurately states the search functionality and matches the schema's mention of matching URL, domain, and title. However, it does not disclose potential issues like pagination, sorting, or the fact that it only searches history, not bookmarks or reading lists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 11 words, making it very concise. It is front-loaded with the core action. However, a tiny bit more detail on output or default behavior would improve it without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (2 params, no output schema), the description covers the basics. However, it fails to mention anything about the return format, which is expected since no output schema exists. This gap reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond what the schema already provides. It restates the purpose of the query parameter but offers no additional context for the limit parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search', the resource 'Safari browsing history', and the method 'by URL or page title keyword'. It effectively distinguishes from sibling tools like apple_safari_history, which lists all history without search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. While the sibling apple_safari_history implies a distinction, the description itself lacks any when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action within its domain (calendar, contacts, notes, reminders, safari). For instance, calendar tools separate listing calendars, querying date ranges, searching by title, today's events, and upcoming events without overlap. Similarly, contacts have distinct tools for search, get by ID, recent, company filter, and stats.
All tools follow the consistent pattern `apple_<domain>_<action>` in snake_case, e.g., `apple_calendar_calendars`, `apple_contacts_search`, `apple_notes_create`. No mixing of camelCase or other conventions, making it predictable for an agent.
With 28 tools covering five major Apple apps, the count is on the higher end but not excessive for the broad scope. Each tool has a clear purpose, though some domains could be split into separate servers for better focus.
The tool set is heavily read-oriented with only two create tools (notes and reminders) and no update or delete capabilities. Missing CRUD operations for calendars, contacts, and safari, which limits agent ability to perform full lifecycle tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for Apple Calendar, Mail, Reminders, and Files on macOS using native frameworks.4218MIT
- AlicenseNot gradedqualityDmaintenanceComprehensive Apple Notes MCP server for local macOS note management.433MIT
- AlicenseNot gradedqualityCmaintenanceA collection of MCP servers for Apple macOS apps (Mail, Contacts, Notes, Memory, Messages, Calendar, Reminders) enabling AI assistants to read, search, create, and update data via JXA, SQLite, and EventKit.24MIT
- AlicenseBqualityBmaintenanceLocal MCP server for macOS native apps: Mail, Calendar, Reminders, Notes, Messages, and Contacts. Enables reading and organizing your Mac life through a single stdio process using AppleScript/JXA.4027MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AaronRoeF/apple-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server