Skip to main content
Glama
timothybroome

Fastidious MCP Server

Fastidious MCP Server

MCP (Model Context Protocol) server for Fastidious AI notes application.

Deployment

Environment Variables

Variable

Description

Default

FASTIDIOUS_URL

Fastidious API base URL

http://localhost:3000

Deploy to Coolify

  1. Create a new service in Coolify

  2. Connect to this repository

  3. Set build pack to Nixpacks or Dockerfile

  4. Configure environment variable:

    FASTIDIOUS_URL=https://blog.tjb.app

    Or for internal Docker network: FASTIDIOUS_URL=http://fastidious:3000

  5. Set the domain to mcp.tjb.app

  6. Deploy

Docker

docker build -t fastidious-mcp .
docker run -p 3001:3001 -e FASTIDIOUS_URL=https://blog.tjb.app fastidious-mcp

Related MCP server: Joplin MCP Server

Usage

Claude Desktop Configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "fastidious": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.tjb.app/sse?token=YOUR_TOKEN_HERE"]
    }
  }
}

Get your token from Fastidious AI Settings (sidebar → profile → Settings).

Note: Uses mcp-remote to proxy the remote SSE connection.

Local Development (stdio mode)

For local testing with Claude Desktop:

{
  "mcpServers": {
    "fastidious": {
      "command": "npx",
      "args": ["tsx", "/path/to/mcp-server/src/index.ts"],
      "env": {
        "FASTIDIOUS_TOKEN": "YOUR_TOKEN_HERE",
        "FASTIDIOUS_URL": "https://blog.tjb.app"
      }
    }
  }
}

Available Tools

Tool

Description

create_note

Create a new markdown note

get_note

Get a note by ID

update_note

Update a note

delete_note

Delete a note

list_notes

List all notes (with optional collection filter)

search_notes

Search notes by content

create_collection

Create a new collection

get_collection

Get a collection (with optional contents)

list_collections

List all collections

add_to_collection

Add notes to a collection

remove_from_collection

Remove notes from a collection

Architecture

Claude Desktop
    ↓ MCP Protocol (SSE)
MCP HTTP Server (mcp.tjb.app)
    ↓ HTTP + Bearer Token
