Skip to main content
Glama

List recent notes

list_recent_notes
Read-only

List the user's notes, most recently touched first — the same order as the app's stream, so "recent" means the same thing in both. Returns thread heads only unless you ask for continuations. Bodies and complete imported source metadata are omitted unless you pass full=true. Compact notes come back as { id, label, user_text, tags, source, root_id, parent_id, is_thread_head, thread_count, updated_at, … }. user_text is only text deliberately written by the user; imported page or social-post copy is source metadata. label names the note even when it has no title — use it when showing a note to a human. updated_at is what you pass back as if_updated_at when you write.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fullNoInclude note bodies. Default false.
limitNoMax results (default 20, max 100)
orderNoDefault updated (last activity), matching the app.
offsetNoSkip this many results, for paging
archivedNoDefault exclude.
include_continuationsNoInclude notes that continue a thread as separate rows. Default false — read a thread with get_note instead.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
errorNo
notesNo
noticeNoPresent when this listing is shorter than the account actually holds.
withheldNoHow many notes exist that this connection cannot see, because it reads only part of a large collection. Present only when greater than zero. The notes still exist inside NoteMCP — treat the listing as partial.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / withheld / description
      Previous value: -"How many notes exist that this connection cannot see, because the account's free plan limits how many a connected assistant may read. Present only when greater than zero. The notes still exist inside NoteMCP — treat the listing as partial."New value: +"How many notes exist that this connection cannot see, because it reads only part of a large collection. Present only when greater than zero. The notes still exist inside NoteMCP — treat the listing as partial."
  2. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description discloses meaningful behavior: bodies and imported metadata are omitted unless full=true, thread-head filtering is default, and it explains the semantics of user_text, label, and updated_at. It also clarifies that 'recent' matches the app's stream ordering, which is valuable operational context.

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 information-dense and well-structured: it leads with the core list behavior, then the most important return-shape caveat, then field-level clarifications. Every sentence contributes something an agent needs, and the most distinctive behavior (order matching, thread heads) is front-loaded.

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

Completeness5/5

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

With a complete input schema, annotations, and an output schema, the description still adds necessary context: return-shape semantics, field meanings, and the contract for writing back updated_at. There is no missing information an agent needs to call this tool correctly in a recent-notes context.

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?

All six parameters have schema descriptions, so the baseline is 3. The description adds extra meaning by explaining what full=true changes, what include_continuations returns, and how returned fields like updated_at and label relate to future writes. That goes beyond the schema's parameter-level 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 opens with a specific verb ('List') and resource ('the user's notes'), then pins down the exact order ('most recently touched first'). It also distinguishes the scope from siblings by stating it returns thread heads only and can include continuations, making its role clear relative to get_note and search_notes.

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 description gives strong contextual guidance: it matches the app's stream, defaults to excluding continuations, and the include_continuations parameter explicitly says to read a thread with get_note instead. It does not, however, state when to prefer this tool over search_notes for filtered or text-based lookups, so the alternative routing is not fully explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources