Skip to main content
Glama

Server Details

Search, read and edit your notes in Pinto Notes: folders, checklists, tables and trackers.

Ownership verified
Status
Healthy
Uptime
90.9% over 20 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
pinto-notes/pinto-notes
GitHub Stars
30

TDQS

A3.9/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes (fetch vs list, edit vs write, history vs restore, search vs list). The main overlap is create vs write, since both can bring a note into existence, though descriptions differentiate structure creation from whole-item content writing.

Naming Consistency4/5

Nearly all tools are lowercase snake_case imperative verbs (create, delete, edit, fetch, list, move, pin, restore, search, write), a predictable pattern. Minor deviations: 'history' is a noun rather than a verb, and 'see_app' is the only verb_noun compound.

Tool Count5/5

12 tools is well within the ideal range and each earns its place, covering notes, folders, apps, files, search, versioning, and a specialized app-preview tool without obvious redundancy.

Completeness4/5

Core lifecycle is fully covered: create/write/edit/delete, list/fetch, search, move, pin, restore and history, plus app screenshotting. Minor gaps like duplicating/copying items or bulk operations exist but agents can work around them.

Available Tools

12 tools
createCreateAInspect

Creates a note, a folder or an app. A note: path "Work/Acme.md" (its name is its title; folders are made as needed) and content, its markdown. In a note's folder ("Work/Acme/Agenda.md") it becomes that note's sub-note. A folder: path "Work/Clients/". An app: path is the note that becomes the app (existing, or new like "Work/Habits.md"); it starts as a React + TypeScript + Tailwind + shadcn/ui project whose README.md says how apps run here, or, with template, as that pintonotes.com template's app, its data and its note. Notes are markdown: checklists "- [ ] item", links to notes [[Title]], and a tracker is a table with a line like above it (keep values in range).

NameRequiredDescriptionDefault
pathYesWhere: "Work/Acme.md", "Work/Clients/", or the app's note.
typeNoDefault note.
pinnedNo
contentNoA note's markdown.
templateNoAn app: start from this template's app, data and note (its name, as in pintonotes.com/templates/habit-tracker).

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), and the description adds genuinely useful behavior: folders are auto-created, a note placed inside a note's folder becomes a sub-note, apps scaffold a React/TS/Tailwind project, and templates pull in app+data+note. It stops short of stating what happens when the target path already exists or whether it overwrites.

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

Conciseness3/5

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

The core purpose is front-loaded in sentence one, but the remainder is a dense run-on of parentheticals and asides. The trailing markdown/tracker convention paragraph is useful only indirectly and inflates the definition well past what a create tool needs.

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 5-parameter mutation tool with annotations covering safety and no output schema, the description covers creation semantics across all three modes thoroughly. Remaining gaps are minor: no statement of overwrite/duplicate-path behavior, no mention of `pinned`, and no indication of what the call returns.

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 coverage is already 80%, so the baseline is 3, but the description meaningfully expands it: it explains how `path` is interpreted per type (title derived from name, trailing slash = folder, app note) and what `template` references. The one gap is `pinned`, which is undocumented in both description and 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 first sentence names a specific verb ("Creates") and enumerates the three resources it can produce (note, folder, app), then details each mode's path semantics. It is clear on its own, but it never contrasts itself with the close siblings "write" and "edit", so an agent must infer which one to reach for.

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 heavily implied through per-mode path examples ("Work/Acme.md", "Work/Clients/", app note path), which effectively tells the agent how to invoke each variant. However, there is no explicit when-to-use/when-not guidance and no named alternative among write/edit/move, which is where this tool's ambiguity lives.

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

deleteDeleteA
Destructive
Inspect

Deletes a note (to Recently Deleted with its sub-notes, for 30 days), a folder (its notes and files go to Recently Deleted), a file in a folder (to Recently Deleted for 30 days), an app file, or an app ("Work/Habits.app": the note stays; the app is kept in history).

NameRequiredDescriptionDefault
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".