Fastidious API (blog.tjb.app/api/mcp/*)
    ↓
User's Notes & Collections

API Endpoints

  • GET /health - Health check

  • GET /sse?token=TOKEN - MCP SSE endpoint for Claude Desktop

Internal Network (Docker/Coolify)

If running alongside Fastidious in the same Docker network:

FASTIDIOUS_URL=http://fastidious:3000

This avoids external network hops for better performance.

Available Tools

11 tools
create_collectionB

Create a new collection to organize notes

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the collection
parentIdNoOptional: ID of parent collection for nesting. Omit for root-level.
displayFieldsNoOptional: Fields to display in list view (e.g., ["title", "createdAt"])
fieldDefinitionsNoOptional: Schema defining fields for items in this collection

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full behavioral burden but only says it creates something. It omits whether the operation is idempotent, what permissions are needed, how parentId nesting affects visibility, or whether duplicate titles are allowed.

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 front-loaded sentence with zero filler. Nothing redundant or padded.

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 four-parameter create tool with nested fieldDefinitions and no annotations or output schema, the description is minimal but the rich schema documentation covers parameter meaning. The main gap is behavioral context (nesting effects, permission needs), which nothing else supplies.

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 title, parentId, displayFields, and fieldDefinitions are all documented in the schema with examples (e.g., displayFields showing ["title", "createdAt"]). The description adds nothing beyond what the schema already conveys, 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?

States a specific verb (create) and resource (collection), plus the organizing intent. Although it doesn't name a sibling explicitly, the resource 'collection' clearly separates it from create_note in the sibling list.

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

Usage Guidelines2/5

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

No guidance on when to create a collection versus using list_collections/update_collection, nor any prerequisite context (e.g., that a collection must exist before notes can be filed into it). Usage must be inferred entirely.

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

create_noteB

Create a new note in Fastidious. Notes should be in Markdown format.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the note
fieldsNoOptional: Custom fields as key-value pairs
contentYesContent of the note in Markdown format
parentIdNoOptional: ID of parent collection to add this note to

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the Markdown format requirement but omits permissions, side effects, whether the note is returned, and any rate limits or reversibility concerns for this write operation.

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 short sentences with no wasted words; the core purpose is front-loaded, and the format constraint follows naturally.

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

Completeness3/5

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

Given the simple create operation and full schema coverage, the description covers the essential purpose and format. However, without annotations or an output schema, it lacks behavioral details such as what the tool returns or whether authentication is required.

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 the schema already documents all four parameters. The description's note about Markdown format reinforces the content parameter but adds no meaning beyond what the schema provides.

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 ('Create') and resource ('note'), making the operation clear. However, it does not differentiate itself from sibling tools like update_note or create_collection beyond what the tool name already conveys.

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 alternatives such as update_note or create_collection. The description only states the operation, leaving context entirely to inference.

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

delete_noteC

Delete a note by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the note to delete

TDQS

C2.7/5.0
Behavior1/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 fails to state that deletion is permanent/irreversible, whether it requires specific permissions, or what side effects occur—critical omissions for a destructive operation.

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, front-loaded sentence with no wasted words. It is appropriately concise for the operation, though conciseness does not compensate for missing context.

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?

For a destructive, one-parameter tool with no annotations and no output schema, the description omits essential behavioral context such as irreversibility and permissions. The schema covers the parameter, but the description is incomplete regarding consequences.

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 the 'id' parameter is fully documented in the schema. The description adds no syntax or format details beyond the schema, so the baseline score 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?

States a specific verb ('Delete') and resource ('note') with the ID qualifier, making the operation clear. However, it does not explicitly differentiate from sibling note operations beyond the obvious verb, nor does it state scope or side effects.

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?

Provides no guidance on when to delete a note versus alternatives like update_note or move_note, nor any prerequisites or warnings. The agent must infer usage entirely from the tool name.

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

get_collectionB

Get a collection by ID, optionally including its children

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the collection to retrieve
includeChildrenNoWhether to include child notes/collections

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 carries the full burden. It implies a read operation via "Get" and notes the optional child expansion, but says nothing about error behavior for missing IDs, permission needs, or the depth/shape of the returned children.

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 front-loaded sentence with no filler; the core action comes first and the optional behavior is attached compactly. Every word earns its place.

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 simple two-parameter read tool with full schema coverage this is minimally viable, but with no output schema the description should say more about what a collection and its children look like, or what happens on a bad ID.

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 parameters are already documented in the schema; the description only restates them without adding format, depth, or performance meaning for includeChildren. 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?

States a specific verb and resource ("Get a collection by ID"), and the "by ID" qualifier cleanly separates it from list_collections. It does not name or contrast with any sibling explicitly, 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?

The phrase "optionally including its children" hints at when the extra parameter is warranted, but there is no explicit statement of when to use this tool versus list_collections or get_note, and no prerequisites or exclusions.

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

get_noteA

Get a specific note by ID with its full content

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the note to retrieve

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does add value by promising 'full content' (vs. a summary/partial view), but says nothing about behavior on a missing/invalid ID, permissions, or error semantics for a read operation.

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 front-loaded sentence with no filler; verb, key, and return scope are all packed in without waste.

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 one-parameter read tool with no output schema, the description covers the essential contract (key + full content return), which is sufficient to invoke it correctly. Only error/permission behavior is left unstated.

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 coverage is 100% with a single documented 'id' parameter, so the baseline is 3. The description reinforces that the ID selects the note but adds no format or syntax detail beyond the 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?

States a specific verb ('Get') and resource ('note') plus the retrieval key ('by ID') and return scope ('full content'). It is distinguishable from list_notes/search_notes by the singular 'specific note', though no sibling is named explicitly.

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 rather than stated: 'by ID' signals the precondition that the caller already has a note ID, which separates it from search/list tools. However, there is no explicit when-to-use guidance or named alternative when the ID is unknown.

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

list_collectionsB

List all collections at root level or within a parent

ParametersJSON Schema
NameRequiredDescriptionDefault
parentIdNoOptional: List collections within a parent collection

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It does not disclose whether this operation is read-only, whether it paginates, sorting, permissions, or return format. Only the scope is mentioned.

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 concise sentence that front-loads the operation and includes the optional scope. No wasted words.

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 simple list tool with one optional param and no output schema, the description is marginally adequate. It lacks behavioral details like safety, pagination, or sorting, which an agent might need.

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% and the parameter description is clear. The tool's description adds context that parentId limits listing to within a parent, but this duplicates schema info. Baseline 4 for 0 required params with full schema coverage.

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 (List) and resource (collections) with scope (root level or within a parent). It distinguishes itself from get_collection by implying enumeration, but does not explicitly name the sibling.

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 when-to-use guidance or alternatives are provided. The description could imply using parentId to filter, but does not state when to omit it or compare to get_collection.

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

list_notesB

List all notes, optionally filtered by parent collection

ParametersJSON Schema
NameRequiredDescriptionDefault
parentIdNoOptional: Filter notes by parent collection ID. Omit for root-level items.

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 carries the full behavioral burden. It says nothing about ordering, pagination, result limits, or permissions, and while the read-only nature is implied by 'List', nothing is confirmed.

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 short sentence with no filler; the filtering qualifier is attached directly to the core action.

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 one-parameter read tool with no output schema this is minimally viable, but an agent gets no signal about result size, ordering, or pagination behavior before invoking it.

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 the schema already documents parentId in full. The description merely restates the filtering behavior, which is the baseline 3 when structured data does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('List') and resource ('notes') with the scope qualifier 'all'. It implies enumeration rather than searching, but never explicitly names the sibling search_notes, so the agent must infer which to pick.

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 phrase 'optionally filtered by parent collection' gives implied usage for the single parameter, but there is no statement of when to use this tool versus search_notes or list_collections, and no exclusions.

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

move_noteC

Move a note or collection to a different parent collection

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the note or collection to move
targetParentIdNoID of the target parent collection. Omit or null to move to root.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it says nothing about permissions, idempotency, what happens if the target parent does not exist, or whether the move is reversible. 'Move' implies mutation but no side effects or failure modes are disclosed.

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 efficient sentence with the action and scope front-loaded and no wasted words. It is appropriately sized, though it also leaves everything else unsaid.

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?

With no annotations and no output schema, the description would need to do more for a mutation tool, but the 100%-covered schema at least handles the null-target-to-root case and parameter meaning. Error behavior and permission requirements remain unaddressed.

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 parameters are already documented — including the important 'omit or null to move to root' behavior — establishing a baseline of 3. The description adds no syntax, format, or constraint detail beyond the 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?

States a specific verb (move) and resource (note or collection) with the destination concept, which distinguishes it from siblings like update_note or create_note. However, the tool is named move_note while the description widens scope to 'note or collection', leaving minor ambiguity about what the id actually references.

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?

Provides no when-to-use guidance, no exclusions, and never names an alternative such as update_note for reparenting-adjacent edits. Usage is only inferable from the tool name.

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

search_notesC

Search notes by content

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query to match against note content
parentIdNoOptional: Limit search to a specific collection

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden and discloses almost nothing about behavior: no mention of match semantics (substring vs tokenized), case sensitivity, result ordering, or result limits/pagination. For a search tool with zero annotation coverage this is a notable gap.

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

Conciseness4/5

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

A single front-loaded phrase with no wasted words; the core action leads. It is arguably under-specified rather than verbose, so it scores well on conciseness but not perfectly.

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?

No output schema and no annotations, so the description must carry behavioral context itself; it omits return format, ordering, and result limits. For a search tool intended to be picked over list_notes, this is 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 100%, so both query and parentId are already documented in the schema, which sets the baseline at 3. The description adds no extra meaning beyond 'by content', so it does not rise above the baseline.

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 (search) and resource (notes) with the matched field (content), so the core action is unambiguous. However, it offers no differentiation from the sibling list_notes, which an agent could easily confuse with a broad content search.

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 indication of when to use this tool versus list_notes or get_note, and no mention of whether it is for full-text lookup versus exact matching. The agent is left to infer the scenario entirely.

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

update_collectionB

Update a collection's settings, including field definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the collection to update
titleNoNew title for the collection
viewModeNoView mode for the collection
sortFieldNoField to sort by
displayFieldsNoFields to display in list view
sortDirectionNoSort direction
fieldDefinitionsNoUpdated field definitions schema

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 carries the full burden of behavioral transparency. It says 'update' but does not disclose whether this requires specific permissions, whether changes are reversible, what happens to unspecified settings, or what the response contains. This is a significant gap 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?

One sentence that is front-loaded with the verb and resource, 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.

Completeness2/5

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

For a mutation tool with 7 parameters and no annotations or output schema, the description is too thin. It should at least mention permissions or side effects, and given the sibling tools, it could clarify scope. It is not complete enough for an agent to confidently invoke it without additional assumptions.

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 100%, so the schema already documents all parameters thoroughly. The description adds the specific mention of field definitions, which is one of the more complex parameters, providing marginal but useful emphasis. Baseline is 3, and the extra specificity lifts it slightly.

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 (update) and resource (collection's settings), and names one of the updatable aspects (field definitions). It does not distinguish itself from sibling tools as clearly as it could, but it is clear enough for an agent to understand the operation.

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?

Provides implied usage (updating settings) but no explicit when/when-not guidance or alternatives. The sibling list includes create_collection, get_collection, and many note-related tools, but the description does not help an agent choose among them for collection modifications.

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

update_noteC

Update an existing note

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the note to update
titleNoNew title for the note
fieldsNoCustom fields to update
contentNoNew content in Markdown format

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Update' implies mutation, it omits permissions required, whether changes are reversible, whether it is a partial or full update, and what the response looks like. For a mutation tool, this is insufficient.

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 a single front-loaded sentence with no wasted words. It is appropriately concise for a simple statement, though given the tool's 4 parameters and mutation nature, it may be too terse to be optimally structured.

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 schema fully covers parameter semantics, but the description omits behavioral context such as partial update behavior, permissions, and response format, and there are no annotations or output schema. For a 4-parameter mutation tool, more context would be beneficial, though the complete schema mitigates some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters (id, title, fields, content) with clear descriptions. The tool description adds no parameter-level information beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Update') and resource ('note'), making it clear this modifies an existing note rather than creating or deleting one. However, it does not explicitly differentiate from sibling tools like update_collection or explain when to use it versus create_note. Clear but lacks sibling differentiation.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance or alternatives. It implies the note must already exist but does not mention that create_note is for new notes or get_note for reading. No exclusions or context are 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. 11 tool updatesv1.0.0
    • First observedcreate_collection
    • First observedcreate_note
    • First observeddelete_note
    • First observedget_collection
    • First observedget_note
    • First observedlist_collections
    • First observedlist_notes
    • First observedmove_note
    • First observedsearch_notes
    • First observedupdate_collection
    • First observedupdate_note

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation4/5

Tools target distinct resources and actions, so an agent can easily distinguish create/get/update/delete/list for notes. The only wrinkle is move_note, which also moves collections despite being named for notes, creating minor ambiguity about where collection moves belong.

Naming Consistency5/5

All 11 tools follow a clean verb_noun snake_case pattern (create_note, list_collections, move_note, etc.). Conventions are applied uniformly across both note and collection resources.

Tool Count5/5

Eleven tools is well within a reasonable range and each one covers a distinct capability (CRUD, listing, searching, organizing). No redundant or filler tools pad the surface.

Completeness3/5

Notes have full CRUD plus list and search, but collections lack a delete operation and there is no delete_collection or collection search, leaving an obvious lifecycle gap. A move operation exists only under move_note rather than a symmetric resource-level naming.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to interact with Joplin notes, notebooks, and tags through a standardized MCP interface, supporting CRUD operations, search, and organization.
    19
    417 PyPI
    171
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to interact with Joplin notes and notebooks, including searching, reading, and listing notebooks through natural language commands via the MCP protocol.
    179 npm
    48
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables seamless interaction with Voicenotes through natural language, allowing users to search, create, edit, tag, and organize their notes via an MCP client like Claude.
    14
    4
    -