MCP Bear
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., "@MCP Bearsearch for my notes 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.
MCP Bear
A Python-based Model Context Protocol (MCP) server that provides access to Bear Notes.
Bear stores notes in a SQLite database. This MCP server provides both read and write access to your notes. See: https://bear.app/faq/where-are-bears-notes-located
Features
Read Operations
Read all notes (active and archived) from Bear's SQLite database
Search notes by text content, tag, or unique ID
List all tags
Get notes by specific tag
Get archived notes separately
Note Management
Create new notes with title, content, and tags
Append, prepend, or replace text in existing notes
Archive/unarchive notes for organization
Move notes to trash
Tag Management
Add tags to existing notes
Rename tags across all notes
Open Bear showing notes with specific tag
Bear Integration
Open specific notes in Bear
Search within Bear app
All operations integrate seamlessly with Bear's UI
Write operations use Bear's official x-callback-url API for safe, reliable modifications.
Related MCP server: Bear App MCP Server
Requirements
Python 3.10 or higher (tested with 3.14)
Bear note application (macOS)
Access to Bear database
Installation
Development Setup
# Clone the repository
git clone https://github.com/maxim-ist/mcp-bear.git
cd mcp-bear
# Install dependencies (using mise for Python version management)
mise install
mise exec -- python -m venv .venv
.venv/bin/pip install -e .Install via pip (when published)
pip install mcp-bearClaude Desktop Configuration
Add this to your claude_desktop_config.json:
Using Python directly
{
"mcpServers": {
"bear": {
"command": "python",
"args": [
"-m",
"mcp_bear.server"
],
"env": {
"PYTHONPATH": "/Users/YOUR_USERNAME/Work/mcp-bear/src"
}
}
}
}Using installed package
{
"mcpServers": {
"bear": {
"command": "mcp-bear"
}
}
}Available Tools
When the server is started, the following MCP tools become available:
Read Operations (Basic)
get_notes: Retrieves all non-archived notesget_tags: Lists all tagsget_notes_like: Searches for notes containing specific text
Read Operations (Advanced)
get_note_by_id: Get a specific note by its unique identifierget_notes_by_tag: Get all notes with a specific tagget_archived_notes: Get all archived notes
Note Management
create_note: Create a new note with optional title, text, tags, and pin statusadd_text: Add text to an existing note (append, prepend, or replace)trash_note: Move a note to trasharchive_note: Archive a note (removes from main list, keeps searchable)unarchive_note: Unarchive a note
Tag Management
add_tags: Add tags to an existing noteopen_tag: Open Bear and show all notes with a specific tagrename_tag: Rename a tag across all notes
Bear Integration
open_note: Open a specific note in Bearsearch_bear: Open Bear and show search results for a term
All write operations use Bear's official x-callback-url scheme, which requires Bear to be installed and running.
Configuration
You can override the default Bear database path by setting the DB_ROUTE environment variable:
export DB_ROUTE="/path/to/custom/database.sqlite"Development
Running the server directly
cd /Users/borag/Work/mcp-bear
.venv/bin/python -m mcp_bear.serverTesting with MCP Inspector
# Install the MCP inspector
pip install mcp-inspector
# Run the inspector
mcp-inspector python -m mcp_bear.serverArchitecture
mcp_bear/server.py: Main MCP server implementationmcp_bear/database.py: SQLite database access for read operationsmcp_bear/bear_url.py: Bear x-callback-url operations for write operationsUses Python's built-in
sqlite3module (no native dependencies)
Security Note
This server uses parameterized SQL queries to prevent SQL injection attacks, improving upon the original TypeScript implementation.
License
ISC
Author
Bora Gonul me@boragonul.com
Available Tools
16 toolsadd_tagsC
Add tags to an existing note
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) | |
| tags | Yes | List of tags to add (without # prefix) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Add tags to an existing note' implies a mutation operation, it lacks critical details: whether tags are appended or replace existing ones, if duplicates are handled, what permissions are required, or what happens on failure. This is inadequate 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?
The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for this simple tool.
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 no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects (like idempotency or error handling), return values, or usage context. Given the complexity of modifying data, this leaves significant gaps for an AI agent.
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 fully documents both parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't clarify tag format constraints or note_id validation). Baseline 3 is appropriate when schema does all the work.
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 clearly states the action ('Add tags') and target resource ('to an existing note'), making the tool's purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'rename_tag' or 'get_tags', which prevents a perfect score.
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 guidance on when to use this tool versus alternatives. There's no mention of prerequisites (e.g., note must exist), when not to use it, or how it differs from related tools like 'create_note' (which might also handle tags).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_textC
Add text to an existing note
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) | |
| text | Yes | Text to add | |
| mode | No | Where to add text | append |
| open_note | No | Open the note in Bear after modification |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Add text' implies a mutation (not read-only), it lacks critical details: whether this requires specific permissions, if changes are reversible, potential side effects (e.g., modifying timestamps), or error conditions (e.g., invalid note_id). The description is minimal and doesn't compensate for the absence of annotations.
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, efficient sentence with zero wasted words. It front-loads the core purpose ('Add text to an existing note') without unnecessary elaboration. Every word earns its place, making it easy to parse quickly.
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 no annotations and no output schema, the description is insufficient. It doesn't explain what happens on success (e.g., returns updated content?), error handling, or behavioral nuances like the 'mode' parameter's effect on existing text. Given the complexity of modifying resources, more context is needed to guide the agent effectively.
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 parameters are well-documented in the schema itself. The description adds no additional meaning about parameters beyond implying 'note_id' and 'text' are involved. It doesn't explain parameter interactions or provide context beyond what the schema already specifies, meeting the baseline for high 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 clearly states the action ('Add text') and target resource ('to an existing note'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'create_note' (which creates new notes) or 'open_note' (which opens without modification), leaving some ambiguity about when this specific tool is appropriate versus alternatives.
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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing note), exclusions (e.g., not for creating new notes), or comparisons to siblings like 'create_note' for new notes or 'open_note' for viewing without modification. The agent must infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_noteC
Archive a note
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the action without disclosing behavioral traits. It doesn't explain what archiving does (e.g., moves note to archive, hides it from default views, requires permissions, or if it's reversible). This leaves critical gaps 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?
The description is extremely concise with just three words, front-loaded and zero waste. It efficiently conveys the core action without unnecessary detail, though this brevity contributes to gaps in other dimensions.
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 no annotations and no output schema, the description is incomplete. It doesn't cover what archiving entails, success/failure behavior, return values, or how it differs from siblings like 'trash_note'. Given the complexity and lack of structured data, more context is needed.
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?
The input schema has 100% description coverage, so the schema fully documents the single parameter 'note_id'. The description adds no parameter semantics beyond implying 'note_id' is needed, which is minimal but acceptable given high schema coverage. Baseline is 3, but with zero parameters explained in description and only one parameter total, it slightly exceeds minimum.
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 'Archive a note' clearly states the action (archive) and resource (note), but it's vague about what archiving entails and doesn't differentiate from sibling tools like 'trash_note' or 'unarchive_note'. It provides basic purpose but lacks specificity about scope or effect.
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 is provided on when to use this tool versus alternatives like 'trash_note' or 'unarchive_note'. The description doesn't mention prerequisites, such as whether the note must be unarchived first, or context for choosing archiving over other operations.
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 Bear
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Note title | |
| text | No | Note content (supports Markdown) | |
| tags | No | List of tags to add (without # prefix) | |
| pin | No | Pin the note to the top | |
| open_note | No | Open the note in Bear after creation |
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 but offers minimal information. It states the tool creates a note but doesn't cover permissions needed, whether creation is idempotent, error conditions (e.g., duplicate titles), or what happens on success (e.g., returns a note ID). This leaves significant gaps 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?
The description is a single, direct sentence with zero wasted words. It front-loads the core purpose ('Create a new note in Bear') without unnecessary elaboration, making it highly efficient and easy to parse.
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 no annotations and no output schema, the description is insufficient. It doesn't explain what happens after creation (e.g., whether the note is saved locally, synced, or returns an identifier), error handling, or dependencies like Bear being installed. This leaves critical context gaps for an agent.
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 fully documents all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples, format details, or constraints). This meets the baseline for high 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 clearly states the action ('Create') and the resource ('a new note in Bear'), making the purpose immediately obvious. It distinguishes itself from siblings like 'add_text' or 'add_tags' by being the primary creation tool rather than a modification tool.
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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., Bear app must be running), when not to use it (e.g., for updating existing notes), or direct alternatives among siblings like 'add_text' for appending to notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_archived_notesC
Get all archived notes
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states 'Get all archived notes', which implies a read-only operation, but doesn't disclose behavioral traits such as pagination, rate limits, authentication needs, or what happens if no archived notes exist. The description is minimal and lacks critical context for safe invocation.
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 sentence 'Get all archived notes', which is front-loaded and wastes no words. However, it's arguably too concise—it could benefit from a bit more detail (e.g., on scope or behavior) without becoming verbose, slightly reducing efficiency.
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 complexity (a retrieval tool with siblings), no annotations, and no output schema, the description is incomplete. It doesn't explain what 'all' means, how results are returned, or any limitations. For a tool in a note-taking context with multiple alternatives, more guidance on usage and output is needed.
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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add param info, which is appropriate here. Baseline is 4 for zero parameters, as there's nothing to compensate for and the schema fully covers the absence of inputs.
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 'Get all archived notes' clearly states the action (get) and resource (archived notes), but it's vague about scope—does 'all' mean all archived notes globally, or within a workspace/user context? It distinguishes from siblings like 'get_notes' (non-archived) and 'unarchive_note', but lacks specificity on filtering or ordering.
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 is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used instead of 'get_notes' with a filter, or when 'search_bear' might be more appropriate for finding specific archived notes. The description implies usage for retrieving archived notes but offers no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_note_by_idC
Get a specific note by its unique identifier
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool retrieves a note but doesn't disclose behavioral traits such as error handling (e.g., if the ID is invalid), authentication needs, rate limits, or response format. For a read operation without annotations, this leaves significant gaps in understanding how it behaves beyond basic purpose.
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, clear sentence with zero waste—it directly states the tool's purpose without redundancy. It's appropriately sized for a simple retrieval tool and front-loaded with essential information, making it highly efficient and easy to parse.
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 tool's simplicity (one parameter, read operation) but lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., note content, metadata) or potential errors, leaving the agent without enough context to use it effectively beyond basic invocation.
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%, with the single parameter 'note_id' fully documented in the schema as 'The unique identifier of the note (ZUNIQUEIDENTIFIER)'. The description adds no additional meaning beyond implying retrieval by ID, so it meets the baseline of 3 where the schema handles parameter documentation adequately.
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 clearly states the action ('Get') and resource ('a specific note'), specifying retrieval by unique identifier. It distinguishes from siblings like 'get_notes' (plural retrieval) and 'get_notes_by_tag' (filtered retrieval), though not explicitly named. However, it lacks explicit sibling differentiation, preventing a perfect score.
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 is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid note_id), exclusions, or comparisons to siblings like 'get_notes' (for multiple notes) or 'open_note' (which might have different behavior). The description implies usage for single-note retrieval but offers no contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notesB
Get all notes from Bear
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states the action ('Get all notes') but doesn't describe what 'Get' entails—such as whether it returns a list, the format of notes, pagination behavior, or any permissions required. This leaves significant gaps in understanding how the tool behaves in practice.
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, efficient sentence with zero waste—'Get all notes from Bear' directly conveys the core action without unnecessary words. It's front-loaded and appropriately sized for a simple tool, making it easy for an agent to parse quickly.
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 lack of annotations and output schema, the description is incomplete for a tool that likely returns multiple notes. It doesn't explain what 'notes' consist of, how they're structured, or any limitations (e.g., number of notes returned). For a retrieval tool with no structured output guidance, more context is needed to help the agent use it effectively.
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?
The input schema has 0 parameters with 100% description coverage, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately avoids mentioning any. This meets the baseline for tools with no parameters, as it doesn't mislead or omit necessary details.
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 clearly states the verb ('Get') and resource ('all notes from Bear'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'get_notes_by_tag' or 'get_archived_notes', but the 'all notes' phrasing implies a comprehensive retrieval without filtering.
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 guidance on when to use this tool versus alternatives like 'get_notes_by_tag' or 'get_archived_notes'. It lacks any mention of prerequisites, exclusions, or context for choosing this over sibling tools, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notes_by_tagB
Get all notes with a specific tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag name (without # prefix) |
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 states the tool retrieves notes but does not describe any behavioral traits such as permissions needed, rate limits, pagination, or what happens if no notes match the tag. For a read operation with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence: 'Get all notes with a specific tag.' It is front-loaded with the core purpose and contains no redundant information, making it highly concise and well-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?
Given the tool's simplicity (one parameter, read-only operation) and high schema coverage, the description is minimally adequate. However, with no annotations or output schema, it lacks details on behavioral aspects and return values, which could hinder the agent's ability to use the tool effectively in complex scenarios.
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?
The input schema has 100% description coverage, with the 'tag' parameter documented as 'Tag name (without # prefix).' The description adds no additional meaning beyond this, as it only reiterates the purpose without detailing parameter usage or constraints. 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 clearly states the tool's purpose: 'Get all notes with a specific tag.' It specifies the verb ('Get') and resource ('notes'), and the scope ('with a specific tag') is explicit. However, it does not distinguish this tool from siblings like 'get_notes' or 'get_notes_like,' which might also retrieve notes, so it 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 guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or comparisons to sibling tools such as 'get_notes' or 'search_bear,' leaving the agent to infer usage based on the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notes_likeB
Get notes that include a specific text string
| Name | Required | Description | Default |
|---|---|---|---|
| like | Yes | Find notes that have this text |
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 states the tool retrieves notes with a text string but doesn't disclose behavioral traits like whether it's read-only, how results are returned (e.g., list format, pagination), performance implications, or error handling. This leaves significant gaps for a tool with no structured safety hints.
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, efficient sentence that front-loads the core functionality ('Get notes that include a specific text string'). There is zero waste, and every word earns its place by clarifying the tool's purpose.
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 no annotations and no output schema, the description is incomplete. It lacks details on return values (e.g., what data is included in notes), behavioral context (e.g., read-only nature, potential side effects), and usage nuances compared to siblings. For a search tool with one parameter, this minimal description leaves too much undefined.
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%, with the parameter 'like' clearly documented in the schema as 'Find notes that have this text'. The description adds no additional meaning beyond this, such as syntax examples or matching behavior (e.g., case sensitivity). Baseline 3 is appropriate since 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('notes'), specifying they must include a text string. It distinguishes from siblings like 'get_notes' (no filtering) and 'get_note_by_id' (ID-based), but doesn't explicitly name alternatives.
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 by the description's focus on text-based filtering, suggesting it's for finding notes containing specific text rather than by ID, tag, or other criteria. However, no explicit guidance on when to use this versus alternatives like 'search_bear' or 'get_notes_by_tag' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsB
Get all note tags. You can search notes by tags with get_notes_like
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states the tool retrieves tags but doesn't disclose behavioral traits such as whether it returns all tags at once, if there are rate limits, authentication needs, or how it handles errors. This leaves significant gaps in understanding the tool's behavior.
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 concise and front-loaded, with the main purpose stated first: 'Get all note tags.' The second sentence adds useful context about searching notes. There's no wasted text, making it efficient, though it could be slightly more structured to explicitly differentiate from siblings.
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 tool's low complexity (0 parameters, no output schema, no annotations), the description is somewhat complete but lacks depth. It covers the basic purpose and hints at usage, but without annotations or output schema, it should provide more behavioral context (e.g., return format, error handling) to be fully helpful for an AI agent.
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?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description doesn't add any parameter semantics, which is acceptable in this case. The baseline score for 0 parameters is 4, as the schema fully covers the lack of inputs.
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 clearly states the tool's purpose: 'Get all note tags.' This specifies the verb ('Get') and resource ('note tags'), making it easy to understand what the tool does. However, it doesn't explicitly distinguish it from sibling tools like 'get_notes_by_tag' or 'open_tag', which reduces clarity in comparison.
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 some usage guidance by mentioning 'You can search notes by tags with get_notes_like,' which implies an alternative use case. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_notes_by_tag' or 'open_tag', leaving the context somewhat implied rather than clearly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_noteC
Open a specific note in Bear
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Open' suggests an interactive or display action, but the description doesn't clarify what 'open' means operationally—whether it launches an app, returns content, or has side effects. This leaves significant gaps in understanding the tool's behavior.
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, efficient sentence that directly states the tool's purpose with zero wasted words. It's appropriately sized for a simple tool and front-loaded with essential information.
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 no annotations and no output schema, the description is incomplete for a tool that presumably performs an action on a note. It doesn't explain what 'open' entails—whether it returns data, triggers UI, or has other effects—leaving the agent uncertain about outcomes and usage context.
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 input schema fully documents the 'note_id' parameter. The description adds no additional semantic context about the parameter beyond what's in the schema, meeting the baseline for high coverage but not providing extra value.
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 clearly states the action ('Open') and target resource ('a specific note in Bear'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_note_by_id' which might retrieve similar information, so it doesn't reach the highest score.
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 guidance on when to use this tool versus alternatives like 'get_note_by_id' or 'get_notes'. It doesn't mention prerequisites, context, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_tagB
Open Bear and show all notes with a specific tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag name (without # prefix) |
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 opening Bear and showing notes, implying a read-only operation, but fails to detail aspects like whether this triggers a UI action, requires specific permissions, or has side effects like rate limits. This leaves significant gaps in understanding the tool's behavior.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.
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 tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but incomplete. It covers the basic action but lacks details on behavioral traits, usage context, or output expectations, which are needed for a mutation-like tool (opening an application). This results in a minimal viable score.
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?
The input schema has 100% description coverage, with the 'tag' parameter clearly documented as 'Tag name (without # prefix)'. The description adds minimal value beyond this, only implying the tag is used for filtering notes. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
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 clearly states the action ('Open Bear and show all notes') and the resource ('with a specific tag'), making the purpose understandable. However, it doesn't explicitly distinguish this tool from sibling tools like 'get_notes_by_tag' or 'search_bear', which might have overlapping functionality, so it doesn't reach the highest score.
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 guidance on when to use this tool versus alternatives such as 'get_notes_by_tag' or 'open_note'. It lacks explicit instructions on prerequisites, context, or exclusions, leaving the agent to infer usage based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_tagB
Rename a tag across all notes
| Name | Required | Description | Default |
|---|---|---|---|
| old_tag | Yes | Current tag name (without # prefix) | |
| new_tag | Yes | New tag name (without # prefix) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the scope ('across all notes'), implying a bulk operation, but fails to disclose critical behaviors like whether this is a destructive mutation, if it requires specific permissions, or what happens on failure (e.g., if the old tag doesn't exist).
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, efficient sentence with zero waste. It is front-loaded with the core action and scope, making it easy to parse quickly without unnecessary elaboration.
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 no annotations and no output schema, this is a mutation tool with significant gaps. The description lacks details on behavioral traits (e.g., side effects, error handling) and output expectations, making it incomplete for safe and effective use by an agent.
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 both parameters fully. The description adds no additional meaning beyond implying the parameters are used for renaming, which is obvious from the tool name. This meets the baseline for high 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 clearly states the specific action ('Rename') and resource ('a tag across all notes'), distinguishing it from sibling tools like 'get_tags' (read-only) or 'add_tags' (adds new tags). It precisely communicates the tool's function without ambiguity.
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 is provided on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used instead of manually editing tags in notes or if there are prerequisites like tag existence. The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_bearC
Open Bear and show search results for a term
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Search term |
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 states the tool opens Bear and shows search results, but doesn't describe what happens if Bear isn't installed, whether it launches Bear if closed, how results are displayed, if it's interactive, or any side effects. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 extremely concise (one sentence) and front-loaded with the core action. Every word earns its place, with no redundant or vague phrasing. It efficiently communicates the essential purpose without unnecessary detail.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'show search results' entails—whether it returns data, opens a UI, or provides a list. For a tool that interacts with an external application (Bear), more context about behavior and outcomes is needed to be fully helpful to an AI agent.
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?
The schema description coverage is 100%, with the single parameter 'term' clearly documented as 'Search term'. The description adds minimal value beyond the schema by implying the term is used for searching, but doesn't provide additional context like format expectations, examples, or search behavior (e.g., partial matches). Baseline 3 is appropriate given 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 clearly states the tool's purpose with a specific verb ('Open') and resource ('Bear'), and specifies the action ('show search results for a term'). It distinguishes from siblings like 'open_note' or 'get_notes' by focusing on search functionality. However, it doesn't explicitly differentiate from potential search-related siblings like 'get_notes_like'.
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 guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'get_notes_like' (which might search notes) or 'open_note' (which opens a specific note). There are no prerequisites, exclusions, or contextual recommendations provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trash_noteC
Move a note to trash
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Move to trash' implies a destructive/mutative operation that likely requires permissions and may be irreversible, but the description doesn't state this explicitly. It doesn't mention whether the note remains recoverable, what happens to linked tags/text, or any rate limits/errors.
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, direct sentence with zero wasted words. It's front-loaded with the core action and resource. Every word earns its place without redundancy or fluff.
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 operation tool with no annotations and no output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, reversibility, side effects, or response format. Given the mutation nature and sibling context (archive/unarchive), more guidance is needed for safe agent use.
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% with one parameter fully documented, so the baseline is 3. The description adds no additional parameter context beyond what the schema provides (note_id requirement). It doesn't explain format expectations or validation rules for the identifier.
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 clearly states the action ('Move') and resource ('a note') with the specific outcome ('to trash'). It distinguishes from siblings like 'archive_note' and 'unarchive_note' by specifying trash rather than archive, but doesn't explicitly contrast with deletion or other destructive operations. The purpose is specific and unambiguous.
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 guidance on when to use this tool versus alternatives like 'archive_note' or potential deletion tools. It doesn't mention prerequisites, consequences, or recovery options. The agent must infer usage from the name alone without contextual help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unarchive_noteC
Unarchive a note
| Name | Required | Description | Default |
|---|---|---|---|
| note_id | Yes | The unique identifier of the note (ZUNIQUEIDENTIFIER) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Unarchive' implies a state change (from archived to active), but it doesn't specify permissions required, side effects, error conditions, or what happens if the note isn't archived. This leaves critical behavioral traits undocumented.
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 extremely concise—three words—with zero wasted language. It's front-loaded and directly states the tool's function without unnecessary elaboration, making it highly efficient for quick comprehension.
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 tool's mutation nature (state change) and lack of annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects like success/failure responses, side effects, or prerequisites, leaving significant gaps for an agent to understand the tool fully.
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 fully documents the 'note_id' parameter. The description adds no additional meaning beyond implying the note must be archived, but this is minimal value. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 clearly states the action ('unarchive') and resource ('a note'), making the tool's purpose immediately understandable. It distinguishes from siblings like 'archive_note' by specifying the opposite operation. However, it doesn't explicitly mention what system or context the note belongs to, which slightly limits specificity.
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 guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the note must be archived first), exclusions, or related tools like 'archive_note' or 'trash_note', leaving usage context entirely implicit.
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.
16 tool updates
v1.1.0- First observed
add_tags - First observed
add_text - First observed
archive_note - First observed
create_note - First observed
get_archived_notes - First observed
get_note_by_id - First observed
get_notes - First observed
get_notes_by_tag - First observed
get_notes_like - First observed
get_tags - First observed
open_note - First observed
open_tag - First observed
rename_tag - First observed
search_bear - First observed
trash_note - First observed
unarchive_note
TDQS
Scored across 16 tools
Every tool has a clearly distinct purpose with no ambiguity. For example, 'add_tags' and 'add_text' are clearly different operations on notes, while 'get_notes_by_tag' and 'get_notes_like' target different filtering criteria. The descriptions make each tool's specific function immediately apparent.
All tools follow a consistent verb_noun pattern with snake_case throughout (e.g., 'create_note', 'get_notes_by_tag', 'archive_note'). The naming is predictable and readable, with verbs like 'add', 'get', 'open', 'rename', 'search', and 'trash' used appropriately across the set.
With 16 tools, this is well-scoped for a note management server like Bear. Each tool earns its place by covering distinct operations such as CRUD for notes, tag management, archiving, and search, without feeling bloated or insufficient for the domain.
The tool set provides complete coverage for note management in Bear. It includes full CRUD operations (create, read, update via add_tags/add_text, delete via trash_note), lifecycle management (archive/unarchive), tag operations (get, rename), and comprehensive search capabilities (by ID, tag, text, or general search). No obvious gaps exist for typical agent workflows.
Maintenance
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server that provides Claude with access to search, retrieve, and analyze notes from the Bear App through natural language queries.78-
- AlicenseAqualityDmaintenanceA Model Context Protocol server that integrates with Bear App, enabling AI assistants to create, search, modify, and organize notes and tags through X-callback-URL scheme.168 npm1ISC
- AlicenseAqualityBmaintenanceMCP server for Bear notes via CloudKit. Full CRUD, tags, search, TODOs, attachments, and a context library for curated LLM knowledge bases.3564MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants read and write access to Bear notes on macOS.-