bear-notes-mcp 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -19,7 +19,7 @@ Search, read, create, and update your Bear Notes from any AI assistant.
19
19
  - **`bear-open-note`** - Read the full text content of a Bear note including OCR'd text from attached images and PDFs
20
20
  - **`bear-create-note`** - Create a new note in your Bear library with optional title, content, and tags
21
21
  - **`bear-search-notes`** - Find notes by searching text content, filtering by tags, or date ranges. Includes OCR search in attachments
22
- - **`bear-add-text`** - Add text to an existing Bear note at the beginning or end, optionally targeting a specific section
22
+ - **`bear-add-text`** - Insert text at the beginning or end of a Bear note, or within a specific section identified by its header
23
23
  - **`bear-replace-text`** - Replace content in an existing Bear note — either the full body or a specific section. Requires content replacement to be enabled in settings.
24
24
  - **`bear-add-file`** - Attach a file (image, PDF, Excel, etc.) to an existing Bear note using base64-encoded content
25
25
  - **`bear-list-tags`** - List all tags in your Bear library as a hierarchical tree with note counts
package/dist/config.js CHANGED
@@ -1,4 +1,4 @@
1
- export const APP_VERSION = '2.5.0';
1
+ export const APP_VERSION = '2.6.0';
2
2
  export const BEAR_URL_SCHEME = 'bear://x-callback-url/';
3
3
  export const CORE_DATA_EPOCH_OFFSET = 978307200; // 2001-01-01 to Unix epoch
4
4
  export const DEFAULT_SEARCH_LIMIT = 50;
package/dist/main.js CHANGED
@@ -11,6 +11,16 @@ import { buildBearUrl, executeBearXCallbackApi } from './bear-urls.js';
11
11
  const server = new McpServer({
12
12
  name: 'bear-notes-mcp',
13
13
  version: APP_VERSION,
14
+ }, {
15
+ instructions: [
16
+ 'This server integrates with Bear, a markdown note-taking app.',
17
+ 'Each note has a unique ID, a title, a body, and optional tags.',
18
+ 'Notes use markdown headings (##, ###, etc.) to define sections.',
19
+ 'Use bear-search-notes to find note IDs before reading or modifying notes.',
20
+ 'To modify note content: bear-add-text inserts text without touching existing content; bear-replace-text overwrites content.',
21
+ 'When targeting a section by header, operations apply only to the direct content under that header — not nested sub-sections.',
22
+ 'To modify sub-sections, make separate calls targeting each sub-header.',
23
+ ].join('\n'),
14
24
  });
15
25
  server.registerTool('bear-open-note', {
16
26
  title: 'Open Bear Note',
@@ -201,7 +211,7 @@ Try different search criteria or check if notes exist in Bear Notes.`);
201
211
  });
202
212
  server.registerTool('bear-add-text', {
203
213
  title: 'Add Text to Note',
204
- description: 'Add text to an existing Bear note at the beginning or end. Can target a specific section using header. Use bear-search-notes first to get the note ID.',
214
+ description: 'Insert text at the beginning or end of a Bear note, or within a specific section identified by its header. Use bear-search-notes first to get the note ID. To insert without replacing existing text use this tool; to overwrite the direct content under a header use bear-replace-text.',
205
215
  inputSchema: {
206
216
  id: z
207
217
  .string()
@@ -217,7 +227,7 @@ server.registerTool('bear-add-text', {
217
227
  .string()
218
228
  .trim()
219
229
  .optional()
220
- .describe('Optional section header to target (adds text within that section)'),
230
+ .describe('Optional section header to target (adds text within that section). Accepts any heading level, including the note title (H1).'),
221
231
  position: z
222
232
  .enum(['beginning', 'end'])
223
233
  .optional()
@@ -235,7 +245,7 @@ server.registerTool('bear-add-text', {
235
245
  });
236
246
  server.registerTool('bear-replace-text', {
237
247
  title: 'Replace Note Content',
238
- description: 'Replace content in an existing Bear note — either the full body or a specific section. Requires content replacement to be enabled in extension settings. Use bear-search-notes first to get the note ID.',
248
+ description: 'Replace content in an existing Bear note — either the full body or a specific section. Requires content replacement to be enabled in extension settings. Use bear-search-notes first to get the note ID. To add text without replacing existing content use bear-add-text instead.',
239
249
  inputSchema: {
240
250
  id: z
241
251
  .string()
@@ -249,12 +259,12 @@ server.registerTool('bear-replace-text', {
249
259
  .string()
250
260
  .trim()
251
261
  .min(1, 'Text content is required')
252
- .describe('Replacement text content'),
262
+ .describe('Replacement text content. When scope is "section", provide only the direct content for the targeted header — do not include markdown sub-headers (###). Replace sub-sections with separate calls targeting each sub-header.'),
253
263
  header: z
254
264
  .string()
255
265
  .trim()
256
266
  .optional()
257
- .describe('Section header to target — required when scope is "section", forbidden when scope is "full-note-body"'),
267
+ .describe('Section header to target — required when scope is "section", forbidden when scope is "full-note-body". Accepts any heading level, including the note title (H1).'),
258
268
  },
259
269
  annotations: {
260
270
  readOnlyHint: false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bear-notes-mcp",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "Bear Notes MCP server with TypeScript and native SQLite",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",