TDQS

A3.6/5.0
Behavior5/5

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

Despite annotations already flagging destructiveHint=true, the description adds substantial non-obvious behavior: deletion is soft with a 30-day retention window, sub-notes and a folder's notes/files cascade into Recently Deleted, and deleting an app specifically preserves the note and keeps the app in history. These cascade rules and edge cases are exactly the context annotations cannot express.

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

Conciseness3/5

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

A single dense sentence with nested parentheses carries a lot of information but repeats "to Recently Deleted" three times and "for 30 days" twice, which could be consolidated. The most important behavioral fact (soft delete + retention window) is embedded mid-sentence rather than front-loaded, making it harder to scan.

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?

With one fully documented parameter, no output schema, and annotations covering destructiveness, the description supplies enough: entity types, cascade behavior, and retention. It omits failure modes (deleting a nonexistent path, permission requirements) but nothing essential to invoking the tool correctly is missing.

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 100% and the schema's `path` description already enumerates the same entity forms. The parent description reinforces that `path` is polymorphic but adds no format or syntax detail beyond the schema, so the baseline of 3 applies.

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 clear verb ("Deletes") and then enumerates every resource type it accepts: note, folder, file-in-folder, app file, and app. The scope is unambiguous and the entity list maps directly onto the single `path` parameter. It stops short of naming a sibling (e.g. `restore` as the counterpart), so an agent gets no explicit differentiation against the other 11 tools.

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 explicit when-to-use or when-not-to-use guidance, and no alternative is named. The only usage-relevant signal is the implicit one buried in the text — that deletion is soft ("to Recently Deleted... for 30 days"), which hints at recoverability but is never framed as decision guidance. An agent must infer everything about choosing this over `move` or `restore`.

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

editEditA
Destructive
Inspect

Replaces old_string with new_string in a note, an app file, an app's data.json or a text file (TXT, CSV, JSON, code), like a coding agent's Edit. old_string is the exact text, without line numbers, and the item must have been read in this session. It must match once unless replace_all; an empty new_string deletes it. Answers with checks: what the change broke in a note (a table, a checklist line, a tracker value), or the app's compile, render and test results. Each edit is one change the person can undo.

NameRequiredDescriptionDefault
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
new_stringYesThe text to put there.
old_stringYesThe exact text to replace.
replace_allNoReplace every occurrence. Default false.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations declare destructive and non-readonly behavior; the description adds rich context beyond that: read-session prerequisite, exact-match semantics, empty-string deletion, validation feedback (what broke, compile/render/test), and undoability per edit. This substantially exceeds annotation coverage.

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?

Five dense sentences, front-loaded with the core operation and scope. Every sentence earns its place by conveying constraints, behavior, or return details without redundancy.

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?

No output schema exists, but the description explains return/validation behavior ('Answers with checks...'). Annotations cover safety, schema covers paths and parameters, and the description fills remaining gaps, making it complete for a complex destructive edit tool.

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 coverage is 100%, so baseline is 3. The description adds meaningful semantics for key parameters: old_string is exact text without line numbers, must match once unless replace_all, and empty new_string deletes. It does not add much for path beyond the schema, but overall adds value beyond structured fields.

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 ('Replaces old_string with new_string') and resource targets (note, app file, data.json, text file), making the operation clear. However, it does not explicitly differentiate itself from sibling tools like write or create, which could also modify content.

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?

Gives clear usage context: the item must have been read in this session, old_string must be exact and match once unless replace_all, and an empty new_string deletes. No explicit alternatives (e.g., when to use write instead) or when-not-to-use guidance is provided.

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

fetchReadA
Read-onlyIdempotent
Inspect

Reads a note, an app file, an app's data.json or a file, with line numbers (cat -n). Long text is read in parts: offset is the first line, limit how many (default 2000). A folder reads as its listing. Files: text files (TXT, CSV, JSON, code) as text you can edit; PDFs, Word, Excel and PowerPoint as their text; pictures as images. raw: true returns the file itself (base64, up to 10 MB).

NameRequiredDescriptionDefault
idYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
rawNoA file's own bytes, as a resource (base64). Up to 10 MB.
limitNoHow many lines.
offsetNoFirst line (1-based).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already confirm readOnly, idempotent, non-destructive, and closed-world behavior. The description goes well beyond that by disclosing line-number formatting (cat -n), default pagination limit (2000), folder-listing behavior, text extraction from PDFs/Word/Excel/PowerPoint, image rendering, and raw base64 output capped at 10 MB.

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 dense but front-loaded, moving from core read behavior to pagination, folder handling, file types, and raw mode without wasted sentences. Each clause carries distinct operational information for an agent.

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?

For a four-parameter read tool with no output schema, the description is complete enough: it explains resource scoping, pagination, file-type conversions, folder behavior, and raw output limits. Annotations already cover safety and idempotency, so the remaining gaps are negligible.

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 coverage is 100%, so parameter names and basic meanings are already documented. The description adds useful semantics beyond the schema: offset is the first line, limit defaults to 2000, raw true returns the file itself as base64, and line-oriented reads behave like cat -n.

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 verb ('Reads') and enumerates the exact resources it can read: a note, an app file, an app's data.json, a file, or a folder listing. It distinguishes the tool from siblings by focusing on content retrieval, including line numbers and file-type-specific rendering, so an agent can tell it apart from write/list/search operations.

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 provides clear context for when this tool is useful: reading note/file contents, reading long text in parts via offset/limit, listing a folder, and handling different file types. It does not explicitly state when to use fetch instead of list or search, but the reading scenarios are clearly implied and no misleading exclusions are present.

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

historyHistoryA
Read-onlyIdempotent
Inspect

Earlier versions, newest first, with who made each (a device or an AI): of a note's text, an app (code and data), or a file.

NameRequiredDescriptionDefault
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
limitNoDefault 10.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds real value beyond those: it discloses that results are ordered newest-first and that authorship is attributed ('a device or an AI'), which the agent cannot learn from the annotations.

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 compact sentence that front-loads the core content (earlier versions, ordering, authorship). The colon-plus-list construction is slightly awkward to parse but wastes no words.

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?

With no output schema, the description carries the burden of describing what comes back, and it does so adequately: version entries, newest-first, each with an actor. It omits whether the current version is included and how limit interacts with the ordering, which are minor gaps for a read-only tool.

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 100% and the path parameter is exhaustively documented with examples. The description contributes only the 'newest first' ordering and says nothing about the limit parameter or pagination, so the baseline 3 applies.

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 names a specific resource (earlier versions of a note's text, an app's code/data, or a file) and scopes it clearly, which separates it from siblings like fetch or list. However, it never uses an explicit verb ('list', 'retrieve', 'show'), so the agent must infer the operation from the noun phrase, keeping it 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 statement of when to call this tool versus alternatives; the obvious comparison to the sibling restore (which presumably acts on a version) is never made. The 'newest first' ordering hints at inspection use, but no condition, prerequisite, or exclusion is given.

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

listListA
Read-onlyIdempotent
Inspect

Lists like a file browser, newest first. No path: the top level. A folder ("Work/"), a note's folder ("Work/Acme/": its sub-notes and files), an app ("Work/Habits.app"), or "Recently Deleted/". pattern is a glob over every path below it ("/*.md", "Work/", "/*.app", "/invoice"). Pages with limit and offset.

NameRequiredDescriptionDefault
pathNoA folder, a note's folder, an app, or "Recently Deleted/".
limitNoDefault 100.
offsetNoSkip this many.
patternNoA glob, like "**/*.md".

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive safety. The description goes beyond them by disclosing ordering ('newest first'), the exact scope of pattern (every path below the given path), and that results paginate via limit/offset. It does not discuss auth or rate limits, but the added behavioral context is meaningful.

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?

