Skip to main content
Glama
JFETA

simple-sticky-notes-codex

by JFETA

Simple Sticky Notes for Codex

Tests License: MIT

Integración local y no oficial que permite a Codex buscar, crear y organizar notas en Simple Sticky Notes 6.9.0.0 para Windows mediante MCP.

This is an unofficial community project. It is not affiliated with or endorsed by Simnet Limited.

Funciones

  • Consultar libretas y buscar notas activas.

  • Leer una nota por ID.

  • Crear notas y libretas.

  • Mover notas entre libretas.

  • Marcar o desmarcar favoritas.

  • Evitar duplicados al reintentar una creación con el mismo UUID.

  • Mostrar Markdown habitual de Codex como texto enriquecido: negrita, cursiva, código breve, enlaces, viñetas, tareas y listas numeradas; conservar emojis.

  • Reformatear una nota existente con una comprobación exacta del texto anterior.

  • Crear y actualizar notas con formato RTF explícito: fuentes, tamaños, estilos, colores, resaltado, alineación e interlineado.

El conector no expone SQL libre ni elimina notas. format_note solo modifica la presentación y el texto visible de una nota cuando el contenido actual coincide exactamente con expected_text.

Related MCP server: MCP Notes Server

Seguridad de las escrituras

Antes de modificar Notes.db, el servidor:

  1. comprueba la versión de la aplicación y el esquema SQLite;

  2. solicita un cierre normal de Simple Sticky Notes y aborta si no termina;

  3. crea un respaldo con marca temporal;

  4. aplica una sola transacción y ejecuta PRAGMA quick_check;

  5. reabre la aplicación si estaba abierta.

Los respaldos se guardan en %LOCALAPPDATA%\Codex\simple-sticky-notes\backups.

Requisitos

  • Windows 10 u 11.

  • Simple Sticky Notes 6.9.0.0.

  • Python 3.11 o posterior.

  • Codex CLI o Codex desktop con soporte MCP local.

Instalación

git clone https://github.com/JFETA/simple-sticky-notes-codex.git
cd simple-sticky-notes-codex
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1

El instalador crea .venv, instala las dependencias, registra el servidor MCP y copia la skill a ~/.codex/skills. Después, inicia una tarea nueva en Codex.

Para una ubicación personalizada de la base o del ejecutable, define SSN_DB_PATH y SSN_EXE_PATH en el entorno del servidor MCP.

Uso

  • Guarda este resumen en la libreta Trabajo y márcalo como favorito.

  • Busca mis notas que mencionen presupuesto.

  • Mueve las notas 12 y 14 a la libreta Ideas.

  • Da formato a la nota 19 para que se vea como en Codex.

create_note interpreta Markdown de forma predeterminada. Para mostrar los caracteres Markdown literalmente, indica format="plain". Las listas numeradas conservan sus números; las viñetas y casillas se muestran con símbolos Unicode. Los enlaces muestran su etiqueta y URL visible para conservar la dirección. No se promete reproducir tablas ni bloques complejos de la interfaz de Codex.

Para formatos que Markdown no expresa, create_note acepta format="rich_json". Su text es JSON con paragraphs y runs. Cada run admite font (Segoe UI, Consolas, Arial, Times New Roman), size (6–72 puntos), bold, italic, underline, strike, color y highlight. Los colores disponibles son black, red, blue, green, yellow, cyan, magenta, white y orange. Cada párrafo admite align (left, center, right), spacing (1, 1.5 o 2) y prefix. Por ejemplo:

{"paragraphs":[{"align":"center","runs":[{"text":"Aviso importante","bold":true,"size":16,"color":"yellow"}]},{"prefix":"1. ","runs":[{"text":"Revisar hoy","underline":true,"highlight":"green"}]}]}

format_rich_note aplica esa presentación a una nota existente solo si el texto visible sigue siendo exactamente el esperado. Los prefijos de listas se muestran como texto, no como estructuras editables de lista nativa.

Las herramientas de escritura requieren aprobación en la configuración incluida del plugin.

Desarrollo

py -3 -m venv .venv
.\.venv\Scripts\python -m pip install -e ".[dev]"
.\.venv\Scripts\python -m ruff check src tests
.\.venv\Scripts\python -m unittest discover -s tests -v

Consulta CONTRIBUTING.md para proponer cambios y SECURITY.md para reportar vulnerabilidades.

Compatibilidad y riesgos

El formato SQLite pertenece a una aplicación de terceros y no constituye una API pública. Esta versión rechaza otros esquemas y versiones. Conserva respaldos y prueba las actualizaciones de Simple Sticky Notes antes de habilitar escrituras.

Licencia

Código distribuido bajo la licencia MIT. Simple Sticky Notes y sus marcas pertenecen a sus respectivos propietarios.

Available Tools

9 tools
create_noteA

Create a note with native rich text.

Use format='plain' for literal text and a stable request_id for retries.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
titleYes
formatNomarkdown
starredNo
notebookYes
request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

There are no annotations, so the description carries the behavioral burden. It discloses that rich text is native, that 'plain' preserves literal text, and that request_id supports idempotent retries. It doesn't discuss authorization or failure behavior, but the key behavioral traits are present.

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?

Two tight sentences with no filler. The main purpose is front-loaded, and the second sentence adds the two most useful usage caveats without repetition.

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?

The description is usable for a simple create call, but it doesn't explain how notebook is specified or how this tool relates to formatting siblings like format_note and format_rich_note. The presence of an output schema reduces the need to describe return values, but the parameter guidance remains incomplete.

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 description compensates only for format ('plain' for literal text) and request_id (stable value for retries). The required parameters title, text, and notebook are left to their self-evident names, and notebook remains ambiguous about whether it expects an ID or name.

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?

The description names a specific verb ('Create'), a resource ('a note'), and a defining feature ('native rich text'). This clearly separates it from siblings like create_notebook, search_notes, and get_note.

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

Usage Guidelines4/5

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

It gives clear context for creating notes and adds practical guidance: use format='plain' for literal text and a stable request_id for retries. It doesn't explicitly name alternatives or exclusion conditions, so it stops short of a 5.

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

create_notebookA

Create a notebook. The operation is idempotent by case-insensitive notebook name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral burden. It discloses a meaningful trait: the operation is idempotent by case-insensitive notebook name. This is valuable and not evident from the schema alone, though it does not mention side effects or error behavior.

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 purpose and then adds a high-value behavioral detail. No words are wasted, and every clause contributes useful information.

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?

The tool is simple, has one required parameter, and has an output schema, so the description does not need to explain return values. However, the complete absence of usage guidance or relation to sibling tools leaves some ambiguity about when to invoke this tool, making it only minimally complete.

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%, so the description must compensate for the undocumented 'name' parameter. It partially does by explaining case-insensitive idempotency tied to the name, giving the parameter real semantic meaning. However, it does not clarify name format, uniqueness constraints beyond idempotency, or what value counts as a valid notebook name.

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 clear verb and resource: 'Create a notebook.' It also adds the idempotency constraint, making the operation well-defined. It does not explicitly differentiate from sibling tools like create_note, but the resource type is evident from the tool name and description.

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 gives no guidance on when to use this tool versus alternatives such as create_note or list_notebooks. The idempotency note is behavioral, not a usage directive, so an agent is left to infer appropriate invocation context.

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

format_noteA

Render existing Markdown as rich text when its body exactly matches expected_text.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes
expected_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 behavioral burden. It discloses the exact-match guard and the format operation, but does not state what happens when the body does not match, whether the Markdown is overwritten, or whether the operation is reversible.

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?

One sentence with no filler; the verb, resource, and precondition are front-loaded. Every word earns its place.

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 two-parameter tool with an output schema, the definition covers the key selection and invocation inputs. The main remaining gap is the mismatch/error behavior, which is implied by 'when' but not explicit.

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 schema has 0% property description coverage, and the description does add meaning: expected_text is the body text that must match, and note_id selects the existing note. However, it does not fully spell out note_id's role or the expected_text format beyond the match constraint.

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 action ('Render existing Markdown as rich text') and an explicit precondition ('when its body exactly matches expected_text'). The exact-match guard distinguishes it from sibling format_rich_note, so the agent can tell which formatting tool is meant.

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

Usage Guidelines4/5

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

The precondition gives a clear selection context: use this tool when the note body is expected to exactly equal expected_text. It does not explicitly name alternatives or say what to do on mismatch, but the conditional is strong enough to guide the agent.

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

format_rich_noteC

Apply explicit rich formatting to an existing note, guarded by its current visible text.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes
document_jsonYes
expected_textYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions a guard mechanism via 'current visible text', implying a precondition, but it does not explain what happens on mismatch, whether the operation is destructive, or any side effects. 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.

Conciseness5/5

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

The description is a single, tightly-worded sentence with no redundancy. Key elements are front-loaded and every word earns its place.

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

Completeness2/5

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

Given the tool has three required parameters, zero schema descriptions, and no annotations, the description is far too brief. It omits essential details about the document_json format, the exact guard behavior, and any prerequisites or side effects, making it difficult for an agent to invoke correctly.

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

Parameters2/5

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

Schema descriptions are completely absent (0% coverage), so the description must explain all parameters. It clarifies expected_text's role as a guard but leaves document_json (presumably the formatting payload) and note_id (self-evident but not described) underspecified. The format and semantics of document_json are entirely unexplained.

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: 'apply explicit rich formatting to an existing note'. It also adds a distinguishing feature ('guarded by its current visible text'), but it does not explicitly differentiate from the sibling tool format_note, which likely serves a related purpose.

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 use this tool versus format_note or other alternatives. No context, exclusions, or conditions are provided, leaving the agent to infer appropriate usage.

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

get_noteA

Get one note by numeric ID, including whether it is active or in trash.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 burden. It discloses that the response includes the note's active/trash state, which adds behavioral context. However, it does not mention permissions, errors, rate limits, or side effects, though as a 'get' operation it is implicitly read-only.

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?

A single sentence with no filler or repetition. The main action and a key response detail are front-loaded, making it easy to parse.

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?

Given the tool's simplicity (one required parameter, read-only operation) and the existence of an output schema, the description covers the essential behavior. It could note error handling or permissions, but for a basic get-by-ID tool it is reasonably complete.

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?

With 0% schema description coverage, the description must compensate for the single parameter. The phrase 'by numeric ID' confirms the parameter's type and role but adds little beyond the schema's integer type and note_id name. It does not explain edge cases or format expectations.

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?

The description clearly states it retrieves a single note by its numeric ID and indicates whether the note is active or in trash. This specific verb+resource combination distinguishes it from siblings like search_notes and list_notebooks.

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?

No explicit when-to-use or alternative routing is provided. The description implies it should be used when the caller already knows the note's numeric ID, but it does not reference sibling tools or mention any exclusions.

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

list_notebooksA

List notebooks and active-note counts from the local Simple Sticky Notes library.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 burden of behavioral disclosure. It states the action (listing) and the source (local library), which implies a read-only behavior, but it does not explicitly confirm that no modifications occur, nor does it mention any side effects or limitations. For a simple list operation, this is adequate but not exhaustive.

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, concise sentence that immediately conveys the main action and scope. It contains no filler or redundant information, and the key details (notebooks, counts, local library) are front-loaded.

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?

Given the tool's simplicity (no parameters) and the presence of an output schema, the description covers what the tool does. It does not specify whether all notebooks are returned or any ordering/filtering, but for a basic listing operation this is likely sufficient. The presence of an output schema reduces the need to explain return formats.

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 has zero parameters, and the schema coverage is trivially 100%. Per instructions, a baseline of 4 is appropriate since there is nothing for the description to add about parameter usage.

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?

The description clearly states a specific verb ('List') and resource ('notebooks and active-note counts'), and identifies the data source ('local Simple Sticky Notes library'). It is distinct from sibling tools that focus on notes (e.g., search_notes, get_note), so an agent can easily separate it from alternatives.

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 explicit guidance is provided about when to use this tool versus its siblings. While the function name and description make the purpose obvious, there is no mention of scenarios where a different tool would be preferred, nor any prerequisites or context for invocation.

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

move_notesB

Move one or more existing active notes to an existing notebook.

ParametersJSON Schema
NameRequiredDescriptionDefault
note_idsYes
notebookYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the behavioral disclosure. It states 'move' but does not explain side effects (e.g., whether the note is removed from the source notebook), error conditions (e.g., if a note or notebook does not exist), or any authorization requirements. The mutation aspect is clear, but deeper behavioral context is missing.

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 sentence with no redundancy. It is front-loaded with the action and resource, and every word contributes to meaning. Efficient and well-structured.

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

Completeness2/5

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

