@n24q02m/better-notion-mcp 1.0.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.
Files changed (69) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +240 -0
  3. package/bin/cli.mjs +117 -0
  4. package/build/scripts/start-server.d.ts +6 -0
  5. package/build/scripts/start-server.d.ts.map +1 -0
  6. package/build/scripts/start-server.js +21 -0
  7. package/build/scripts/start-server.js.map +1 -0
  8. package/build/src/init-server.d.ts +29 -0
  9. package/build/src/init-server.d.ts.map +1 -0
  10. package/build/src/init-server.js +32 -0
  11. package/build/src/init-server.js.map +1 -0
  12. package/build/src/tools/composite/blocks.d.ts +16 -0
  13. package/build/src/tools/composite/blocks.d.ts.map +1 -0
  14. package/build/src/tools/composite/blocks.js +104 -0
  15. package/build/src/tools/composite/blocks.js.map +1 -0
  16. package/build/src/tools/composite/comments.d.ts +16 -0
  17. package/build/src/tools/composite/comments.d.ts.map +1 -0
  18. package/build/src/tools/composite/comments.js +69 -0
  19. package/build/src/tools/composite/comments.js.map +1 -0
  20. package/build/src/tools/composite/content.d.ts +13 -0
  21. package/build/src/tools/composite/content.d.ts.map +1 -0
  22. package/build/src/tools/composite/content.js +50 -0
  23. package/build/src/tools/composite/content.js.map +1 -0
  24. package/build/src/tools/composite/databases.d.ts +33 -0
  25. package/build/src/tools/composite/databases.d.ts.map +1 -0
  26. package/build/src/tools/composite/databases.js +419 -0
  27. package/build/src/tools/composite/databases.js.map +1 -0
  28. package/build/src/tools/composite/pages.d.ts +24 -0
  29. package/build/src/tools/composite/pages.d.ts.map +1 -0
  30. package/build/src/tools/composite/pages.js +316 -0
  31. package/build/src/tools/composite/pages.js.map +1 -0
  32. package/build/src/tools/composite/search.d.ts +23 -0
  33. package/build/src/tools/composite/search.d.ts.map +1 -0
  34. package/build/src/tools/composite/search.js +94 -0
  35. package/build/src/tools/composite/search.js.map +1 -0
  36. package/build/src/tools/composite/users.d.ts +15 -0
  37. package/build/src/tools/composite/users.d.ts.map +1 -0
  38. package/build/src/tools/composite/users.js +93 -0
  39. package/build/src/tools/composite/users.js.map +1 -0
  40. package/build/src/tools/composite/workspace.d.ts +25 -0
  41. package/build/src/tools/composite/workspace.d.ts.map +1 -0
  42. package/build/src/tools/composite/workspace.js +72 -0
  43. package/build/src/tools/composite/workspace.js.map +1 -0
  44. package/build/src/tools/helpers/errors.d.ts +43 -0
  45. package/build/src/tools/helpers/errors.d.ts.map +1 -0
  46. package/build/src/tools/helpers/errors.js +162 -0
  47. package/build/src/tools/helpers/errors.js.map +1 -0
  48. package/build/src/tools/helpers/markdown.d.ts +45 -0
  49. package/build/src/tools/helpers/markdown.d.ts.map +1 -0
  50. package/build/src/tools/helpers/markdown.js +320 -0
  51. package/build/src/tools/helpers/markdown.js.map +1 -0
  52. package/build/src/tools/helpers/pagination.d.ts +42 -0
  53. package/build/src/tools/helpers/pagination.d.ts.map +1 -0
  54. package/build/src/tools/helpers/pagination.js +72 -0
  55. package/build/src/tools/helpers/pagination.js.map +1 -0
  56. package/build/src/tools/helpers/properties.d.ts +10 -0
  57. package/build/src/tools/helpers/properties.d.ts.map +1 -0
  58. package/build/src/tools/helpers/properties.js +57 -0
  59. package/build/src/tools/helpers/properties.js.map +1 -0
  60. package/build/src/tools/helpers/richtext.d.ts +85 -0
  61. package/build/src/tools/helpers/richtext.d.ts.map +1 -0
  62. package/build/src/tools/helpers/richtext.js +146 -0
  63. package/build/src/tools/helpers/richtext.js.map +1 -0
  64. package/build/src/tools/registry.d.ts +10 -0
  65. package/build/src/tools/registry.d.ts.map +1 -0
  66. package/build/src/tools/registry.js +342 -0
  67. package/build/src/tools/registry.js.map +1 -0
  68. package/build/tsconfig.tsbuildinfo +1 -0
  69. package/package.json +71 -0
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Blocks Mega Tool
3
+ * All block operations in one unified interface
4
+ */
5
+ import { NotionMCPError, withErrorHandling } from '../helpers/errors.js';
6
+ import { blocksToMarkdown, markdownToBlocks } from '../helpers/markdown.js';
7
+ import { autoPaginate } from '../helpers/pagination.js';
8
+ /**
9
+ * Unified blocks tool
10
+ * Maps to: GET/PATCH/DELETE /v1/blocks/{id} and GET/PATCH /v1/blocks/{id}/children
11
+ */
12
+ export async function blocks(notion, input) {
13
+ return withErrorHandling(async () => {
14
+ if (!input.block_id) {
15
+ throw new NotionMCPError('block_id required', 'VALIDATION_ERROR', 'Provide block_id');
16
+ }
17
+ switch (input.action) {
18
+ case 'get': {
19
+ const block = await notion.blocks.retrieve({ block_id: input.block_id });
20
+ return {
21
+ action: 'get',
22
+ block_id: block.id,
23
+ type: block.type,
24
+ has_children: block.has_children,
25
+ archived: block.archived,
26
+ block
27
+ };
28
+ }
29
+ case 'children': {
30
+ const blocksList = await autoPaginate((cursor) => notion.blocks.children.list({
31
+ block_id: input.block_id,
32
+ start_cursor: cursor,
33
+ page_size: 100
34
+ }));
35
+ const markdown = blocksToMarkdown(blocksList);
36
+ return {
37
+ action: 'children',
38
+ block_id: input.block_id,
39
+ total_children: blocksList.length,
40
+ markdown,
41
+ blocks: blocksList
42
+ };
43
+ }
44
+ case 'append': {
45
+ if (!input.content) {
46
+ throw new NotionMCPError('content required for append', 'VALIDATION_ERROR', 'Provide markdown content');
47
+ }
48
+ const blocksList = markdownToBlocks(input.content);
49
+ await notion.blocks.children.append({
50
+ block_id: input.block_id,
51
+ children: blocksList
52
+ });
53
+ return {
54
+ action: 'append',
55
+ block_id: input.block_id,
56
+ appended_count: blocksList.length
57
+ };
58
+ }
59
+ case 'update': {
60
+ if (!input.content) {
61
+ throw new NotionMCPError('content required for update', 'VALIDATION_ERROR', 'Provide markdown content');
62
+ }
63
+ const block = await notion.blocks.retrieve({ block_id: input.block_id });
64
+ const blockType = block.type;
65
+ const newBlocks = markdownToBlocks(input.content);
66
+ if (newBlocks.length === 0) {
67
+ throw new NotionMCPError('Content must produce at least one block', 'VALIDATION_ERROR', 'Invalid markdown');
68
+ }
69
+ const newContent = newBlocks[0];
70
+ let updatePayload = {};
71
+ // Build update based on block type
72
+ if (['paragraph', 'heading_1', 'heading_2', 'heading_3', 'bulleted_list_item', 'numbered_list_item', 'quote'].includes(blockType)) {
73
+ updatePayload[blockType] = {
74
+ rich_text: newContent[blockType]?.rich_text || []
75
+ };
76
+ }
77
+ else {
78
+ throw new NotionMCPError(`Block type '${blockType}' cannot be updated`, 'VALIDATION_ERROR', 'Only text blocks can be updated');
79
+ }
80
+ await notion.blocks.update({
81
+ block_id: input.block_id,
82
+ ...updatePayload
83
+ });
84
+ return {
85
+ action: 'update',
86
+ block_id: input.block_id,
87
+ type: blockType,
88
+ updated: true
89
+ };
90
+ }
91
+ case 'delete': {
92
+ await notion.blocks.delete({ block_id: input.block_id });
93
+ return {
94
+ action: 'delete',
95
+ block_id: input.block_id,
96
+ deleted: true
97
+ };
98
+ }
99
+ default:
100
+ throw new NotionMCPError(`Unknown action: ${input.action}`, 'VALIDATION_ERROR', 'Supported actions: get, children, append, update, delete');
101
+ }
102
+ })();
103
+ }
104
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../src/tools/composite/blocks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAQvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAAc,EACd,KAAkB;IAElB,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpB,MAAM,IAAI,cAAc,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;QACvF,CAAC;QAED,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,KAAK,CAAC,CAAC,CAAC;gBACX,MAAM,KAAK,GAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7E,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,KAAK;iBACN,CAAA;YACH,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,UAAU,GAAG,MAAM,YAAY,CACnC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACtC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,YAAY,EAAE,MAAM;oBACpB,SAAS,EAAE,GAAG;iBACf,CAAC,CACH,CAAA;gBACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAiB,CAAC,CAAA;gBACpD,OAAO;oBACL,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,cAAc,EAAE,UAAU,CAAC,MAAM;oBACjC,QAAQ;oBACR,MAAM,EAAE,UAAU;iBACnB,CAAA;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,CAAA;gBACzG,CAAC;gBACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAClD,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,UAAiB;iBAC5B,CAAC,CAAA;gBACF,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,cAAc,EAAE,UAAU,CAAC,MAAM;iBAClC,CAAA;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,cAAc,CAAC,6BAA6B,EAAE,kBAAkB,EAAE,0BAA0B,CAAC,CAAA;gBACzG,CAAC;gBACD,MAAM,KAAK,GAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBAC7E,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAA;gBAC5B,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAEjD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,cAAc,CAAC,yCAAyC,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;gBAC7G,CAAC;gBAED,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC/B,IAAI,aAAa,GAAQ,EAAE,CAAA;gBAE3B,mCAAmC;gBACnC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClI,aAAa,CAAC,SAAS,CAAC,GAAG;wBACzB,SAAS,EAAG,UAAkB,CAAC,SAAS,CAAC,EAAE,SAAS,IAAI,EAAE;qBAC3D,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,cAAc,CACtB,eAAe,SAAS,qBAAqB,EAC7C,kBAAkB,EAClB,iCAAiC,CAClC,CAAA;gBACH,CAAC;gBAED,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,GAAG,aAAa;iBACV,CAAC,CAAA;gBAET,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAA;gBACxD,OAAO;oBACL,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YAED;gBACE,MAAM,IAAI,cAAc,CACtB,mBAAmB,KAAK,CAAC,MAAM,EAAE,EACjC,kBAAkB,EAClB,0DAA0D,CAC3D,CAAA;QACL,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Comments Composite Tool
3
+ * Manage page comments
4
+ */
5
+ import { Client } from '@notionhq/client';
6
+ export interface CommentsManageInput {
7
+ page_id?: string;
8
+ discussion_id?: string;
9
+ action: 'list' | 'create';
10
+ content?: string;
11
+ }
12
+ /**
13
+ * Manage comments (list, create, resolve)
14
+ */
15
+ export declare function commentsManage(notion: Client, input: CommentsManageInput): Promise<any>;
16
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAKzC,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,GAAG,CAAC,CAmEd"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Comments Composite Tool
3
+ * Manage page comments
4
+ */
5
+ import { withErrorHandling } from '../helpers/errors.js';
6
+ import { autoPaginate } from '../helpers/pagination.js';
7
+ import * as RichText from '../helpers/richtext.js';
8
+ /**
9
+ * Manage comments (list, create, resolve)
10
+ */
11
+ export async function commentsManage(notion, input) {
12
+ return withErrorHandling(async () => {
13
+ switch (input.action) {
14
+ case 'list': {
15
+ if (!input.page_id) {
16
+ throw new Error('page_id required for list action');
17
+ }
18
+ const comments = await autoPaginate(async (cursor) => {
19
+ return await notion.comments.list({
20
+ block_id: input.page_id,
21
+ start_cursor: cursor
22
+ });
23
+ });
24
+ return {
25
+ page_id: input.page_id,
26
+ total_comments: comments.length,
27
+ comments: comments.map((comment) => ({
28
+ id: comment.id,
29
+ created_time: comment.created_time,
30
+ created_by: comment.created_by,
31
+ discussion_id: comment.discussion_id,
32
+ text: RichText.extractPlainText(comment.rich_text),
33
+ parent: comment.parent
34
+ }))
35
+ };
36
+ }
37
+ case 'create': {
38
+ if (!input.content) {
39
+ throw new Error('content required for create action');
40
+ }
41
+ // Either page_id or discussion_id must be provided
42
+ if (!input.page_id && !input.discussion_id) {
43
+ throw new Error('Either page_id or discussion_id is required for create action');
44
+ }
45
+ const createParams = {
46
+ rich_text: [RichText.text(input.content)]
47
+ };
48
+ // Add parent or discussion_id based on input
49
+ if (input.discussion_id) {
50
+ createParams.discussion_id = input.discussion_id;
51
+ }
52
+ else {
53
+ createParams.parent = {
54
+ page_id: input.page_id
55
+ };
56
+ }
57
+ const comment = await notion.comments.create(createParams);
58
+ return {
59
+ comment_id: comment.id,
60
+ discussion_id: comment.discussion_id,
61
+ created: true
62
+ };
63
+ }
64
+ default:
65
+ throw new Error(`Unsupported action: ${input.action}`);
66
+ }
67
+ })();
68
+ }
69
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../../src/tools/composite/comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AASlD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAA0B;IAE1B,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAClC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;gBACrD,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,EAAE,MAAM,EAAE,EAAE;oBACf,OAAO,MAAO,MAAM,CAAC,QAAgB,CAAC,IAAI,CAAC;wBACzC,QAAQ,EAAE,KAAK,CAAC,OAAO;wBACvB,YAAY,EAAE,MAAM;qBACrB,CAAC,CAAA;gBACJ,CAAC,CACF,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,cAAc,EAAE,QAAQ,CAAC,MAAM;oBAC/B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;wBACxC,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,YAAY,EAAE,OAAO,CAAC,YAAY;wBAClC,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;wBACpC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;wBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB,CAAC,CAAC;iBACJ,CAAA;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;gBACvD,CAAC;gBAED,mDAAmD;gBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;gBAClF,CAAC;gBAED,MAAM,YAAY,GAAQ;oBACxB,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAC1C,CAAA;gBAED,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxB,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;gBAClD,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,MAAM,GAAG;wBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAA;gBACH,CAAC;gBAED,MAAM,OAAO,GAAG,MAAO,MAAM,CAAC,QAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBAEnE,OAAO;oBACL,UAAU,EAAE,OAAO,CAAC,EAAE;oBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Content Conversion Tool
3
+ * Convert between Markdown and Notion blocks
4
+ */
5
+ export interface ContentConvertInput {
6
+ direction: 'markdown-to-blocks' | 'blocks-to-markdown';
7
+ content: string | any[];
8
+ }
9
+ /**
10
+ * Convert content between formats
11
+ */
12
+ export declare function contentConvert(input: ContentConvertInput): Promise<any>;
13
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAAA;IACtD,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,GAAG,CAAC,CAwCd"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Content Conversion Tool
3
+ * Convert between Markdown and Notion blocks
4
+ */
5
+ import { withErrorHandling } from '../helpers/errors.js';
6
+ import { blocksToMarkdown, markdownToBlocks } from '../helpers/markdown.js';
7
+ /**
8
+ * Convert content between formats
9
+ */
10
+ export async function contentConvert(input) {
11
+ return withErrorHandling(async () => {
12
+ switch (input.direction) {
13
+ case 'markdown-to-blocks': {
14
+ if (typeof input.content !== 'string') {
15
+ throw new Error('Content must be a string for markdown-to-blocks');
16
+ }
17
+ const blocks = markdownToBlocks(input.content);
18
+ return {
19
+ direction: input.direction,
20
+ block_count: blocks.length,
21
+ blocks
22
+ };
23
+ }
24
+ case 'blocks-to-markdown': {
25
+ let content = input.content;
26
+ // Parse JSON string if needed
27
+ if (typeof content === 'string') {
28
+ try {
29
+ content = JSON.parse(content);
30
+ }
31
+ catch (e) {
32
+ throw new Error('Content must be a valid JSON array or array object for blocks-to-markdown');
33
+ }
34
+ }
35
+ if (!Array.isArray(content)) {
36
+ throw new Error('Content must be an array for blocks-to-markdown');
37
+ }
38
+ const markdown = blocksToMarkdown(content);
39
+ return {
40
+ direction: input.direction,
41
+ char_count: markdown.length,
42
+ markdown
43
+ };
44
+ }
45
+ default:
46
+ throw new Error(`Unsupported direction: ${input.direction}`);
47
+ }
48
+ })();
49
+ }
50
+ //# sourceMappingURL=content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../src/tools/composite/content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAO3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAA0B;IAE1B,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAClC,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gBACpE,CAAC;gBACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC9C,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,MAAM,CAAC,MAAM;oBAC1B,MAAM;iBACP,CAAA;YACH,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;gBAC3B,8BAA8B;gBAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC/B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;oBAC9F,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gBACpE,CAAC;gBACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAc,CAAC,CAAA;gBACjD,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,QAAQ;iBACT,CAAA;YACH,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Databases Mega Tool - Updated for Notion API 2025-09-03
3
+ * Supports data_sources architecture
4
+ */
5
+ import { Client } from '@notionhq/client';
6
+ export interface DatabasesInput {
7
+ action: 'create' | 'get' | 'query' | 'create_page' | 'update_page' | 'delete_page' | 'create_data_source' | 'update_data_source' | 'update_database';
8
+ database_id?: string;
9
+ data_source_id?: string;
10
+ parent_id?: string;
11
+ title?: string;
12
+ description?: string;
13
+ properties?: Record<string, any>;
14
+ is_inline?: boolean;
15
+ icon?: string;
16
+ cover?: string;
17
+ filters?: any;
18
+ sorts?: any[];
19
+ limit?: number;
20
+ search?: string;
21
+ page_id?: string;
22
+ page_ids?: string[];
23
+ page_properties?: Record<string, any>;
24
+ pages?: Array<{
25
+ page_id?: string;
26
+ properties: Record<string, any>;
27
+ }>;
28
+ }
29
+ /**
30
+ * Unified databases tool - handles all database operations
31
+ */
32
+ export declare function databases(notion: Client, input: DatabasesInput): Promise<any>;
33
+ //# sourceMappingURL=databases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/databases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAClF,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,CAAA;IAG/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAGrC,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAChC,CAAC,CAAA;CACH;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,GAAG,CAAC,CAsCd"}