Skip to main content
Glama

notes_get

Retrieve a specific Apple Notes entry by its title, optionally specifying a folder to search within for targeted access to your macOS notes.

Instructions

[Apple Notes operations] Get a specific note by title

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the note to retrieve
folderNoOptional folder name to search in

Implementation Reference

  • Handler function that generates AppleScript code to retrieve a specific note by title from the Apple Notes application, optionally from a specific folder. Returns JSON with title, body, creation date, and modification date.
      const { title, folder = "" } = args;
      
      if (folder) {
        return `
          tell application "Notes"
            set folderList to folders whose name is "${folder}"
            if length of folderList > 0 then
              set targetFolder to item 1 of folderList
              set matchingNotes to notes of targetFolder whose name is "${title}"
              if length of matchingNotes > 0 then
                set n to item 1 of matchingNotes
                set noteTitle to name of n
                set noteBody to body of n
                set noteCreationDate to creation date of n
                set noteModDate to modification date of n
                
                set jsonResult to "{\\"title\\": \\""
                set jsonResult to jsonResult & noteTitle & "\\""
                set jsonResult to jsonResult & ", \\"body\\": \\"" & noteBody & "\\""
                set jsonResult to jsonResult & ", \\"creationDate\\": \\"" & noteCreationDate & "\\""
                set jsonResult to jsonResult & ", \\"modificationDate\\": \\"" & noteModDate & "\\"}"
                
                return jsonResult
              else
                return "Note not found: ${title}"
              end if
            else
              return "Folder not found: ${folder}"
            end if
          end tell
        `;
      } else {
        return `
          tell application "Notes"
            set matchingNotes to notes whose name is "${title}"
            if length of matchingNotes > 0 then
              set n to item 1 of matchingNotes
              set noteTitle to name of n
              set noteBody to body of n
              set noteCreationDate to creation date of n
              set noteModDate to modification date of n
              
              set jsonResult to "{\\"title\\": \\""
              set jsonResult to jsonResult & noteTitle & "\\""
              set jsonResult to jsonResult & ", \\"body\\": \\"" & noteBody & "\\""
              set jsonResult to jsonResult & ", \\"creationDate\\": \\"" & noteCreationDate & "\\""
              set jsonResult to jsonResult & ", \\"modificationDate\\": \\"" & noteModDate & "\\"}"
              
              return jsonResult
            else
              return "Note not found: ${title}"
            end if
          end tell
        `;
      }
    },
  • Input schema defining the parameters for the notes_get tool: required 'title' string, optional 'folder' string.
    schema: {
      type: "object",
      properties: {
        title: {
          type: "string",
          description: "Title of the note to retrieve"
        },
        folder: {
          type: "string",
          description: "Optional folder name to search in"
        }
      },
      required: ["title"]
    }
  • src/index.ts:35-35 (registration)
    Registers the 'notes' category (containing the 'get' script) with the AppleScriptFramework server.
    server.addCategory(notesCategory);
  • Constructs the full tool name as 'notes_get' from category 'notes' and script 'get' when listing tools.
    name: `${category.name}_${script.name}`, // Changed from dot to underscore
Behavior2/5

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 states the action ('Get a specific note') but doesn't cover critical aspects like error handling (e.g., what happens if the title doesn't exist), permissions, or return format. This leaves gaps for a tool that likely interacts with user data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Get a specific note') and specifies the method ('by title'). There is no wasted text, and it's appropriately sized for a simple retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no output schema) and high schema coverage, the description is minimally adequate. However, without annotations or output schema, it should ideally clarify behavioral traits like error cases or return format, but it doesn't, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear docs for 'title' (required) and 'folder' (optional). The description adds minimal value beyond this, only implying that 'title' is the primary lookup key. No additional syntax or constraints are provided, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('a specific note'), and specifies the retrieval method ('by title'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'notes_list' or 'notes_search', which also retrieve notes but with different approaches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'notes_list' (for listing all notes) or 'notes_search' (for searching by content). It lacks context about prerequisites, such as needing the exact note title, or exclusions, like not handling partial matches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

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/joshrutkowski/applescript-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server