Fastidious MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Fastidious MCP Servercreate a note about project ideas"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Fastidious MCP Server
MCP (Model Context Protocol) server for Fastidious AI notes application.
Deployment
Environment Variables
Variable | Description | Default |
| Fastidious API base URL |
|
Deploy to Coolify
Create a new service in Coolify
Connect to this repository
Set build pack to Nixpacks or Dockerfile
Configure environment variable:
FASTIDIOUS_URL=https://blog.tjb.appOr for internal Docker network:
FASTIDIOUS_URL=http://fastidious:3000Set the domain to
mcp.tjb.appDeploy
Docker
docker build -t fastidious-mcp .
docker run -p 3001:3001 -e FASTIDIOUS_URL=https://blog.tjb.app fastidious-mcpRelated 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 a new markdown note |
| Get a note by ID |
| Update a note |
| Delete a note |
| List all notes (with optional collection filter) |
| Search notes by content |
| Create a new collection |
| Get a collection (with optional contents) |
| List all collections |
| Add notes to a 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 & CollectionsAPI Endpoints
GET /health- Health checkGET /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:3000This avoids external network hops for better performance.
Available Tools
11 toolscreate_collectionB
Create a new collection to organize notes
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the collection | |
| parentId | No | Optional: ID of parent collection for nesting. Omit for root-level. | |
| displayFields | No | Optional: Fields to display in list view (e.g., ["title", "createdAt"]) | |
| fieldDefinitions | No | Optional: Schema defining fields for items in this collection |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the note | |
| fields | No | Optional: Custom fields as key-value pairs | |
| content | Yes | Content of the note in Markdown format | |
| parentId | No | Optional: ID of parent collection to add this note to |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the note to delete |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the collection to retrieve | |
| includeChildren | No | Whether to include child notes/collections |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the note to retrieve |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| parentId | No | Optional: List collections within a parent collection |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| parentId | No | Optional: Filter notes by parent collection ID. Omit for root-level items. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the note or collection to move | |
| targetParentId | No | ID of the target parent collection. Omit or null to move to root. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against note content | |
| parentId | No | Optional: Limit search to a specific collection |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the collection to update | |
| title | No | New title for the collection | |
| viewMode | No | View mode for the collection | |
| sortField | No | Field to sort by | |
| displayFields | No | Fields to display in list view | |
| sortDirection | No | Sort direction | |
| fieldDefinitions | No | Updated field definitions schema |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the note to update | |
| title | No | New title for the note | |
| fields | No | Custom fields to update | |
| content | No | New content in Markdown format |
TDQS
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.
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.
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.
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.
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.
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.
11 tool updates
v1.0.0- First observed
create_collection - First observed
create_note - First observed
delete_note - First observed
get_collection - First observed
get_note - First observed
list_collections - First observed
list_notes - First observed
move_note - First observed
search_notes - First observed
update_collection - First observed
update_note
TDQS
Scored across 11 tools
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.
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.
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.
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
Related MCP Connectors
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Save notes in seconds. Your AI can then search, read, write and tag them over MCP.
Read and write your Caliu notes from any MCP client: search, create, tag, remind, attach files.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI assistants to interact with Joplin notes, notebooks, and tags through a standardized MCP interface, supporting CRUD operations, search, and organization.19417 PyPI171MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to interact with Joplin notes and notebooks, including searching, reading, and listing notebooks through natural language commands via the MCP protocol.179 npm48MIT
- FlicenseNot gradedqualityCmaintenanceEnables natural language CRUD operations on notes by integrating FastAPI, Gemini, and MCP.-
- FlicenseAqualityDmaintenanceEnables seamless interaction with Voicenotes through natural language, allowing users to search, create, edit, tag, and organize their notes via an MCP client like Claude.144-