With no annotations and a low schema coverage, the description leaves significant gaps: it does not explain the return value, error handling, or what happens to the original note location. For a mutation tool, this is insufficient guidance for an agent to call it correctly without additional context.

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

Parameters2/5

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

Schema description coverage is 0%, so the description is the sole source of parameter meaning. It maps note_ids to 'one or more existing active notes' and notebook to 'an existing notebook', but it does not clarify whether notebook is a name or ID, or the exact format expected. This leaves ambiguity for the agent.

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?

The description states a specific action (move) on specific resources (existing active notes to an existing notebook). It clearly distinguishes from sibling tools like create_note, list_notebooks, or set_starred. The constraints 'existing active' and 'existing' add precision.

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 description implies the tool is for moving notes between notebooks but does not explicitly mention alternatives or when not to use it. It hints that only existing notes and notebooks are valid, which implies prerequisites, but does not direct the agent to list or search tools. No explicit exclusions or routing guidance.

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

search_notesA

Search active notes by title or plain text, optionally filtering by notebook and starred status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
notebookNo
starred_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses meaningful behavioral traits: it searches only 'active' notes (not archived/deleted), searches both title and plain text, and applies optional filters for notebook and starred status. These details go beyond the obvious and help an agent predict execution behavior.

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?

A single 17-word sentence that front-loads the verb and resource, states the search scope, and lists the filters with zero waste. Every word earns its place.

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?

The tool has four optional parameters and an output schema, so the description doesn't need to explain return values. It covers the core purpose and the main filters, but leaves minor gaps such as the default behavior of an empty query or the meaning of 'active.' These are not critical for invoking the tool correctly.

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%, so the description must compensate. It indirectly explains 'query' (title/plain text), 'notebook' (filtering by notebook), and 'starred_only' (starred status), but it does not mention 'limit' at all. This is partial compensation rather than full coverage.

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?

The description uses a specific verb ('Search') and resource ('active notes'), and clarifies scope ('by title or plain text'). It differentiates from siblings like list_notebooks and get_note, which serve different purposes (listing notebooks and fetching a single note).

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 description clearly conveys what the tool does, so when-to-use is implied (finding notes by text or filters). However, it does not explicitly contrast with alternatives like get_note or list_notebooks, nor does it state conditions for when not to use this tool.

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

set_starredA

Mark or unmark one or more existing active notes as starred.

ParametersJSON Schema
NameRequiredDescriptionDefault
starredNo
note_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses the core effect (toggling starred state) and a constraint (only existing active notes), but it does not mention failure behavior for invalid/inactive IDs, idempotency, permissions, or side effects beyond the star flag.

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 front-loaded sentence with no filler. Every word contributes to the operation and scope.

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?

The output schema covers return values, and the tool is simple, but with no annotations the description still omits failure behavior for invalid/inactive IDs and any side effects. It is adequate as a minimum-viable definition, but not richly instructive.

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. It adds meaning by specifying 'one or more' for note_ids, 'existing active' as a validity constraint, and 'mark or unmark' to clarify the starred boolean's effect. It does not explicitly name each parameter, but the mapping is clear.

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?

The description uses a specific verb ('Mark or unmark') and a specific resource ('existing active notes as starred'), making the operation unambiguous. The starred action is unique among the listed siblings, so an agent can distinguish it without opening the 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?

The description implies usage by restricting the target to 'existing active notes,' but it does not explicitly state when to prefer this tool over siblings or provide exclusions. No alternative tools or when-not-to-use guidance is given.

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 updatesv0.2.0
    • First observedcreate_note
    • First observedcreate_notebook
    • First observedformat_note
    • First observedformat_rich_note
    • First observedget_note
    • First observedlist_notebooks
    • First observedmove_notes
    • First observedsearch_notes
    • First observedset_starred

TDQS

A3.6/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but format_note and format_rich_note both modify note formatting and could initially confuse an agent. The descriptions clarify their different triggers and guards, so overall ambiguity is low.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_notebooks, create_note, move_notes). The naming is highly predictable and uniform.

Tool Count5/5

9 tools is well-scoped for a sticky notes server, covering listing, searching, getting, creating, formatting, moving, and starring operations without being overly large or too thin.

Completeness3/5

The set covers create, read, search, move, star, and format (as a form of update), but lacks delete operations for notes and notebooks, and no explicit update note content beyond formatting. This leaves notable lifecycle gaps that agents may hit.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers