Skip to main content
Glama
widisaadi

Windows Microsoft Sticky Notes MCP Server

by widisaadi

๐Ÿ’ก Why This Exists

Microsoft Sticky Notes is one of the most accessible daily scrapbooks on Windows, but it has no official public REST API. This MCP server interfaces directly with the native UWP SQLite database (plum.sqlite), enabling autonomous AI agents to:

  • ๐Ÿ“‹ Read today's scratchpad, to-do lists, and brainstorm notes.

  • ๐Ÿ“Œ Post daily agendas, schedules, or coding tasks straight to the user's desktop.

  • ๐Ÿ” Search across historical sticky notes instantly.

  • ๐ŸŽจ Color-code tasks by urgency using native Sticky Note themes.


Related MCP server: mor

โœจ Features

  • Full CRUD Support: Create, read, update (overwrite or append), and delete sticky notes.

  • Desktop Window Control: Open, close, minimize, or pin notes always-on-top.

  • Theme Color Management: Support for all native Sticky Notes colors (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal).

  • Markdown & Rich-Text Cleaner: Parses internal Sticky Notes block formatting (\id=..., \b, \strike, \l) into clean Markdown.

  • Safe & Non-blocking: Uses SQLite read-only mode (mode=ro) to prevent database locks while the Sticky Notes desktop app is actively running.

  • Safety First: Automatically creates a backup (plum.sqlite.mcp.bak) before any mutation.

  • Soft Delete & Trash Recovery: Default soft delete (DeletedAt timestamp) allows restoring accidentally deleted notes.

  • Batch Export: Export all active notes to Markdown or JSON.

  • Zero Heavy Dependencies: Pure standard library + mcp SDK.


๐Ÿ›  Available Tools

Tool

Description

Key Parameters

list_notes

List notes with summary metadata, theme, and preview

limit, offset, theme, is_open, include_deleted

get_note

Retrieve complete note by ID (clean Markdown + raw text)

note_id

search_notes

Search notes by keyword or phrase (case-insensitive)

query, limit, include_deleted

create_note

Create a new sticky note on Windows desktop

text, theme, is_open, is_always_on_top

update_note

Update text, append lines, change color, or toggle window state

note_id, text, append_text, theme, is_open, is_always_on_top

delete_note

Delete note (default: soft-delete to trash; optional permanent)

note_id, permanent

restore_note

Restore a soft-deleted note from trash

note_id

get_stats

Database statistics (active, open, trash, theme breakdown)

None

export_notes

Export all active notes to Markdown or JSON file

export_format, output_dir


๐Ÿš€ Quick Start

1. Requirements

  • Windows 10 or Windows 11

  • Python 3.10+

  • Microsoft Sticky Notes (pre-installed on Windows)

2. Run Directly with uvx

uvx sticky-notes-mcp

3. Or Run Locally via Python

git clone https://github.com/widisaadi/stickynotes-mcp.git
cd stickynotes-mcp
pip install mcp
python server.py

โš™๏ธ Client Configurations

Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "sticky-notes": {
      "command": "python",
      "args": [
        "C:\\path\\to\\stickynotes-mcp\\server.py"
      ]
    }
  }
}

Cursor

Add to .cursor/mcp.json or Global Cursor Settings:

{
  "mcpServers": {
    "sticky-notes": {
      "command": "python",
      "args": [
        "C:\\path\\to\\stickynotes-mcp\\server.py"
      ]
    }
  }
}

Hermes Agent

Add to ~/.hermes/config.yaml or your profile config:

mcp_servers:
  sticky-notes:
    command: python
    args:
      - "C:/path/to/stickynotes-mcp/server.py"

Windsurf / Roo Code / Cline

Configure via standard stdio command python with path to server.py.


๐Ÿ“‚ Database Path & Auto-Detection

By default, the server targets the standard Windows UWP package location:

%LOCALAPPDATA%\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite

To specify a custom database location (for testing or backups), set the environment variable:

set STICKY_NOTES_DB_PATH=C:\path\to\plum.sqlite

๐Ÿงช Testing

Run the included standalone test suite (exercises all 11 tool operations against an isolated scratch database copy):

python test_server.py

๐Ÿ“„ License

MIT License. See LICENSE for details.

Available Tools

9 tools
create_noteA

Create a new Microsoft Sticky Note.

Args: text: Note content (supports multiline plain text or markdown lists). theme: Color theme (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal). Default: Yellow. is_open: Display note window immediately on Windows desktop (default: True). is_always_on_top: Pin note always on top of other windows (default: False).

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
themeNoYellow
is_openNo
is_always_on_topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does usefully disclose side effects of the flags โ€” is_open "Display note window immediately on Windows desktop" and is_always_on_top "Pin note always on top" โ€” plus defaults. It says nothing about platform/account requirements, error behavior, or what happens on duplicate content, which leaves meaningful gaps 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.