Telegraphic and front-loaded: the core behavior and ordering lead, followed by path forms, pattern scope, and pagination. Every clause carries information, though the fragmentary style reads more like notes than prose.

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?

With annotations covering safety and no output schema, the description supplies what an agent needs: ordering, path semantics, glob scope, and pagination. It stops short of hinting at the returned entry shape, a minor omission for a list tool with 4 optional params.

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 coverage is 100%, so the baseline is 3, but the description exceeds it: it explains each path variant with concrete examples ('Work/', 'Work/Acme/', 'Work/Habits.app') and clarifies pattern semantics ('**/*.md', 'Work/**', '**/*invoice*') beyond the schema's terse 'A glob, like "**/*.md"'. This materially improves correct invocation.

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 with scope: 'Lists like a file browser, newest first.' An agent immediately understands the operation and its ordering semantics. It stops short of differentiating itself from sibling 'search' or 'fetch', which is the only gap.

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 implicitly guides usage by enumerating the valid path forms (folder, note's folder, app, Recently Deleted) and the meaning of pattern as a glob over everything below the path. However it never states when to use list versus search or fetch, nor any when-not condition. Usage is implied rather than explicit.

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

moveMove or renameA
Destructive
Inspect

Moves or renames a note, a folder or an app file: a note to a folder ("Clients/", made if needed), into a note's folder ("Work/Acme/": it becomes a sub-note), or to a new name ("Work/New title.md"); a folder to a new path ("Archive/2025/"); an app file within its app; a file in a folder to another folder ("Archive/") or a new name ("To read/Old paper.pdf", same ending).

NameRequiredDescriptionDefault
toYesWhere it goes.
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered; the description adds real behavior beyond that: the destination folder is created if missing, moving into a note's folder converts the target into a sub-note, and renames preserve the file ending. The one notable gap is collision handling — with destructiveHint=true, an agent would want to know whether moving onto an existing name overwrites it.

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?

It is front-loaded with the verb+resource, then enumerates destination forms with semicolon-separated clauses so each one is scannable. The single run-on sentence is dense but every clause carries distinct semantic content; only mild structural improvement (e.g., bullets) would help.

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 2-parameter, no-output-schema mutation tool with annotations already declaring the safety profile, the description covers target types, destination interpretation, auto-creation, and naming rules. The missing piece is failure/collision behavior and any permission requirement, which matters given destructiveHint=true.

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 coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema's terse "Where it goes." for `to`: a trailing slash means a folder, a bare name means a rename, and the ending is preserved. It also clarifies the `path` format by tying it to how list and search render paths, which the schema only partially does.

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 gives a specific verb pair (moves or renames) and enumerates the exact resource kinds affected: notes, folders, app files, and files within folders. Each move form is instantiated with a concrete example path, which lets an agent distinguish this from `edit`/`write`/`create` 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?

It implicitly shows usage through the destination patterns (trailing slash = into a folder, `.md` = rename, note's folder = sub-note), which is more than nothing. However it never states when to prefer `move` over siblings like `edit` or `create`, nor any when-not condition or prerequisite. Usage is inferable from examples only.

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

pinPinB
DestructiveIdempotent
Inspect

Pins a note to the top of the list, or unpins it.

NameRequiredDescriptionDefault
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
pinnedYestrue to pin, false to unpin.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already carry the behavioral profile (readOnlyHint=false, destructiveHint=true, idempotentHint=true), and the description adds only the placement detail ('top of the list'). It never explains what the destructive hint means here (e.g., whether unpinning displaces or removes an existing pinned position) or why pinning is considered destructive, leaving the most consequential behavior unexplained.

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 short sentence that front-loads the primary action ('Pins a note to the top of the list'). The trailing 'or unpins it' is largely redundant with the 'pinned' parameter's own schema description, a small amount of wasted text in an otherwise tight definition.

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 two-parameter tool with a rich path schema, full annotations, and no output schema, the description is minimally sufficient. It omits the scope question of what kinds of items can be pinned and the effect of pinning on ordering for folders versus notes, but nothing critical to a correct call is missing.

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 100%, so both 'path' and 'pinned' are fully documented in the schema, which sets the baseline at 3. The description adds nothing beyond the schema and in fact says 'a note' while the path schema explicitly accepts folders, sub-notes, files, and app files, slightly narrowing the apparent scope.

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 ('Pins a note to the top of the list, or unpins it') and captures the toggle nature of the operation, so the agent knows exactly what happens. It does not distinguish this tool from siblings like move or edit, which could also alter list ordering, so it stops 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 Guidelines3/5

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

Usage is only implied: the paired 'or unpins it' plus the boolean parameter makes the pin/unpin choice inferable, but there is no explicit when-to-use, no statement of prerequisites, and no named alternative (e.g., move) for repositioning content.

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

restoreRestoreA
Destructive
Inspect

Brings back a note or file from Recently Deleted (no version), or an earlier version from history: of a note's text, an app (code and data as they were), or a file.

NameRequiredDescriptionDefault
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
versionNoA version from history.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true (restoring overwrites current state), so the safety profile is carried by structured data. The description adds some context via "code and data as they were," implying a revert, but does not explicitly warn that current content is replaced or describe reversibility.

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 dense sentence with the core behavior front-loaded and zero filler. The layered colon construction is slightly harder to parse than a two-sentence split would be, but 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 two-parameter mutation tool with full schema coverage and annotations covering the safety profile, the description adequately conveys what can be restored and how version presence changes behavior. It stops short of stating that restoration replaces current state, which is the main remaining gap.

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 coverage is 100%, so baseline would be 3, but the description adds real meaning: omitting version restores from Recently Deleted while supplying a version restores from history. That ties the optional version parameter to a concrete behavioral branch beyond the schema's bare "A version from history."

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 verb ("Brings back") and enumerates the exact resources: a note or file from Recently Deleted, or an earlier version of a note's text, an app, or a file. This is unambiguous and clearly distinct from siblings like delete, create, or history.

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 parenthetical "(no version)" versus the version path implies the two usage modes, so an agent can infer which to pick. However, no sibling tools are named and no explicit when-not or prerequisite guidance is given.

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

see_appSee an appA
Read-onlyIdempotent
Inspect

Screenshots of a note's app at iPhone and Mac sizes, light and dark, over a sample with the shape of its data, with what each view shows and anything broken. With steps, uses the app like a person instead and answers after each step with what's on screen, console errors, what changed in its data, and screenshots: { tap: "Add" } (text, label or CSS selector), { type: "85", into: "Weight" }, { scroll: "down" }, { wait: 500 | "Saved" }, { press: "Enter" }, { resize: "phone" | "desktop" }, { dark: true }. Nothing is written back.

NameRequiredDescriptionDefault
pathYesThe app ("Work/Habits.app") or its note.
stepsNoUp to 30 steps, done in order on a throwaway copy.
themesNo
widthsNoDefault [390, 1280].

TDQS

A4.1/5.0
Behavior5/5

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

The description adds rich behavioral detail beyond annotations: it specifies operation on a throwaway copy, lists exactly what steps return (screens, console errors, data changes, screenshots), enumerates supported step actions with syntax, and confirms nothing is written back. Annotations cover safety, but the description explains the interactive simulation behavior fully.

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 dense but front-loads the core output then details steps, with no wasted sentences. The step examples are compact and informative, though the long parenthetical could be slightly more structured for readability.

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?

Given no output schema, the description fully specifies return content and step behavior. Combined with annotations and a 75%-covered schema, it provides all necessary context for an agent to call the tool correctly, including safety implications.

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 coverage is 75%, so baseline is lower, but the description compensates by defining step syntax and semantics (e.g., tap, type, scroll) and clarifying that steps act on a throwaway copy. It adds meaning beyond the schema's high-level parameter descriptions, though some details like step limit (30) are in schema, not description.

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 it produces screenshots of a note's app at specified sizes/themes with diagnostics, and optionally drives the UI via a steps array. It's specific about the resource (app/note) and outputs, but doesn't distinguish itself from siblings like fetch, search, or history beyond the screenshot focus.

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 by listing modes (screenshot mode vs. steps mode) and by the schema field 'on a throwaway copy', but there's no explicit guidance on when to choose this over alternatives or prerequisites for using steps. An agent must infer context.

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

writeWriteA
Destructive
Inspect

Writes a whole note, app file, data.json or file: creates it, or replaces all of it (an existing item must have been read in this session). The old version stays in history. A file ("To read/Summary.txt", "To read/Paper.pdf") takes content for text, or content_base64 with mime_type for anything else (a PDF, a picture, a spreadsheet), up to 10 MB. Answers with checks: what the change broke in a note, or the app's compile, render and test results. Notes are markdown: checklists "- [ ] item", links to notes [[Title]], and a tracker is a table with a line like above it (keep values in range).

NameRequiredDescriptionDefault
fileNoA file from the chat (ChatGPT hands these over), instead of content_base64.
pathYesA path, as list and search show them: "Work/Acme.md", a folder "Work/", a sub-note "Work/Acme/Agenda.md", a note's file "Work/Acme/contract.pdf", a file in a folder "To read/Paper.pdf", an app's file "Work/Habits.app/src/App.tsx" or its data "Work/Habits.app/data.json".
contentNoThe whole text (data.json: JSON).
mime_typeNoWith content_base64, like "application/pdf".
content_base64NoA file's bytes, base64 (up to 10 MB).

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds substantial value beyond them: the old version stays in history (recoverability), a hard 10 MB limit, the file/content_base64 selection rule, and the fact that the call returns validation checks (broken note refs, compile/render/test results).

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 with the core action and dense with actionable detail — no filler sentences. It runs long and crams markdown/tracker syntax into one clause, but nearly every clause carries operational information.

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 no output schema, the description compensates by describing the return payload (checks, compile/render/test results), the replace semantics, history retention, size limits, and the note-data format including checklists, links and tracker table syntax. An agent has enough to call it correctly.

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 coverage is 100%, so the baseline is 3, but the description adds real discriminator meaning: `file` (from chat) versus `content` for text versus `content_base64` with `mime_type` for binary, plus the 10 MB ceiling. The path examples are somewhat redundant with the schema description.

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 — writes a whole note, app file, data.json or file, creating or fully replacing it. This clearly separates it from an incremental edit, but it never names the `edit` or `create` siblings explicitly, so sibling differentiation is left to inference.

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?

It gives an important precondition (an existing item must have been read in this session) and implicitly contrasts whole-replacement with partial editing. However, it never states when to prefer `create` or `edit` over `write`, so the agent must infer the routing.

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. 1 tool update
    • Changedcreate1 field changed
      • addedInput schema / properties / template
        Added value: +{
        +  "description": "An app: start from this template's app, data and note (its name, as in pintonotes.com/templates/habit-tracker).",
        +  "type": "string"
        +}
  2. 2 tool updates
    • Changedpin1 field changed
      • addedInput schema / properties / pinned / description
        Added value: +"true to pin, false to unpin."
    • Changedwrite1 field changed
      • addedInput schema / properties / file / required
        Added value: +[
        +  "download_url",
        +  "file_id"
        +]
  3. 37 tool updates
    • Removedappend_to_note
    • Addedcreate
    • Removedcreate_folder
    • Removedcreate_note
    • Removedcreate_sub_note
    • Addeddelete
    • Removeddelete_folder
    • Removeddelete_note
    • Removeddelete_table_row
    • Addededit
    • Removededit_note
    • Changedfetch4 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Note id."New value: +"A path, as list and search show them: \"Work/Acme.md\", a folder \"Work/\", a sub-note \"Work/Acme/Agenda.md\", a note's file \"Work/Acme/contract.pdf\", a file in a folder \"To read/Paper.pdf\", an app's file \"Work/Habits.app/src/App.tsx\" or its data \"Work/Habits.app/data.json\"."
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "How many lines.",
        +  "type": "integer"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "First line (1-based).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / raw
        Added value: +{
        +  "description": "A file's own bytes, as a resource (base64). Up to 10 MB.",
        +  "type": "boolean"
        +}
    • Removedget_file
    • Removedget_overview
    • Addedhistory
    • Addedlist
    • Removedlist_files
    • Removedlist_folders
    • Removedlist_notes
    • Removedlog_table_row
    • Addedmove
    • Removedmove_note
    • Removednote_history
    • Addedpin
    • Removedpin_note
    • Removedread_note
    • Removedread_table
    • Removedrename_folder
    • Removedreplace_note_body
    • Addedrestore
    • Removedrestore_note
    • Removedrestore_revision
    • Changedsearch16 fields changed
      • addedInput schema / properties / case_sensitive
        Added value: +{
        +  "description": "Default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / context
        Added value: +{
        +  "description": "With output content: lines shown before and after each match (0-10).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / deleted
        Added value: +{
        +  "description": "Include Recently Deleted. Default false.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Results per page (default 20; lines with output content: 100).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / modified_after
        Added value: +{
        +  "description": "YYYY-MM-DD.",
        +  "type": "string"
        +}
      • addedInput schema / properties / modified_before
        Added value: +{
        +  "description": "YYYY-MM-DD.",
        +  "type": "string"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Skip this many results (the next page).",
        +  "type": "integer"
        +}
      • addedInput schema / properties / output
        Added value: +{
        +  "description": "With pattern. Default files.",
        +  "enum": [
        +    "files",
        +    "content",
        +    "count"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / path
        Added value: +{
        +  "description": "Where to look: a folder, a glob, a note, or an app. Default: everywhere.",
        +  "type": "string"
        +}
      • addedInput schema / properties / pattern
        Added value: +{
        +  "description": "A regular expression (or plain text) to match line by line, like grep.",
        +  "type": "string"
        +}
      • addedInput schema / properties / pinned
        Added value: +{
        +  "type": "boolean"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Search query."New value: +"Words to find, ranked."
      • addedInput schema / properties / sub_notes
        Added value: +{
        +  "description": "Include sub-notes. Default true.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / title_only
        Added value: +{
        +  "description": "Match names, not text.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Only notes, only app code, or only files (by name).",
        +  "enum": [
        +    "note",
        +    "app",
        +    "file"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "query"
        -]
    • Removedsearch_notes
    • Addedsee_app
    • Removedset_checklist_item
    • Addedwrite
  4. 27 tool updates
    • First observedappend_to_note
    • First observedcreate_folder
    • First observedcreate_note
    • First observedcreate_sub_note
    • First observeddelete_folder
    • First observeddelete_note
    • First observeddelete_table_row
    • First observededit_note
    • First observedfetch
    • First observedget_file
    • First observedget_overview
    • First observedlist_files
    • First observedlist_folders
    • First observedlist_notes
    • First observedlog_table_row
    • First observedmove_note
    • First observednote_history
    • First observedpin_note
    • First observedread_note
    • First observedread_table
    • First observedrename_folder
    • First observedreplace_note_body
    • First observedrestore_note
    • First observedrestore_revision
    • First observedsearch
    • First observedsearch_notes
    • First observedset_checklist_item

Publisher details

Operator
Emil Wagman, the developer of Pinto Notes · Publisher source
Operator website
https://pintonotes.com
Vendor relationship
First-party
Restrictions
Free. Needs a Pinto Notes account, which is created in the app.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A notes app that becomes your second brain. Open source, private, encrypted when you want it, and every file stays yours. Mac, Windows, Linux and self host!
    17
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables an AI assistant to browse folders, search and read notes, create and edit them, and move notes between folders within an account. Runs locally through a supported MCP client and supports basic Markdown while refusing edits that would lose existing formatting.
    11
    3,159 npm
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.