notion-mcp-server 1.0.1 → 2.4.2
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 +383 -192
- package/build/config/index.js +3 -1
- package/build/dispatch/concurrency.js +15 -0
- package/build/dispatch/idempotency.js +38 -0
- package/build/dispatch/index.js +175 -0
- package/build/dispatch/rate-limit.js +56 -0
- package/build/dispatch/retry.js +97 -0
- package/build/index.js +1 -1
- package/build/markdown/parse.js +265 -0
- package/build/operations/blocks.js +331 -0
- package/build/operations/comments.js +191 -0
- package/build/operations/data-sources.js +85 -0
- package/build/operations/databases.js +345 -0
- package/build/operations/files.js +239 -0
- package/build/operations/index.js +19 -0
- package/build/operations/pages.js +486 -0
- package/build/operations/registry.js +16 -0
- package/build/operations/users.js +101 -0
- package/build/prompts/index.js +105 -0
- package/build/schema/blocks.js +19 -138
- package/build/schema/database.js +27 -111
- package/build/schema/emit.js +68 -0
- package/build/schema/file.js +1 -1
- package/build/schema/filter-dsl.js +333 -0
- package/build/schema/icon.js +1 -1
- package/build/schema/page-properties.js +17 -3
- package/build/schema/page.js +12 -125
- package/build/schema/refs.js +16 -0
- package/build/schema/rich-text.js +1 -1
- package/build/server/index.js +16 -3
- package/build/services/auth.js +19 -0
- package/build/services/notion.js +14 -17
- package/build/tools/index.js +119 -21
- package/build/utils/error.js +125 -86
- package/build/utils/handler.js +11 -0
- package/build/utils/learning-error.js +40 -0
- package/build/utils/notion-types.js +16 -0
- package/build/utils/paginate.js +35 -0
- package/build/utils/schema-slice.js +156 -0
- package/build/utils/slim.js +269 -0
- package/package.json +13 -7
- package/build/resources/imageList.js +0 -62
- package/build/resources/index.js +0 -1
- package/build/resources/predictionList.js +0 -43
- package/build/resources/svgList.js +0 -69
- package/build/schema/comments.js +0 -60
- package/build/schema/notion.js +0 -57
- package/build/schema/richText.js +0 -757
- package/build/schema/tools.js +0 -17
- package/build/schema/users.js +0 -39
- package/build/services/loggs.js +0 -13
- package/build/services/replicate.js +0 -23
- package/build/tools/appendBlockChildren.js +0 -25
- package/build/tools/batchAppendBlockChildren.js +0 -33
- package/build/tools/batchDeleteBlocks.js +0 -32
- package/build/tools/batchMixedOperations.js +0 -58
- package/build/tools/batchUpdateBlocks.js +0 -33
- package/build/tools/blocks.js +0 -34
- package/build/tools/comments.js +0 -81
- package/build/tools/createDatabase.js +0 -18
- package/build/tools/createPage.js +0 -18
- package/build/tools/createPrediction.js +0 -28
- package/build/tools/database.js +0 -16
- package/build/tools/deleteBlock.js +0 -24
- package/build/tools/formatRichText.js +0 -83
- package/build/tools/generateImage.js +0 -48
- package/build/tools/generateImageVariants.js +0 -105
- package/build/tools/generateMultipleImages.js +0 -60
- package/build/tools/generateSVG.js +0 -43
- package/build/tools/getPrediction.js +0 -22
- package/build/tools/pages.js +0 -22
- package/build/tools/predictionList.js +0 -30
- package/build/tools/queryDatabase.js +0 -22
- package/build/tools/retrieveBlock.js +0 -24
- package/build/tools/retrieveBlockChildren.js +0 -32
- package/build/tools/searchPage.js +0 -24
- package/build/tools/updateBlock.js +0 -25
- package/build/tools/updateDatabase.js +0 -18
- package/build/tools/updatePage.js +0 -40
- package/build/tools/updatePageProperties.js +0 -21
- package/build/tools/users.js +0 -75
- package/build/types/blocks.js +0 -12
- package/build/types/comments.js +0 -7
- package/build/types/database.js +0 -6
- package/build/types/notion.js +0 -1
- package/build/types/page.js +0 -8
- package/build/types/richText.js +0 -1
- package/build/types/tools.js +0 -1
- package/build/types/users.js +0 -6
- package/build/utils/blob.js +0 -5
- package/build/utils/image.js +0 -34
- package/build/utils/index.js +0 -1
- package/build/utils/richText.js +0 -174
- package/build/validation/blocks.js +0 -568
- package/build/validation/notion.js +0 -51
- package/build/validation/page.js +0 -262
- package/build/validation/richText.js +0 -744
- package/build/validation/tools.js +0 -16
- /package/build/{types/index.js → operations/types.js} +0 -0
package/build/validation/page.js
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
import { richTextSchema } from "./richText.js";
|
|
3
|
-
// Define the parent schema based on Notion API parent object spec
|
|
4
|
-
export const parentSchema = z.discriminatedUnion("type", [
|
|
5
|
-
z.object({
|
|
6
|
-
type: z.literal("database_id"),
|
|
7
|
-
database_id: z.string(),
|
|
8
|
-
}),
|
|
9
|
-
z.object({
|
|
10
|
-
type: z.literal("page_id"),
|
|
11
|
-
page_id: z.string(),
|
|
12
|
-
}),
|
|
13
|
-
z.object({
|
|
14
|
-
type: z.literal("block_id"),
|
|
15
|
-
block_id: z.string(),
|
|
16
|
-
}),
|
|
17
|
-
z.object({
|
|
18
|
-
type: z.literal("workspace"),
|
|
19
|
-
workspace: z.boolean(),
|
|
20
|
-
}),
|
|
21
|
-
]);
|
|
22
|
-
// Define user reference schema
|
|
23
|
-
export const userSchema = z.object({
|
|
24
|
-
object: z.literal("user"),
|
|
25
|
-
id: z.string(),
|
|
26
|
-
name: z.string().optional(),
|
|
27
|
-
avatar_url: z.string().url().optional().nullable(),
|
|
28
|
-
email: z.string().email().optional(),
|
|
29
|
-
});
|
|
30
|
-
// Define file schema (for icons and covers)
|
|
31
|
-
export const fileSchema = z.object({
|
|
32
|
-
type: z.enum(["external", "file"]),
|
|
33
|
-
external: z
|
|
34
|
-
.object({
|
|
35
|
-
url: z.string().url(),
|
|
36
|
-
})
|
|
37
|
-
.optional(),
|
|
38
|
-
file: z
|
|
39
|
-
.object({
|
|
40
|
-
url: z.string().url(),
|
|
41
|
-
expiry_time: z.string().optional(),
|
|
42
|
-
})
|
|
43
|
-
.optional(),
|
|
44
|
-
});
|
|
45
|
-
// Define emoji schema for icons
|
|
46
|
-
export const emojiSchema = z.object({
|
|
47
|
-
type: z.literal("emoji"),
|
|
48
|
-
emoji: z.string(),
|
|
49
|
-
});
|
|
50
|
-
// Icon can be a file or an emoji
|
|
51
|
-
export const iconSchema = z.union([fileSchema, emojiSchema]);
|
|
52
|
-
// Cover is always a file
|
|
53
|
-
export const coverSchema = fileSchema;
|
|
54
|
-
// Properties schemas
|
|
55
|
-
export const pageParentPropertiesSchema = z.object({
|
|
56
|
-
title: z.object({
|
|
57
|
-
title: richTextSchema,
|
|
58
|
-
}),
|
|
59
|
-
});
|
|
60
|
-
// Define base schema for all property types
|
|
61
|
-
export const propertyItemSchema = z.object({
|
|
62
|
-
id: z.string(),
|
|
63
|
-
type: z.string(),
|
|
64
|
-
});
|
|
65
|
-
// Title property
|
|
66
|
-
export const titlePropertySchema = propertyItemSchema.extend({
|
|
67
|
-
type: z.literal("title"),
|
|
68
|
-
title: richTextSchema,
|
|
69
|
-
});
|
|
70
|
-
// Rich text property
|
|
71
|
-
export const richTextPropertySchema = propertyItemSchema.extend({
|
|
72
|
-
type: z.literal("rich_text"),
|
|
73
|
-
rich_text: richTextSchema,
|
|
74
|
-
});
|
|
75
|
-
// Number property
|
|
76
|
-
export const numberPropertySchema = propertyItemSchema.extend({
|
|
77
|
-
type: z.literal("number"),
|
|
78
|
-
number: z.number().nullable(),
|
|
79
|
-
});
|
|
80
|
-
// Select property
|
|
81
|
-
export const selectOptionSchema = z.object({
|
|
82
|
-
id: z.string(),
|
|
83
|
-
name: z.string(),
|
|
84
|
-
color: z.string(),
|
|
85
|
-
});
|
|
86
|
-
export const selectPropertySchema = propertyItemSchema.extend({
|
|
87
|
-
type: z.literal("select"),
|
|
88
|
-
select: selectOptionSchema.nullable(),
|
|
89
|
-
});
|
|
90
|
-
// Multi-select property
|
|
91
|
-
export const multiSelectPropertySchema = propertyItemSchema.extend({
|
|
92
|
-
type: z.literal("multi_select"),
|
|
93
|
-
multi_select: z.array(selectOptionSchema),
|
|
94
|
-
});
|
|
95
|
-
// Date property
|
|
96
|
-
export const datePropertySchema = propertyItemSchema.extend({
|
|
97
|
-
type: z.literal("date"),
|
|
98
|
-
date: z
|
|
99
|
-
.object({
|
|
100
|
-
start: z.string(),
|
|
101
|
-
end: z.string().optional().nullable(),
|
|
102
|
-
time_zone: z.string().optional().nullable(),
|
|
103
|
-
})
|
|
104
|
-
.nullable(),
|
|
105
|
-
});
|
|
106
|
-
// People property
|
|
107
|
-
export const peoplePropertySchema = propertyItemSchema.extend({
|
|
108
|
-
type: z.literal("people"),
|
|
109
|
-
people: z.array(userSchema),
|
|
110
|
-
});
|
|
111
|
-
// Files property
|
|
112
|
-
export const filesPropertySchema = propertyItemSchema.extend({
|
|
113
|
-
type: z.literal("files"),
|
|
114
|
-
files: z.array(fileSchema),
|
|
115
|
-
});
|
|
116
|
-
// Checkbox property
|
|
117
|
-
export const checkboxPropertySchema = propertyItemSchema.extend({
|
|
118
|
-
type: z.literal("checkbox"),
|
|
119
|
-
checkbox: z.boolean(),
|
|
120
|
-
});
|
|
121
|
-
// URL property
|
|
122
|
-
export const urlPropertySchema = propertyItemSchema.extend({
|
|
123
|
-
type: z.literal("url"),
|
|
124
|
-
url: z.string().url().nullable(),
|
|
125
|
-
});
|
|
126
|
-
// Email property
|
|
127
|
-
export const emailPropertySchema = propertyItemSchema.extend({
|
|
128
|
-
type: z.literal("email"),
|
|
129
|
-
email: z.string().email().nullable(),
|
|
130
|
-
});
|
|
131
|
-
// Phone number property
|
|
132
|
-
export const phoneNumberPropertySchema = propertyItemSchema.extend({
|
|
133
|
-
type: z.literal("phone_number"),
|
|
134
|
-
phone_number: z.string().nullable(),
|
|
135
|
-
});
|
|
136
|
-
// Formula property
|
|
137
|
-
export const formulaPropertySchema = propertyItemSchema.extend({
|
|
138
|
-
type: z.literal("formula"),
|
|
139
|
-
formula: z.union([
|
|
140
|
-
z.object({ type: z.literal("string"), string: z.string().nullable() }),
|
|
141
|
-
z.object({ type: z.literal("number"), number: z.number().nullable() }),
|
|
142
|
-
z.object({ type: z.literal("boolean"), boolean: z.boolean().nullable() }),
|
|
143
|
-
z.object({
|
|
144
|
-
type: z.literal("date"),
|
|
145
|
-
date: z
|
|
146
|
-
.object({
|
|
147
|
-
start: z.string(),
|
|
148
|
-
end: z.string().optional().nullable(),
|
|
149
|
-
})
|
|
150
|
-
.nullable(),
|
|
151
|
-
}),
|
|
152
|
-
]),
|
|
153
|
-
});
|
|
154
|
-
// Relation property
|
|
155
|
-
export const relationPropertySchema = propertyItemSchema.extend({
|
|
156
|
-
type: z.literal("relation"),
|
|
157
|
-
relation: z.array(z.object({ id: z.string() })),
|
|
158
|
-
});
|
|
159
|
-
// Rollup property
|
|
160
|
-
export const rollupPropertySchema = propertyItemSchema.extend({
|
|
161
|
-
type: z.literal("rollup"),
|
|
162
|
-
rollup: z.union([
|
|
163
|
-
z.object({ type: z.literal("number"), number: z.number().nullable() }),
|
|
164
|
-
z.object({
|
|
165
|
-
type: z.literal("date"),
|
|
166
|
-
date: z
|
|
167
|
-
.object({
|
|
168
|
-
start: z.string(),
|
|
169
|
-
end: z.string().optional().nullable(),
|
|
170
|
-
})
|
|
171
|
-
.nullable(),
|
|
172
|
-
}),
|
|
173
|
-
z.object({ type: z.literal("array"), array: z.array(z.any()) }),
|
|
174
|
-
]),
|
|
175
|
-
});
|
|
176
|
-
// Created time property
|
|
177
|
-
export const createdTimePropertySchema = propertyItemSchema.extend({
|
|
178
|
-
type: z.literal("created_time"),
|
|
179
|
-
created_time: z.string(),
|
|
180
|
-
});
|
|
181
|
-
// Created by property
|
|
182
|
-
export const createdByPropertySchema = propertyItemSchema.extend({
|
|
183
|
-
type: z.literal("created_by"),
|
|
184
|
-
created_by: userSchema,
|
|
185
|
-
});
|
|
186
|
-
// Last edited time property
|
|
187
|
-
export const lastEditedTimePropertySchema = propertyItemSchema.extend({
|
|
188
|
-
type: z.literal("last_edited_time"),
|
|
189
|
-
last_edited_time: z.string(),
|
|
190
|
-
});
|
|
191
|
-
// Last edited by property
|
|
192
|
-
export const lastEditedByPropertySchema = propertyItemSchema.extend({
|
|
193
|
-
type: z.literal("last_edited_by"),
|
|
194
|
-
last_edited_by: userSchema,
|
|
195
|
-
});
|
|
196
|
-
// Status property
|
|
197
|
-
export const statusPropertySchema = propertyItemSchema.extend({
|
|
198
|
-
type: z.literal("status"),
|
|
199
|
-
status: z
|
|
200
|
-
.object({
|
|
201
|
-
id: z.string(),
|
|
202
|
-
name: z.string(),
|
|
203
|
-
color: z.string(),
|
|
204
|
-
})
|
|
205
|
-
.nullable(),
|
|
206
|
-
});
|
|
207
|
-
// Define the comprehensive property schema that combines all property types
|
|
208
|
-
export const propertySchema = z.union([
|
|
209
|
-
titlePropertySchema,
|
|
210
|
-
richTextPropertySchema,
|
|
211
|
-
numberPropertySchema,
|
|
212
|
-
selectPropertySchema,
|
|
213
|
-
multiSelectPropertySchema,
|
|
214
|
-
datePropertySchema,
|
|
215
|
-
peoplePropertySchema,
|
|
216
|
-
filesPropertySchema,
|
|
217
|
-
checkboxPropertySchema,
|
|
218
|
-
urlPropertySchema,
|
|
219
|
-
emailPropertySchema,
|
|
220
|
-
phoneNumberPropertySchema,
|
|
221
|
-
formulaPropertySchema,
|
|
222
|
-
relationPropertySchema,
|
|
223
|
-
rollupPropertySchema,
|
|
224
|
-
createdTimePropertySchema,
|
|
225
|
-
createdByPropertySchema,
|
|
226
|
-
lastEditedTimePropertySchema,
|
|
227
|
-
lastEditedByPropertySchema,
|
|
228
|
-
statusPropertySchema,
|
|
229
|
-
]);
|
|
230
|
-
// Database parent properties can be any of the property types
|
|
231
|
-
export const databaseParentPropertiesSchema = z.record(z.string(), z.any() // Using z.any() here because we'd need to define each property value shape
|
|
232
|
-
);
|
|
233
|
-
// Comprehensive page object schema
|
|
234
|
-
export const pageObjectSchema = z.object({
|
|
235
|
-
object: z.literal("page"),
|
|
236
|
-
id: z.string(),
|
|
237
|
-
created_time: z.string(),
|
|
238
|
-
created_by: userSchema,
|
|
239
|
-
last_edited_time: z.string(),
|
|
240
|
-
last_edited_by: userSchema,
|
|
241
|
-
archived: z.boolean(),
|
|
242
|
-
icon: iconSchema.optional().nullable(),
|
|
243
|
-
cover: coverSchema.optional().nullable(),
|
|
244
|
-
properties: z.record(z.string(), z.any()),
|
|
245
|
-
parent: parentSchema,
|
|
246
|
-
url: z.string().url(),
|
|
247
|
-
public_url: z.string().url().optional().nullable(),
|
|
248
|
-
});
|
|
249
|
-
// Schema for creating a new page
|
|
250
|
-
// Schema for updating a page
|
|
251
|
-
export const updatePageSchema = z.object({
|
|
252
|
-
page_id: z.string(),
|
|
253
|
-
properties: z.record(z.string(), z.any()).optional(),
|
|
254
|
-
icon: z.union([fileSchema, emojiSchema, z.null()]).optional(),
|
|
255
|
-
cover: z.union([fileSchema, z.null()]).optional(),
|
|
256
|
-
archived: z.boolean().optional(),
|
|
257
|
-
});
|
|
258
|
-
// Schema for retrieving a page
|
|
259
|
-
export const retrievePageSchema = z.object({
|
|
260
|
-
page_id: z.string(),
|
|
261
|
-
filter_properties: z.array(z.string()).optional(),
|
|
262
|
-
});
|