Conciseness4/5

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

Front-loaded purpose sentence followed by a compact Args block; every line carries meaning and nothing is padded. The only mild redundancy is restating defaults that also appear in the schema, though that is justified given 0% schema coverage.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The four parameters are fully covered, and the Windows desktop hint covers the platform nuance for is_open. What is missing is failure/permission behavior and any note-creation side effects like where notes are persisted.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: all four parameters are explained with meaning and defaults, and theme enumerates the seven allowed values (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal) that the schema does not constrain via enum. This adds real value beyond the bare property titles.

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 opens with a specific verb+resource: "Create a new Microsoft Sticky Note." That immediately separates it from list/get/search/update/delete/restore siblings. It stops short of naming an alternative or scope boundary (e.g. vs. update_note), so it is clear but not sibling-differentiating.

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 body is entirely a parameter list; there is no statement of when to use this tool versus update_note or restore_note, and no prerequisites such as needing an existing notebook or signed-in account. An agent must infer the 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.

delete_noteA

Delete a Sticky Note. Defaults to soft-delete (recoverable). Set permanent=True for hard delete.

Args: note_id: The UUID of the note to delete. permanent: If True, permanently removes from SQLite; if False, moves to trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes
permanentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden, and it does disclose the key behavioral traits: the operation is soft-delete by default and recoverable, while permanent=True is a hard delete that removes the record from SQLite. It omits secondary behavior such as permission requirements, idempotency, or what happens when the note_id does not exist.

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

Conciseness4/5

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

The core behavior is front-loaded in the first sentence, and the Args block is compact. The Args section slightly duplicates the schema but is justified here because the schema carries no parameter descriptions.

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

Completeness4/5

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

An output schema exists, so return values need not be described. For a two-parameter mutation with no annotations, the description covers the destructive/recoverable distinction adequately, with only minor gaps around failure modes and permissions.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: note_id is described as the note's UUID and permanent is explained in terms of the concrete effect of each boolean value (trash vs SQLite removal). This meaningfully exceeds the bare schema types, though it is only two parameters and the explanation is brief.

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 states a specific verb and resource ('Delete a Sticky Note') and immediately clarifies the two operating modes (soft vs permanent). It is unambiguous about what the tool does, though it never names sibling tools like restore_note to sharpen the boundary between them.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The default-to-soft-delete behavior implies the common case and hints that recoverable deletion is the norm, which loosely connects to the restore_note sibling. However, there is no explicit when-to-use guidance, no stated prerequisites, and no direction toward alternatives such as restoring or updating a note instead.

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

export_notesB

Export all active Sticky Notes to a Markdown file or JSON dump.

Args: export_format: Export format - 'markdown' or 'json' (default: 'markdown'). output_dir: Target directory path. Defaults to user's Documents folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirNo
export_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full behavioral burden. It discloses that only 'active' notes are exported (useful scope info) and the default formats/directory, but says nothing about whether existing files are overwritten, file naming, permissions, or error behavior for a tool that writes to disk.

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

Conciseness4/5

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

The summary sentence is front-loaded and each param line adds concrete information. The 'Args:' block is slightly boilerplate but contains no filler.

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

Completeness4/5

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

For a simple two-optional-parameter export tool with an output schema present, the description covers purpose, both parameters, and their defaults. The only gap is file-write side-effect behavior, which is minor at this complexity.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it names the allowed export_format values ('markdown' or 'json') plus the default, and explains output_dir as the target path defaulting to the user's Documents folder. That adds real meaning beyond the bare schema types.

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?

States a specific verb (Export) and resource (all active Sticky Notes) plus the output forms (Markdown file or JSON dump), so the operation is unambiguous. It does not explicitly differentiate itself from siblings like list_notes or get_note, but the intent is clear enough to select it over them.

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 says what is exported but never states when to choose export_notes over list_notes/get_note, or any prerequisites. 'All active' implies a scope filter but there is no when-to-use or when-not-to-use guidance.

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

get_noteC

Get full content and details of a single Sticky Note by its UUID.

Args: note_id: The UUID of the sticky note.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
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 behavioral burden. 'Get' implies a read, but the description is silent on permissions, not-found behavior, and whether soft-deleted notes (a restore_note sibling exists) are returned; it adds only the modifier 'full content and details' beyond the schema.

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

Conciseness4/5

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

The description is short and front-loaded with the core action in the first sentence. The trailing 'Args:' block restates the parameter in a slightly redundant way but does no harm.

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?

For a single-record read with an output schema present, return values need not be described. Still, with no annotations, the definition leaves unaddressed whether missing/deleted notes raise an error and what the caller must have to read the note, which is thin for the surrounding CRUD toolset.

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?

Schema description coverage is 0% and the single parameter is documented only as 'Note Id'. The description adds the meaningful detail that note_id is a UUID, which the schema does not convey, but includes no format example, source, or error semantics for a bad ID.

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?

States a specific verb and resource ('Get full content and details of a single Sticky Note by its UUID'), and the word 'single' plus the UUID lookup implicitly separates it from list_notes/search_notes. It does not explicitly name a sibling or contrast scopes, so it falls just short of a 5.

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?

There is no guidance on when to call this versus list_notes, search_notes, or get_stats. The only inference an agent can draw is that a UUID is required, which the schema already makes mandatory; no alternatives or prerequisites are stated.

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

get_statsB

Get high-level summary statistics of Microsoft Sticky Notes database.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden, but it only does so implicitly: 'Get' signals a read-only, side-effect-free operation, which is the main trait that matters here. It does not disclose what the statistics cover (e.g., whether deleted or restored notes are counted, whether the scope is the whole database or a filtered subset), leaving a modest gap for a zero-argument tool.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or repetition of the title. It is efficient, though so terse that it could have absorbed one more clause of scope without losing conciseness.

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?

An output schema exists, so the description is not obligated to enumerate return values, and for a simple zero-arg read tool the current text is nearly sufficient. However, with no annotations and no statement of what 'high-level summary statistics' comprises or over what scope, an agent cannot predict the contents beyond the schema shape.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description correctly implies the call needs no input, matching the empty schema.

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 gives a specific verb ('Get') and resource ('high-level summary statistics of Microsoft Sticky Notes database'), which is clearly distinct from the note-level CRUD siblings. It stops short of explicitly contrasting itself with siblings like list_notes or search_notes, which could also surface aggregate-ish information, so it is clear but not fully differentiated.

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?

There is no guidance on when to reach for get_stats versus list_notes, search_notes, or export_notes. For a tool that exists purely to answer 'how many / how much' questions, a single sentence saying it is the aggregate-view entry point would have been easy and valuable, but it is absent.

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

list_notesB

List Microsoft Sticky Notes with summary metadata, theme, and text preview.

Args: limit: Maximum number of notes to return (default: 50). offset: Pagination offset (default: 0). theme: Filter by theme color (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal). is_open: Filter by open/closed status on desktop. include_deleted: Include soft-deleted notes (default: False).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
themeNo
offsetNo
is_openNo
include_deletedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It usefully explains pagination (limit/offset), the soft-delete toggle (include_deleted default False), and the shape of returned data, and 'List' implies read-only. It says nothing about authorization requirements, rate limits, or result ordering, so it is helpful but not complete for a zero-annotation tool.

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

Conciseness4/5

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

Front-loaded one-line summary followed by a compact per-parameter block. It repeats default values already encoded in the schema, which is minor redundancy, but nothing is buried or verbose.

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

Completeness4/5

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

An output schema exists, so return values need no further explanation, and the description correctly stays focused on filters, pagination, and soft-delete behavior. The only real gap is routing guidance against sibling tools, which the other dimensions already flag.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: all five parameters get meaning, defaults are stated, and theme gains an explicit enum list (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal) absent from the schema. The is_open gloss ('on desktop') is slightly vague but the other four are well specified.

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?

States a specific verb (List) and resource (Microsoft Sticky Notes) and even previews the returned fields (summary metadata, theme, text preview). It does not, however, explicitly disambiguate itself from search_notes or get_note, which an agent must infer from the verb alone.

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?

No when-to-use, when-not-to-use, or alternative routing is provided. The presence of search_notes as a sibling makes the omission notable, since the agent gets no signal on when to filter via search_notes instead of enumerating here.

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

restore_noteA

Restore a soft-deleted Sticky Note back to active desktop notes.

Args: note_id: The UUID of the note to restore.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully discloses that this only operates on soft-deleted notes and returns them to active desktop notes, but omits error behavior (note not found, note not deleted, idempotency) and permission requirements 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.

Conciseness4/5

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

Very short and front-loaded, with the core action stated before the Args block. It is efficient, though the Args block is slightly formal for a single self-evident parameter.

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?

An output schema exists, so return values need no explanation, and the action plus its one parameter are covered. However, the description leaves preconditions, error cases, and permission needs unstated for a mutation, which leaves clear gaps for an agent.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does document the sole parameter as the UUID of the note to restore. That adds meaning beyond the schema's bare 'Note Id' title, though it gives no format example.

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?

States a specific verb (restore) and resource (a soft-deleted Sticky Note), and clarifies the end state back to active desktop notes, which separates it from update_note/delete_note. It does not explicitly name or contrast a sibling, so it falls short of the top tier.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'soft-deleted' qualifier implies the required precondition, so usage is reasonably inferable, but there is no explicit when-to-use guidance, no statement that the note must already be soft-deleted, and no pointer to a sibling for finding deleted notes.

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

search_notesB

Search Sticky Notes by keyword or text pattern (case-insensitive).

Args: query: Search term or keyword. limit: Maximum results to return (default: 50). include_deleted: Include soft-deleted notes in search results (default: False).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
include_deletedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden, and it does disclose two useful traits: matching is case-insensitive and results can include soft-deleted notes, revealing the deletion model. It omits ordering, pagination/result-window behavior, and any read-only safety statement.

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

Conciseness4/5

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

Front-loaded single-sentence purpose followed by a compact Args block; every line maps to a parameter. The parentheticals (case-insensitive, defaults) are informative rather than padding.

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?

An output schema exists, so return values need not be explained, and all three parameters are covered. With zero annotations, however, the description should say more about result ordering, paging past the limit, and that the operation is read-only.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it defines query, limit (default 50), and include_deleted (default False) with the soft-delete meaning spelled out. It does not clarify pattern syntax, e.g., substring vs. token vs. wildcard matching.

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?

States a specific verb and resource ('Search Sticky Notes') plus matching semantics ('keyword or text pattern, case-insensitive'). It is clearly distinct from list_notes in intent, though it never names that sibling to explain the difference explicitly.

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?

No guidance on when to prefer this over list_notes or get_note, which are adjacent siblings. The only usable cue is implicit in the word 'Search' and the presence of a query parameter; no exclusions or prerequisites are given.

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

update_noteA

Update an existing note's text, append new lines, change theme, or toggle visibility.

Args: note_id: The UUID of the note to update. text: Overwrite entire note text. append_text: Append new lines to existing text (ignored if 'text' is provided). theme: New color theme (Yellow, Green, Pink, Purple, Blue, Grey, Charcoal). is_open: Open (True) or minimize/close (False) the note on desktop. is_always_on_top: Pin (True) or unpin (False) always on top.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
themeNo
is_openNo
note_idYes
append_textNo
is_always_on_topNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does add real value: it discloses the destructive overwrite semantics of 'text', and the precedence rule that 'append_text' is ignored when 'text' is supplied. However it never states that unlisted fields are left unchanged (partial vs. full update), nor anything about permissions or reversibility of visibility/theme changes.

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

Conciseness4/5

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

The one-line purpose is front-loaded, followed by a compact per-argument list with no filler. Slightly list-heavy, but every line maps to a distinct parameter, so nothing is wasted.

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

Completeness4/5

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

For a six-parameter mutation tool with an output schema (so return values need no explanation), the definition covers every argument and its semantics. The remaining gap is the partial-update contract โ€” whether omitted fields are preserved โ€” which an agent would want confirmed before calling.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate โ€” and it documents all six parameters, including the note_id UUID format, the overwrite-vs-append interaction, the enumerated theme values, and the True/False meaning of the two boolean flags. This is meaning the schema itself does not provide.

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

Purpose5/5

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

States a specific verb ('Update') and resource ('an existing note') and enumerates exactly which attributes can be changed (text, appended lines, theme, visibility). The word 'existing' plus the sibling set (create_note, get_note) makes the scope unambiguous without opening any schema.

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

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied โ€” you need a note_id, presumably obtained from list_notes/get_note/search_notes โ€” but there is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. Nothing misleading, but nothing that routes the agent among siblings either.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedcreate_note
    • First observeddelete_note
    • First observedexport_notes
    • First observedget_note
    • First observedget_stats
    • First observedlist_notes
    • First observedrestore_note
    • First observedsearch_notes
    • First observedupdate_note

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool serves a distinct purpose: list_notes for browsing, get_note for retrieving a single note, search_notes for querying, create_note for creation, update_note for modifications, delete_note for removal, restore_note for recovery, get_stats for aggregation, and export_notes for data extraction. There is no overlap in functionality, and the descriptions clearly delineate their roles.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., list_notes, get_note, search_notes, create_note, update_note, delete_note, restore_note, get_stats, export_notes), using snake_case throughout. This makes the toolset highly predictable.

Tool Count5/5

With 9 tools, the set is well-scoped for a Sticky Notes management server, covering CRUD operations, search, restore, stats, and export without redundancy. Each tool is necessary and no obvious tool is missing.

Completeness4/5

The surface covers the full lifecycle: create, read, update, delete (with soft/hard options), restore, list, search, stats, and export. Minor gaps exist, such as bulk operations or note tagging, but these are not essential for core workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to search, read, create, update, and remove personal markdown notes stored locally, providing persistent memory across sessions.
    7 npm
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read and write UpNote notes locally via SQLite and URL schemes, supporting search, creation, editing, and organization.
    19
    MIT